# Re: alias analysis

## journeyman@compilerguru.com (journeyman)6 Apr 2002 23:46:06 -0500

From comp.compilers

Related articles
alias analysis vbrahmaiah@yahoo.com (brahmaiah vallabhaneni) (2002-03-31)
Re: alias analysis sabre@nondot.org (Chris Lattner) (2002-04-06)
Re: alias analysis journeyman@compilerguru.com (2002-04-06)
Alias analysis shreyas76@gmail.com (shrey) (2005-11-21)
Re: Alias Analysis ghiya@acaps.CS.McGill.CA (1995-11-30)
| List of all articles for this month |

 From: journeyman@compilerguru.com (journeyman) Newsgroups: comp.compilers Date: 6 Apr 2002 23:46:06 -0500 Organization: Giganews.Com - Premium News Outsourcing References: 02-03-182 Keywords: optimize, analysis Posted-Date: 06 Apr 2002 23:46:06 EST

On 31 Mar 2002 23:26:10 -0500, brahmaiah vallabhaneni
<vbrahmaiah@yahoo.com> wrote:
>Hi All,
>
>Can somebody tell me the significance of alias anlysis optimization in
>compilers. I observed that you will get different results when this
>optimization is on... Currently don't have the piece of code....
>
> How is it justified ?

Alias analysis is not an optimization per se. It's a way of getting
more precise information about what is affected by a memory access.
For example, when you have a pointer:
int n;
int *p = &n; // p points to n, *p and n are two names for the same thing
n = 42;
*p = 17;
printf( "%d" n); // prints 17

Consider the following
p = &n; // p points to n;
*p = 1;
if (n) { // n == 1
do_something();
} else {
do_other();
}

If you (the compiler) know *p is an alias for n, you can use constant
propagation to determine that the if statement always evaluates true
and not generate the code for the else statement. Without alias
analysis, you have to make more conservative assumptions. The
optimization (constant propagation) is done either way, but you get
better results when you know what points where.

Aliasing doesn't just happen in languages with explicit pointers like
C and C++. For example, suppose you pass a global variable to a
function using call-by-reference semantics. The formal parameter and
the global are aliased.

>almost certainly got bugs, wild pointers or the like. -John]

Either the program is buggy, the compiler is buggy, or the language
spec is buggy. I know which way the smart money would bet. ;-)

Morris

Post a followup to this message