aboutsummaryrefslogtreecommitdiffstats
path: root/test/Transforms/ConstantMerge
diff options
context:
space:
mode:
Diffstat (limited to 'test/Transforms/ConstantMerge')
-rw-r--r--test/Transforms/ConstantMerge/2002-09-23-CPR-Update.ll13
-rw-r--r--test/Transforms/ConstantMerge/2003-10-28-MergeExternalConstants.ll7
-rw-r--r--test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll16
-rw-r--r--test/Transforms/ConstantMerge/dg.exp3
4 files changed, 39 insertions, 0 deletions
diff --git a/test/Transforms/ConstantMerge/2002-09-23-CPR-Update.ll b/test/Transforms/ConstantMerge/2002-09-23-CPR-Update.ll
new file mode 100644
index 0000000..b7b05cf
--- /dev/null
+++ b/test/Transforms/ConstantMerge/2002-09-23-CPR-Update.ll
@@ -0,0 +1,13 @@
+; RUN: opt < %s -constmerge > /dev/null
+
+@foo.upgrd.1 = internal constant { i32 } { i32 7 } ; <{ i32 }*> [#uses=1]
+@bar = internal constant { i32 } { i32 7 } ; <{ i32 }*> [#uses=1]
+
+declare i32 @test(i32*)
+
+define void @foo() {
+ call i32 @test( i32* getelementptr ({ i32 }* @foo.upgrd.1, i64 0, i32 0) ) ; <i32>:1 [#uses=0]
+ call i32 @test( i32* getelementptr ({ i32 }* @bar, i64 0, i32 0) ) ; <i32>:2 [#uses=0]
+ ret void
+}
+
diff --git a/test/Transforms/ConstantMerge/2003-10-28-MergeExternalConstants.ll b/test/Transforms/ConstantMerge/2003-10-28-MergeExternalConstants.ll
new file mode 100644
index 0000000..ce79e3b
--- /dev/null
+++ b/test/Transforms/ConstantMerge/2003-10-28-MergeExternalConstants.ll
@@ -0,0 +1,7 @@
+; RUN: opt -S -constmerge %s | FileCheck %s
+
+; CHECK: @foo = constant i32 6
+; CHECK: @bar = constant i32 6
+@foo = constant i32 6 ; <i32*> [#uses=0]
+@bar = constant i32 6 ; <i32*> [#uses=0]
+
diff --git a/test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll b/test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll
new file mode 100644
index 0000000..cea18a0
--- /dev/null
+++ b/test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll
@@ -0,0 +1,16 @@
+; RUN: opt < %s -constmerge -S | grep foo
+; RUN: opt < %s -constmerge -S | grep bar
+
+; Don't merge constants in different sections.
+
+@G1 = internal constant i32 1, section "foo" ; <i32*> [#uses=1]
+@G2 = internal constant i32 1, section "bar" ; <i32*> [#uses=1]
+@G3 = internal constant i32 1, section "bar" ; <i32*> [#uses=1]
+
+define void @test(i32** %P1, i32** %P2, i32** %P3) {
+ store i32* @G1, i32** %P1
+ store i32* @G2, i32** %P2
+ store i32* @G3, i32** %P3
+ ret void
+}
+
diff --git a/test/Transforms/ConstantMerge/dg.exp b/test/Transforms/ConstantMerge/dg.exp
new file mode 100644
index 0000000..f200589
--- /dev/null
+++ b/test/Transforms/ConstantMerge/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]