diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-06-24 06:53:45 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-06-24 06:53:45 +0000 |
commit | f396732d9bddd27b9496dda6f51d492d81ef3ed7 (patch) | |
tree | bce2b6fc4861b8e9ec76a14053ff4bf10f886674 /test/Transforms/GlobalOpt/constantfold-initializers.ll | |
parent | 877ef747d86161af3d36c2864e0ae0b9b5be0441 (diff) | |
download | llvm-f396732d9bddd27b9496dda6f51d492d81ef3ed7.tar.gz llvm-f396732d9bddd27b9496dda6f51d492d81ef3ed7.tar.bz2 llvm-f396732d9bddd27b9496dda6f51d492d81ef3ed7.tar.xz |
GlobalOpt: Don't optimize dllimport for initializers
Referencing a dllimport variable requires actually instructions, not
just a relocation. This fixes PR19955.
Differential Revision: http://reviews.llvm.org/D4249
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@211571 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/GlobalOpt/constantfold-initializers.ll')
-rw-r--r-- | test/Transforms/GlobalOpt/constantfold-initializers.ll | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/test/Transforms/GlobalOpt/constantfold-initializers.ll b/test/Transforms/GlobalOpt/constantfold-initializers.ll index ce6e2c46d6..53e8465b5e 100644 --- a/test/Transforms/GlobalOpt/constantfold-initializers.ll +++ b/test/Transforms/GlobalOpt/constantfold-initializers.ll @@ -50,7 +50,31 @@ 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 +} + @llvm.global_ctors = appending constant - [2 x { i32, void ()* }] + [4 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 }] |