[llvm-commits] [llvm] r40711 - in /llvm/trunk: lib/Analysis/BasicAliasAnalysis.cpp test/Analysis/BasicAA/2007-08-01-NoAliasAndCalls.ll test/Analysis/BasicAA/2007-08-01-NoAliasAndGEP.ll

Chris Lattner clattner at apple.com
Thu Aug 2 09:00:16 PDT 2007


On Aug 1, 2007, at 6:18 PM, Christopher Lamb wrote:
> Author: clamb
> Teach BasicAA about noalias parameter attributes, but do it  
> correctly this time.

Nice!  One minor style nit-pick:

>        if (isa<Argument>(O1)) {
>          // Incoming argument cannot alias locally allocated object!
>          if (isa<AllocationInst>(O2)) return NoAlias;
> +
> +        // If they are two different objects, and one is a noalias  
> argument
> +        // then they do not alias.
> +        if (O1 != O2 && isNoAliasArgument(cast<Argument>(O1)))
> +          return NoAlias;

Instead of using isa + cast, please use dyncast:

        if (const Argument *O1Arg = dyn_cast<Argument>(O1)) {
          // Incoming argument cannot alias locally allocated object!
          if (isa<AllocationInst>(O2)) return NoAlias;
+
+        // If they are two different objects, and one is a noalias  
argument
+        // then they do not alias.
+        if (O1 != O2 && isNoAliasArgument(O1Arg))
+          return NoAlias;

Thanks Christopher,

-Chris



More information about the llvm-commits mailing list