summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools/llvm-split/scc-constants.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/tools/llvm-split/scc-constants.ll')
-rw-r--r--llvm/test/tools/llvm-split/scc-constants.ll48
1 files changed, 48 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-split/scc-constants.ll b/llvm/test/tools/llvm-split/scc-constants.ll
new file mode 100644
index 00000000000..066a8dac6da
--- /dev/null
+++ b/llvm/test/tools/llvm-split/scc-constants.ll
@@ -0,0 +1,48 @@
+; All of the functions in this module must end up
+; in the same partition.
+
+; RUN: llvm-split -j=2 -preserve-locals -o %t %s
+; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK1 %s
+; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK0 %s
+
+; CHECK0: declare i32 @foo
+; CHECK0: declare i32 @baz
+; CHECK0: declare i32 @bar
+; CHECK0: declare i32 @bar2
+
+; CHECK1: @bla
+; CHECK1: @bla2
+; CHECK1: define internal i32 @foo
+; CHECK1: define internal i32 @baz
+; CHECK1: define i32 @bar
+; CHECK1: define i32 @bar2
+
+%struct.anon = type { i64, i64 }
+
+@bla = internal global %struct.anon { i64 1, i64 2 }, align 8
+@bla2 = internal global %struct.anon { i64 1, i64 2 }, align 8
+
+define internal i32 @foo() {
+entry:
+ store i64 5, i64* getelementptr inbounds (%struct.anon, %struct.anon* @bla, i32 0, i32 0), align 8
+ store i32 -1, i32* bitcast (i64* getelementptr inbounds (%struct.anon, %struct.anon* @bla2, i32 0, i32 1) to i32*), align 8
+ ret i32 0
+}
+
+define internal i32 @baz() {
+entry:
+ store i64 5, i64* getelementptr inbounds (%struct.anon, %struct.anon* @bla, i32 0, i32 0), align 8
+ store i32 -1, i32* bitcast (i64* getelementptr inbounds (%struct.anon, %struct.anon* @bla2, i32 0, i32 1) to i32*), align 8
+ ret i32 0
+}
+
+define i32 @bar() {
+ %call = call i32 @foo()
+ ret i32 0
+}
+
+define i32 @bar2() {
+ %call = call i32 @baz()
+ ret i32 0
+}
+
OpenPOWER on IntegriCloud