OLD | NEW |
| (Empty) |
1 ; RUN: llc < %s | FileCheck %s | |
2 | |
3 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:128-n32-S128" | |
4 target triple = "asmjs-unknown-emscripten" | |
5 | |
6 @.str = private unnamed_addr constant [18 x i8] c"hello, world! %d\0A\00", align
1 ; [#uses=1 type=[18 x i8]*] | |
7 | |
8 @othername = internal alias void (i32)* @doit | |
9 @othername2 = internal alias void (i32)* @othername | |
10 @othername3 = internal alias void (i32)* @othername2 | |
11 @othername4 = internal alias bitcast (void (i32)* @othername2 to void ()*) | |
12 | |
13 @list = global i32 ptrtoint (void ()* @othername4 to i32) | |
14 @list2 = global <{ i32, i32, i32, i32, i32 }> <{ i32 ptrtoint (void (i32)* @doit
to i32), i32 ptrtoint (void (i32)* @othername to i32), i32 ptrtoint (void (i32)
* @othername2 to i32), i32 ptrtoint (void (i32)* @othername3 to i32), i32 ptrtoi
nt (void ()* @othername4 to i32) }> | |
15 | |
16 | |
17 @value = global i32 17 | |
18 @value2 = alias i32* @value | |
19 @value3 = alias i32* @value | |
20 | |
21 define internal void @doit(i32 %x) { | |
22 %call = call i32 (i8*, ...) @printf(i8* getelementptr inbounds ([18 x i8], [18
x i8]* @.str, i32 0, i32 0), i32 %x) ; [#uses=0 type=i32] | |
23 ret void | |
24 } | |
25 | |
26 ;;; we just check for compilation to succeed here, specifically of @list and @li
st2 | |
27 ; CHECK: function _main() { | |
28 ; CHECK: } | |
29 | |
30 define i32 @main() { | |
31 entry: | |
32 call void () @othername4() | |
33 %fp = ptrtoint void ()* @othername4 to i32 | |
34 %fp1 = add i32 %fp, 0 | |
35 %pf = inttoptr i32 %fp1 to void (i32)* | |
36 %x = load i32, i32* @value3 | |
37 call void (i32) %pf(i32 %x) | |
38 %x1 = load i32, i32* @value2 | |
39 call void (i32) @othername3(i32 %x1) | |
40 %x2 = load i32, i32* @value | |
41 call void (i32) @othername2(i32 %x2) | |
42 store i32 18, i32* @value | |
43 %x3 = load i32, i32* @value | |
44 call void (i32) @othername(i32 %x3) | |
45 store i32 19, i32* @value3 | |
46 %x4 = load i32, i32* @value3 | |
47 call void (i32) @doit(i32 %x4) | |
48 ret i32 1 | |
49 } | |
50 | |
51 declare i32 @printf(i8*, ...) | |
52 | |
OLD | NEW |