diff options
-rw-r--r-- | test/Transforms/DSAnalysis/fieldmerge.ll | 18 | ||||
-rw-r--r-- | test/Transforms/DSAnalysis/structpadding.ll | 18 |
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 +} |