Nick Lewycky | 68f9f9d | 2012-02-17 06:59:21 +0000 | [diff] [blame] | 1 | ; RUN: opt -globalopt -S -o - < %s | FileCheck %s |
| 2 | |
| 3 | declare {}* @llvm.invariant.start(i64 %size, i8* nocapture %ptr) |
| 4 | |
| 5 | define void @test1(i8* %ptr) { |
| 6 | call {}* @llvm.invariant.start(i64 -1, i8* %ptr) |
| 7 | ret void |
| 8 | } |
| 9 | |
| 10 | @object1 = global i32 0 |
| 11 | ; CHECK: @object1 = constant i32 -1 |
| 12 | define void @ctor1() { |
| 13 | store i32 -1, i32* @object1 |
| 14 | %A = bitcast i32* @object1 to i8* |
| 15 | call void @test1(i8* %A) |
| 16 | ret void |
| 17 | } |
| 18 | |
| 19 | |
| 20 | @object2 = global i32 0 |
| 21 | ; CHECK: @object2 = global i32 0 |
| 22 | define void @ctor2() { |
| 23 | store i32 -1, i32* @object2 |
| 24 | %A = bitcast i32* @object2 to i8* |
| 25 | %B = call {}* @llvm.invariant.start(i64 -1, i8* %A) |
Nick Lewycky | 68f9f9d | 2012-02-17 06:59:21 +0000 | [diff] [blame] | 26 | %C = bitcast {}* %B to i8* |
| 27 | ret void |
| 28 | } |
| 29 | |
| 30 | @llvm.global_ctors = appending constant |
| 31 | [2 x { i32, void ()* }] |
| 32 | [ { i32, void ()* } { i32 65535, void ()* @ctor1 }, |
| 33 | { i32, void ()* } { i32 65535, void ()* @ctor2 } ] |