diff options
author | Fangrui Song <maskray@google.com> | 2019-05-15 02:35:32 +0000 |
---|---|---|
committer | Fangrui Song <maskray@google.com> | 2019-05-15 02:35:32 +0000 |
commit | f4dfd63c74899e2953b176de2174ae7a8924a72c (patch) | |
tree | 10b8dd0ca599015981cbea658f927847791c4d5b /llvm/test/CodeGen | |
parent | bd3adfe5e3bcb6f8f16166d1fd8a3f3c4fd70307 (diff) | |
download | bcm5719-llvm-f4dfd63c74899e2953b176de2174ae7a8924a72c.tar.gz bcm5719-llvm-f4dfd63c74899e2953b176de2174ae7a8924a72c.zip |
[IR] Disallow llvm.global_ctors and llvm.global_dtors of the 2-field form in textual format
The 3-field form was introduced by D3499 in 2014 and the legacy 2-field
form was planned to be removed in LLVM 4.0
For the textual format, this patch migrates the existing 2-field form to
use the 3-field form and deletes the compatibility code.
test/Verifier/global-ctors-2.ll checks we have a friendly error message.
For bitcode, lib/IR/AutoUpgrade UpgradeGlobalVariables will upgrade the
2-field form (add i8* null as the third field).
Reviewed By: rnk, dexonsmith
Differential Revision: https://reviews.llvm.org/D61547
llvm-svn: 360742
Diffstat (limited to 'llvm/test/CodeGen')
-rw-r--r-- | llvm/test/CodeGen/AArch64/init-array.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/ctor_order.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/ARM/ctors_dtors.ll | 4 | ||||
-rw-r--r-- | llvm/test/CodeGen/Mips/init-array.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/PowerPC/pr17354.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/RISCV/init-array.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/SPARC/2008-10-10-InlineAsmMemoryOperand.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/2007-06-04-X86-64-CtorAsmBugs.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/2011-08-29-InitOrder.ll | 4 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/init-priority.ll | 2 | ||||
-rw-r--r-- | llvm/test/CodeGen/X86/negate-add-zero.ll | 1 |
11 files changed, 12 insertions, 13 deletions
diff --git a/llvm/test/CodeGen/AArch64/init-array.ll b/llvm/test/CodeGen/AArch64/init-array.ll index a275e7ecc57..825f1ad0b23 100644 --- a/llvm/test/CodeGen/AArch64/init-array.ll +++ b/llvm/test/CodeGen/AArch64/init-array.ll @@ -5,6 +5,6 @@ define internal void @_GLOBAL__I_a() section ".text.startup" { ret void } -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I_a, i8* null }] ; CHECK: .section .init_array diff --git a/llvm/test/CodeGen/ARM/ctor_order.ll b/llvm/test/CodeGen/ARM/ctor_order.ll index 0cf87d7a97b..ca14b3ac3f1 100644 --- a/llvm/test/CodeGen/ARM/ctor_order.ll +++ b/llvm/test/CodeGen/ARM/ctor_order.ll @@ -21,7 +21,7 @@ ; GNUEABI: .long f152 -@llvm.global_ctors = appending global [2 x { i32, void ()* }] [ { i32, void ()* } { i32 151, void ()* @f151 }, { i32, void ()* } { i32 152, void ()* @f152 } ] +@llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [ { i32, void ()*, i8* } { i32 151, void ()* @f151, i8* null }, { i32, void ()*, i8* } { i32 152, void ()* @f152, i8* null } ] define void @f151() { entry: diff --git a/llvm/test/CodeGen/ARM/ctors_dtors.ll b/llvm/test/CodeGen/ARM/ctors_dtors.ll index c097ade3c84..1320ee22851 100644 --- a/llvm/test/CodeGen/ARM/ctors_dtors.ll +++ b/llvm/test/CodeGen/ARM/ctors_dtors.ll @@ -11,8 +11,8 @@ ; GNUEABI: .section .init_array,"aw",%init_array ; GNUEABI: .section .fini_array,"aw",%fini_array -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [ { i32, void ()* } { i32 65535, void ()* @__mf_init } ] ; <[1 x { i32, void ()* }]*> [#uses=0] -@llvm.global_dtors = appending global [1 x { i32, void ()* }] [ { i32, void ()* } { i32 65535, void ()* @__mf_fini } ] ; <[1 x { i32, void ()* }]*> [#uses=0] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [ { i32, void ()*, i8* } { i32 65535, void ()* @__mf_init, i8* null } ] ; <[1 x { i32, void ()*, i8* }]*> [#uses=0] +@llvm.global_dtors = appending global [1 x { i32, void ()*, i8* }] [ { i32, void ()*, i8* } { i32 65535, void ()* @__mf_fini, i8* null } ] ; <[1 x { i32, void ()*, i8* }]*> [#uses=0] define void @__mf_init() { entry: diff --git a/llvm/test/CodeGen/Mips/init-array.ll b/llvm/test/CodeGen/Mips/init-array.ll index 1ca182dae7a..1f1b4a050d2 100644 --- a/llvm/test/CodeGen/Mips/init-array.ll +++ b/llvm/test/CodeGen/Mips/init-array.ll @@ -2,7 +2,7 @@ target triple = "mipsel-unknown-linux" -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @test }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @test, i8* null }] ; CHECK: .section ; CHECK: .init_array ; CHECK-NOT: .ctors diff --git a/llvm/test/CodeGen/PowerPC/pr17354.ll b/llvm/test/CodeGen/PowerPC/pr17354.ll index 5160d836a26..9b5f52aeed8 100644 --- a/llvm/test/CodeGen/PowerPC/pr17354.ll +++ b/llvm/test/CodeGen/PowerPC/pr17354.ll @@ -10,7 +10,7 @@ target triple = "powerpc64-unknown-linux-gnu" %struct.CS = type { i32 } @_ZL3glb = internal global [1 x %struct.CS] zeroinitializer, align 4 -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I_a, i8* null }] define internal void @__cxx_global_var_init() section ".text.startup" { entry: diff --git a/llvm/test/CodeGen/RISCV/init-array.ll b/llvm/test/CodeGen/RISCV/init-array.ll index 1927eeb6d11..a2d176f2276 100644 --- a/llvm/test/CodeGen/RISCV/init-array.ll +++ b/llvm/test/CodeGen/RISCV/init-array.ll @@ -20,7 +20,7 @@ define internal void @_GLOBAL__I_a() section ".text.startup" { ret void } -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [{ i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I_a, i8* null }] ;INITARRAY: section .init_array ;INITARRAY-NOT: .section .ctors diff --git a/llvm/test/CodeGen/SPARC/2008-10-10-InlineAsmMemoryOperand.ll b/llvm/test/CodeGen/SPARC/2008-10-10-InlineAsmMemoryOperand.ll index 07e250b3c98..32ebc02ce20 100644 --- a/llvm/test/CodeGen/SPARC/2008-10-10-InlineAsmMemoryOperand.ll +++ b/llvm/test/CodeGen/SPARC/2008-10-10-InlineAsmMemoryOperand.ll @@ -2,7 +2,7 @@ ; PR 1557 target datalayout = "E-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f128:128:128" -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [ { i32, void ()* } { i32 65535, void ()* @set_fast_math } ] ; <[1 x { i32, void ()* }]*> [#uses=0] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [ { i32, void ()*, i8* } { i32 65535, void ()* @set_fast_math, i8* null } ] ; <[1 x { i32, void ()*, i8* }]*> [#uses=0] define internal void @set_fast_math() nounwind { entry: diff --git a/llvm/test/CodeGen/X86/2007-06-04-X86-64-CtorAsmBugs.ll b/llvm/test/CodeGen/X86/2007-06-04-X86-64-CtorAsmBugs.ll index 1291dc9e6ed..7cba4c2531c 100644 --- a/llvm/test/CodeGen/X86/2007-06-04-X86-64-CtorAsmBugs.ll +++ b/llvm/test/CodeGen/X86/2007-06-04-X86-64-CtorAsmBugs.ll @@ -3,7 +3,7 @@ %struct.A = type { [1024 x i8] } @_ZN1A1aE = global %struct.A zeroinitializer, align 32 ; <%struct.A*> [#uses=1] -@llvm.global_ctors = appending global [1 x { i32, void ()* }] [ { i32, void ()* } { i32 65535, void ()* @_GLOBAL__I__ZN1A1aE } ] ; <[1 x { i32, void ()* }]*> [#uses=0] +@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [ { i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I__ZN1A1aE, i8* null } ] ; <[1 x { i32, void ()*, i8* null }]*> [#uses=0] define internal void @_GLOBAL__I__ZN1A1aE() section "__TEXT,__StaticInit,regular,pure_instructions" { entry: diff --git a/llvm/test/CodeGen/X86/2011-08-29-InitOrder.ll b/llvm/test/CodeGen/X86/2011-08-29-InitOrder.ll index b278ad67415..2af7b1109f4 100644 --- a/llvm/test/CodeGen/X86/2011-08-29-InitOrder.ll +++ b/llvm/test/CodeGen/X86/2011-08-29-InitOrder.ll @@ -2,7 +2,7 @@ ; RUN: llc < %s -mtriple=i386-apple-darwin | FileCheck %s --check-prefix=CHECK-DARWIN ; PR5329 -@llvm.global_ctors = appending global [3 x { i32, void ()* }] [{ i32, void ()* } { i32 2000, void ()* @construct_2 }, { i32, void ()* } { i32 3000, void ()* @construct_3 }, { i32, void ()* } { i32 1000, void ()* @construct_1 }] +@llvm.global_ctors = appending global [3 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 2000, void ()* @construct_2, i8* null }, { i32, void ()*, i8* } { i32 3000, void ()* @construct_3, i8* null }, { i32, void ()*, i8* } { i32 1000, void ()* @construct_1, i8* null }] ; CHECK-DEFAULT: .section .ctors.64535,"aw",@progbits ; CHECK-DEFAULT: .long construct_1 ; CHECK-DEFAULT: .section .ctors.63535,"aw",@progbits @@ -14,7 +14,7 @@ ; CHECK-DARWIN-NEXT: .long _construct_2 ; CHECK-DARWIN-NEXT: .long _construct_3 -@llvm.global_dtors = appending global [3 x { i32, void ()* }] [{ i32, void ()* } { i32 2000, void ()* @destruct_2 }, { i32, void ()* } { i32 1000, void ()* @destruct_1 }, { i32, void ()* } { i32 3000, void ()* @destruct_3 }] +@llvm.global_dtors = appending global [3 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 2000, void ()* @destruct_2, i8* null }, { i32, void ()*, i8* } { i32 1000, void ()* @destruct_1, i8* null }, { i32, void ()*, i8* } { i32 3000, void ()* @destruct_3, i8* null }] ; CHECK-DEFAULT: .section .dtors.64535,"aw",@progbits ; CHECK-DEFAULT: .long destruct_1 ; CHECK-DEFAULT: .section .dtors.63535,"aw",@progbits diff --git a/llvm/test/CodeGen/X86/init-priority.ll b/llvm/test/CodeGen/X86/init-priority.ll index 85ef5475cf2..30e94841f79 100644 --- a/llvm/test/CodeGen/X86/init-priority.ll +++ b/llvm/test/CodeGen/X86/init-priority.ll @@ -16,7 +16,7 @@ @c1 = global %class.C zeroinitializer, align 1 @d1 = global %class.D zeroinitializer, align 1 -@llvm.global_ctors = appending global [2 x { i32, void ()* }] [{ i32, void ()* } { i32 101, void ()* @_GLOBAL__I_000101 }, { i32, void ()* } { i32 65535, void ()* @_GLOBAL__I_a }] +@llvm.global_ctors = appending global [2 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 101, void ()* @_GLOBAL__I_000101, i8* null }, { i32, void ()*, i8* } { i32 65535, void ()* @_GLOBAL__I_a, i8* null }] define linkonce_odr void @_ZN1CC1Ev(%class.C* nocapture %this) { entry: diff --git a/llvm/test/CodeGen/X86/negate-add-zero.ll b/llvm/test/CodeGen/X86/negate-add-zero.ll index beb87e3e903..78a4cf89a7e 100644 --- a/llvm/test/CodeGen/X86/negate-add-zero.ll +++ b/llvm/test/CodeGen/X86/negate-add-zero.ll @@ -188,7 +188,6 @@ target triple = "i386-apple-darwin7" @"\01LC28" = external constant [15 x i8] ; <[15 x i8]*> [#uses=0] @"\01LC29" = external constant [20 x i8] ; <[20 x i8]*> [#uses=0] @"\01LC30" = external constant [41 x i8] ; <[41 x i8]*> [#uses=0] -@llvm.global_ctors = external global [1 x { i32, void ()* }] ; <[1 x { i32, void ()* }]*> [#uses=0] declare void @_GLOBAL__I__ZN9HingeNode7DEG2RADE() section "__TEXT,__StaticInit,regular,pure_instructions" |