diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-08-26 21:42:49 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-08-26 21:42:49 -0700 |
commit | 71ce3922336051978d9fc1aa3be642b68e522d1c (patch) | |
tree | 94ba1a4383704137f1212b64170c65d13a0cacd5 /tests/cases | |
parent | 0269efbd05ddad154e55a8802172eb9ddd701b3e (diff) |
handle structural constants in calls
Diffstat (limited to 'tests/cases')
-rw-r--r-- | tests/cases/callwithstructural.ll | 29 | ||||
-rw-r--r-- | tests/cases/callwithstructural.txt | 1 |
2 files changed, 30 insertions, 0 deletions
diff --git a/tests/cases/callwithstructural.ll b/tests/cases/callwithstructural.ll new file mode 100644 index 00000000..bc6f852a --- /dev/null +++ b/tests/cases/callwithstructural.ll @@ -0,0 +1,29 @@ +; ModuleID = 'foo.bc' +target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32" +target triple = "le32-unknown-nacl" + +%ac = type { i8*, i32 } + +@0 = constant [9 x i8] c"func %s\0A\00" +@1 = constant [4 x i8] c"foo\00" + +declare void @llvm.trap() noreturn nounwind + +define void @direct(%ac) { +entry: + %str = alloca %ac + store %ac %0, %ac* %str + %1 = getelementptr inbounds %ac* %str, i32 0, i32 0 + %2 = load i8** %1 + call void (i8*, ...)* @printf(i8* getelementptr inbounds ([9 x i8]* @0, i32 0, i32 0), i8* %2) + ret void +} + +declare void @printf(i8*, ...) + +define i32 @main() { +entry: + call void @direct(%ac { i8* getelementptr inbounds ([4 x i8]* @1, i32 0, i32 0), i32 3 }) + ret i32 0 +} + diff --git a/tests/cases/callwithstructural.txt b/tests/cases/callwithstructural.txt new file mode 100644 index 00000000..51a6ac7c --- /dev/null +++ b/tests/cases/callwithstructural.txt @@ -0,0 +1 @@ +func foo |