diff options
| author | Owen Anderson <resistor@mac.com> | 2007-10-25 02:36:18 +0000 |
|---|---|---|
| committer | Owen Anderson <resistor@mac.com> | 2007-10-25 02:36:18 +0000 |
| commit | 7827a3f366222ae2e411c80c583be1c3ab51f8e4 (patch) | |
| tree | 3a6c1b4b31651eacb17e96bb33a88f43bac16e06 | |
| parent | ea839ef1f0e02c9071244037ba2a5fb0dc736f30 (diff) | |
| download | bcm5719-llvm-7827a3f366222ae2e411c80c583be1c3ab51f8e4.tar.gz bcm5719-llvm-7827a3f366222ae2e411c80c583be1c3ab51f8e4.zip | |
Fix for PR1741.
llvm-svn: 43326
| -rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 5 | ||||
| -rw-r--r-- | llvm/test/Analysis/BasicAA/2007-10-24-ArgumentsGlobals.ll | 14 |
2 files changed, 17 insertions, 2 deletions
diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 018102112c1..d986adec01f 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -339,8 +339,9 @@ BasicAliasAnalysis::alias(const Value *V1, unsigned V1Size, // Otherwise, nothing is known... } else if (O1 != O2) { - // If they are two different objects, we know that we have no alias... - return NoAlias; + if (!isa<Argument>(O1)) + // If they are two different objects, we know that we have no alias... + return NoAlias; } // If they are the same object, they we can look at the indexes. If they diff --git a/llvm/test/Analysis/BasicAA/2007-10-24-ArgumentsGlobals.ll b/llvm/test/Analysis/BasicAA/2007-10-24-ArgumentsGlobals.ll new file mode 100644 index 00000000000..61ab80d5475 --- /dev/null +++ b/llvm/test/Analysis/BasicAA/2007-10-24-ArgumentsGlobals.ll @@ -0,0 +1,14 @@ +; RUN: llvm-as < %s | opt -basicaa -gvn -dce | llvm-dis | grep tmp7 + + %struct.A = type { i32 } + %struct.B = type { %struct.A } +@a = global %struct.B zeroinitializer ; <%struct.B*> [#uses=2] + +define i32 @_Z3fooP1A(%struct.A* %b) { +entry: + store i32 1, i32* getelementptr (%struct.B* @a, i32 0, i32 0, i32 0), align 8 + %tmp4 = getelementptr %struct.A* %b, i32 0, i32 0 ;<i32*> [#uses=1] + store i32 0, i32* %tmp4, align 4 + %tmp7 = load i32* getelementptr (%struct.B* @a, i32 0, i32 0, i32 0), align 8 ; <i32> [#uses=1] + ret i32 %tmp7 +} |

