OLD | NEW |
1 ; Tests the integrated assembler for instructions with multiple | 1 ; Tests the integrated assembler for instructions with multiple |
2 ; relocations. | 2 ; relocations. |
3 | 3 |
4 ; RUN: %if --need=allow_dump --command %p2i -i %s --args -O2 \ | 4 ; RUN: %if --need=allow_dump --command %p2i -i %s --args -O2 \ |
5 ; RUN: | %if --need=allow_dump --command FileCheck %s | 5 ; RUN: | %if --need=allow_dump --command FileCheck %s |
6 | 6 |
7 ; char global_char; | 7 ; char global_char; |
8 ; char *p_global_char; | 8 ; char *p_global_char; |
9 ; void dummy(); | 9 ; void dummy(); |
10 ; void store_immediate_to_global() { p_global_char = &global_char; } | 10 ; void store_immediate_to_global() { p_global_char = &global_char; } |
(...skipping 11 matching lines...) Expand all Loading... |
22 store i32 %expanded1, i32* %p_global_char.bc, align 1 | 22 store i32 %expanded1, i32* %p_global_char.bc, align 1 |
23 ret void | 23 ret void |
24 } | 24 } |
25 ; CHECK-LABEL: store_immediate_to_global | 25 ; CHECK-LABEL: store_immediate_to_global |
26 ; CHECK: .long p_global_char | 26 ; CHECK: .long p_global_char |
27 ; CHECK: .long global_char | 27 ; CHECK: .long global_char |
28 | 28 |
29 define internal void @add_in_place() { | 29 define internal void @add_in_place() { |
30 entry: | 30 entry: |
31 %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32* | 31 %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32* |
32 %0 = load i32* %p_global_char.bc, align 1 | 32 %0 = load i32, i32* %p_global_char.bc, align 1 |
33 %expanded1 = ptrtoint [1 x i8]* @global_char to i32 | 33 %expanded1 = ptrtoint [1 x i8]* @global_char to i32 |
34 %gep = add i32 %0, %expanded1 | 34 %gep = add i32 %0, %expanded1 |
35 %p_global_char.bc3 = bitcast [4 x i8]* @p_global_char to i32* | 35 %p_global_char.bc3 = bitcast [4 x i8]* @p_global_char to i32* |
36 store i32 %gep, i32* %p_global_char.bc3, align 1 | 36 store i32 %gep, i32* %p_global_char.bc3, align 1 |
37 ret void | 37 ret void |
38 } | 38 } |
39 ; CHECK-LABEL: add_in_place | 39 ; CHECK-LABEL: add_in_place |
40 ; CHECK: .long global_char | 40 ; CHECK: .long global_char |
41 ; CHECK: .long p_global_char | 41 ; CHECK: .long p_global_char |
42 | 42 |
43 define internal void @cmp_global_immediate() { | 43 define internal void @cmp_global_immediate() { |
44 entry: | 44 entry: |
45 %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32* | 45 %p_global_char.bc = bitcast [4 x i8]* @p_global_char to i32* |
46 %0 = load i32* %p_global_char.bc, align 1 | 46 %0 = load i32, i32* %p_global_char.bc, align 1 |
47 %expanded1 = ptrtoint [1 x i8]* @global_char to i32 | 47 %expanded1 = ptrtoint [1 x i8]* @global_char to i32 |
48 %cmp = icmp eq i32 %0, %expanded1 | 48 %cmp = icmp eq i32 %0, %expanded1 |
49 br i1 %cmp, label %if.then, label %if.end | 49 br i1 %cmp, label %if.then, label %if.end |
50 | 50 |
51 if.then: ; preds = %entry | 51 if.then: ; preds = %entry |
52 tail call void @dummy() | 52 tail call void @dummy() |
53 br label %if.end | 53 br label %if.end |
54 | 54 |
55 if.end: ; preds = %if.then, %entry | 55 if.end: ; preds = %if.then, %entry |
56 ret void | 56 ret void |
57 } | 57 } |
58 ; CHECK-LABEL: cmp_global_immediate | 58 ; CHECK-LABEL: cmp_global_immediate |
59 ; CHECK: .long p_global_char | 59 ; CHECK: .long p_global_char |
60 ; CHECK: .long global_char | 60 ; CHECK: .long global_char |
61 ; CHECK: .long dummy | 61 ; CHECK: .long dummy |
OLD | NEW |