summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/Transforms/DSAnalysis/fieldmerge.ll18
-rw-r--r--test/Transforms/DSAnalysis/structpadding.ll18
2 files changed, 36 insertions, 0 deletions
diff --git a/test/Transforms/DSAnalysis/fieldmerge.ll b/test/Transforms/DSAnalysis/fieldmerge.ll
new file mode 100644
index 0000000000..59c1ea5f07
--- /dev/null
+++ b/test/Transforms/DSAnalysis/fieldmerge.ll
@@ -0,0 +1,18 @@
+
+%str = type { int*, int* }
+
+implementation
+
+void %bar(%str* %S, bool %C) {
+ br bool %C, label %T, label %F
+T:
+ %A = getelementptr %str* %S, long 0, ubyte 0
+ br label %Out
+F:
+ %B = getelementptr %str* %S, long 0, ubyte 1
+ br label %Out
+Out:
+ %P = phi int** [%A, %T], [%B, %F]
+ store int* null, int** %P
+ ret void
+}
diff --git a/test/Transforms/DSAnalysis/structpadding.ll b/test/Transforms/DSAnalysis/structpadding.ll
new file mode 100644
index 0000000000..52a124a054
--- /dev/null
+++ b/test/Transforms/DSAnalysis/structpadding.ll
@@ -0,0 +1,18 @@
+
+%str = type { int, int* }
+
+implementation
+
+void %bar(%str* %S, %str* %T) {
+ %A1 = getelementptr %str* %S, long 0, ubyte 0
+ %B1 = getelementptr %str* %S, long 0, ubyte 1
+ %A2 = getelementptr %str* %S, long 0, ubyte 0
+ %B2 = getelementptr %str* %S, long 0, ubyte 1
+ %a1 = cast int* %A1 to long*
+ %a2 = cast int* %A2 to long*
+ %V = load long* %a1
+ ;store long %V, long* %a2
+ %V2 = load int** %B1
+ store int* %V2, int** %B2
+ ret void
+}