[llvm-commits] [llvm] r54760 - in /llvm/trunk: lib/Transforms/Scalar/SCCP.cpp test/Transforms/SCCP/empty-struct.ll
Dan Gohman
gohman at apple.com
Wed Aug 13 14:22:49 PDT 2008
Author: djg
Date: Wed Aug 13 16:22:48 2008
New Revision: 54760
URL: http://llvm.org/viewvc/llvm-project?rev=54760&view=rev
Log:
Fix SCCP's handling of struct value loads and stores. SCCP doesn't
track individual leaf values in such cases, so it needs to treat
struct values as normal values in this case.
Added:
llvm/trunk/test/Transforms/SCCP/empty-struct.ll
Modified:
llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/SCCP.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SCCP.cpp?rev=54760&r1=54759&r2=54760&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/SCCP.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/SCCP.cpp Wed Aug 13 16:22:48 2008
@@ -1583,7 +1583,6 @@
for (BasicBlock::iterator BI = BB->begin(), E = BB->end(); BI != E; ) {
Instruction *Inst = BI++;
if (Inst->getType() == Type::VoidTy ||
- isa<StructType>(Inst->getType()) ||
isa<TerminatorInst>(Inst))
continue;
@@ -1760,7 +1759,6 @@
for (BasicBlock::iterator BI = BB->begin(), E = BB->end(); BI != E; ) {
Instruction *Inst = BI++;
if (Inst->getType() == Type::VoidTy ||
- isa<StructType>(Inst->getType()) ||
isa<TerminatorInst>(Inst))
continue;
Added: llvm/trunk/test/Transforms/SCCP/empty-struct.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/SCCP/empty-struct.ll?rev=54760&view=auto
==============================================================================
--- llvm/trunk/test/Transforms/SCCP/empty-struct.ll (added)
+++ llvm/trunk/test/Transforms/SCCP/empty-struct.ll Wed Aug 13 16:22:48 2008
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s > %t.bc
+; RUN: llvm-ld %t.bc -o %t.sh
+; PR2612
+
+ at current_foo = internal global { } zeroinitializer
+
+define i32 @main(...) {
+entry:
+ %retval = alloca i32 ; <i32*> [#uses=2]
+ store i32 0, i32* %retval
+ %local_foo = alloca { } ; <{ }*> [#uses=1]
+ load { }* @current_foo ; <{ }>:0 [#uses=1]
+ store { } %0, { }* %local_foo
+ br label %return
+
+return: ; preds = %entry
+ load i32* %retval ; <i32>:1 [#uses=1]
+ ret i32 %1
+}
+
More information about the llvm-commits
mailing list