OLD | NEW |
(Empty) | |
| 1 ; Tests if we handle global variables with relocation initializers. |
| 2 |
| 3 ; Test that we handle it in the ICE converter. |
| 4 ; RUN: %lc2i -i %s --insts | FileCheck %s |
| 5 |
| 6 ; Test that we handle it using Subzero's bitcode reader. |
| 7 ; RUN: %p2i -i %s --insts | FileCheck %s |
| 8 |
| 9 @bytes = internal global [7 x i8] c"abcdefg" |
| 10 ; CHECK: @bytes = internal global [7 x i8] c"abcdefg" |
| 11 |
| 12 @const_bytes = internal constant [7 x i8] c"abcdefg" |
| 13 ; CHECK-NEXT: @const_bytes = internal constant [7 x i8] c"abcdefg" |
| 14 |
| 15 @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32) |
| 16 ; CHECK-NEXT: @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32) |
| 17 |
| 18 @const_ptr_to_ptr = internal constant i32 ptrtoint (i32* @ptr to i32) |
| 19 ; CHECK-NEXT: @const_ptr_to_ptr = internal constant i32 ptrtoint (i32* @ptr to i
32) |
| 20 |
| 21 @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32) |
| 22 ; CHECK-NEXT: @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32
) |
| 23 |
| 24 @const_ptr_to_func = internal constant i32 ptrtoint (void ()* @func to i32) |
| 25 ; CHECK-NEXT: @const_ptr_to_func = internal constant i32 ptrtoint (void ()* @fun
c to i32) |
| 26 |
| 27 @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint
(void ()* @func to i32) }> |
| 28 ; CHECK-NEXT: @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo"
, i32 ptrtoint (void ()* @func to i32) }> |
| 29 |
| 30 @const_compound = internal constant <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32
ptrtoint (void ()* @func to i32) }> |
| 31 |
| 32 ; CHECK-NEXT: @const_compound = internal constant <{ [3 x i8], i32 }> <{ [3 x i8
] c"foo", i32 ptrtoint (void ()* @func to i32) }> |
| 33 |
| 34 @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32) |
| 35 ; CHECK-NEXT: @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes to i32) |
| 36 |
| 37 @const_ptr = internal constant i32 ptrtoint ([7 x i8]* @bytes to i32) |
| 38 ; CHECK-NEXT: @const_ptr = internal constant i32 ptrtoint ([7 x i8]* @bytes to i
32) |
| 39 |
| 40 @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1) |
| 41 ; CHECK-NEXT: @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to
i32), i32 1) |
| 42 |
| 43 @const_addend_ptr = internal constant i32 add (i32 ptrtoint (i32* @ptr to i32),
i32 1) |
| 44 ; CHECK-NEXT: @const_addend_ptr = internal constant i32 add (i32 ptrtoint (i32*
@ptr to i32), i32 1) |
| 45 |
| 46 @addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32
-1) |
| 47 ; CHECK-NEXT: @addend_negative = internal global i32 add (i32 ptrtoint (i32* @pt
r to i32), i32 -1) |
| 48 |
| 49 @const_addend_negative = internal constant i32 add (i32 ptrtoint (i32* @ptr to i
32), i32 -1) |
| 50 ; CHECK-NEXT: @const_addend_negative = internal constant i32 add (i32 ptrtoint (
i32* @ptr to i32), i32 -1) |
| 51 |
| 52 @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32)
, i32 1) |
| 53 ; CHECK-NEXT: @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]*
@bytes to i32), i32 1) |
| 54 |
| 55 @const_addend_array1 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes
to i32), i32 1) |
| 56 ; CHECK-NEXT: @const_addend_array1 = internal constant i32 add (i32 ptrtoint ([7
x i8]* @bytes to i32), i32 1) |
| 57 |
| 58 @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32)
, i32 7) |
| 59 ; CHECK-NEXT: @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]*
@bytes to i32), i32 7) |
| 60 |
| 61 @const_addend_array2 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes
to i32), i32 7) |
| 62 ; CHECK-NEXT: @const_addend_array2 = internal constant i32 add (i32 ptrtoint ([7
x i8]* @bytes to i32), i32 7) |
| 63 |
| 64 @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes to i32)
, i32 9) |
| 65 ; CHECK-NEXT: @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]*
@bytes to i32), i32 9) |
| 66 |
| 67 @const_addend_array3 = internal constant i32 add (i32 ptrtoint ([7 x i8]* @bytes
to i32), i32 9) |
| 68 ; CHECK-NEXT: @const_addend_array3 = internal constant i32 add (i32 ptrtoint ([7
x i8]* @bytes to i32), i32 9) |
| 69 |
| 70 @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @c
ompound to i32), i32 1) |
| 71 ; CHECK-NEXT: @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i
8], i32 }>* @compound to i32), i32 1) |
| 72 |
| 73 @const_addend_struct1 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i3
2 }>* @compound to i32), i32 1) |
| 74 ; CHECK-NEXT: @const_addend_struct1 = internal constant i32 add (i32 ptrtoint (<
{ [3 x i8], i32 }>* @compound to i32), i32 1) |
| 75 |
| 76 @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @c
ompound to i32), i32 4) |
| 77 ; CHECK-NEXT: @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i
8], i32 }>* @compound to i32), i32 4) |
| 78 |
| 79 @const_addend_struct2 = internal constant i32 add (i32 ptrtoint (<{ [3 x i8], i3
2 }>* @compound to i32), i32 4) |
| 80 ; CHECK-NEXT: @const_addend_struct2 = internal constant i32 add (i32 ptrtoint (<
{ [3 x i8], i32 }>* @compound to i32), i32 4) |
| 81 |
| 82 @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align
8 |
| 83 ; CHECK-NEXT: @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func
to i32), align 8 |
| 84 |
| 85 @const_ptr_to_func_align = internal constant i32 ptrtoint (void ()* @func to i32
), align 8 |
| 86 ; CHECK-NEXT: @const_ptr_to_func_align = internal constant i32 ptrtoint (void ()
* @func to i32), align 8 |
| 87 |
| 88 @char = internal constant [1 x i8] c"0" |
| 89 ; CHECK-NEXT: @char = internal constant [1 x i8] c"0" |
| 90 |
| 91 @short = internal constant [2 x i8] zeroinitializer |
| 92 ; CHECK-NEXT: @short = internal constant [2 x i8] zeroinitializer |
| 93 |
| 94 define void @func() { |
| 95 ret void |
| 96 } |
| 97 |
| 98 ; CHECK-NEXT: define void @func() { |
| 99 |
OLD | NEW |