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 | 23fc9afa4d8daaddfac99ff8b6fe384b62b0549f (patch) | |
| tree | 62538658f8a57f985d11bd722e997244bd03c719 /llvm/test/Transforms | |
| parent | 11a54c3465a71c027841b83bc7f5f9df647618ff (diff) | |
| download | bcm5719-llvm-23fc9afa4d8daaddfac99ff8b6fe384b62b0549f.tar.gz bcm5719-llvm-23fc9afa4d8daaddfac99ff8b6fe384b62b0549f.zip | |
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
llvm-svn: 211571
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/GlobalOpt/constantfold-initializers.ll | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/llvm/test/Transforms/GlobalOpt/constantfold-initializers.ll b/llvm/test/Transforms/GlobalOpt/constantfold-initializers.ll index ce6e2c46d62..53e8465b5e6 100644 --- a/llvm/test/Transforms/GlobalOpt/constantfold-initializers.ll +++ b/llvm/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 }] |

