diff options
Diffstat (limited to 'test/Transforms/GlobalOpt/constantfold-initializers.ll')
-rw-r--r-- | test/Transforms/GlobalOpt/constantfold-initializers.ll | 38 |
1 files changed, 36 insertions, 2 deletions
diff --git a/test/Transforms/GlobalOpt/constantfold-initializers.ll b/test/Transforms/GlobalOpt/constantfold-initializers.ll index ce6e2c4..4a25d66 100644 --- a/test/Transforms/GlobalOpt/constantfold-initializers.ll +++ b/test/Transforms/GlobalOpt/constantfold-initializers.ll @@ -50,7 +50,41 @@ entry: ret void } +; PR19955 + +@dllimportptr = global i32* null, align 4 +; CHECK: @dllimportptr = global i32* null, align 4 +@dllimportvar = external dllimport global i32 +define internal void @test3() { +entry: + store i32* @dllimportvar, i32** @dllimportptr, align 4 + ret void +} + +@dllexportptr = global i32* null, align 4 +; CHECK: @dllexportptr = global i32* @dllexportvar, align 4 +@dllexportvar = dllexport global i32 0, align 4 +; CHECK: @dllexportvar = dllexport global i32 20, align 4 +define internal void @test4() { +entry: + store i32 20, i32* @dllexportvar, align 4 + store i32* @dllexportvar, i32** @dllexportptr, align 4 + ret void +} + +@threadlocalptr = global i32* null, align 4 +; CHECK: @threadlocalptr = global i32* null, align 4 +@threadlocalvar = external thread_local global i32 +define internal void @test5() { +entry: + store i32* @threadlocalvar, i32** @threadlocalptr, align 4 + ret void +} + @llvm.global_ctors = appending constant - [2 x { i32, void ()* }] + [5 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @test1 }, - { i32, void ()* } { i32 65535, void ()* @test2 }] + { i32, void ()* } { i32 65535, void ()* @test2 }, + { i32, void ()* } { i32 65535, void ()* @test3 }, + { i32, void ()* } { i32 65535, void ()* @test4 }, + { i32, void ()* } { i32 65535, void ()* @test5 }] |