aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/Transforms/ArgumentPromotion/aggregate-promote.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/Transforms/ArgumentPromotion/aggregate-promote.ll b/test/Transforms/ArgumentPromotion/aggregate-promote.ll
new file mode 100644
index 0000000000..d6041f644f
--- /dev/null
+++ b/test/Transforms/ArgumentPromotion/aggregate-promote.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-as < %s | opt -argpromotion -instcombine | not grep load
+
+%QuadTy = type {int, int, int, int}
+
+%G = constant %QuadTy {int 0, int 0, int 17, int 25 }
+
+implementation
+
+internal int %test(%QuadTy* %P) {
+ %A = getelementptr %QuadTy* %P, long 0, ubyte 3
+ %B = getelementptr %QuadTy* %P, long 0, ubyte 2
+ %a = load int* %A
+ %b = load int* %B
+ %V = add int %a, %b
+ ret int %V
+}
+
+int %caller() {
+ %V = call int %test(%QuadTy* %G)
+ ret int %V
+}