// The ABI says: It is suggested that it be emitted in the same COMDAT group
// as the associated data object
- if (var->isWeakForLinker() && CGM.supportsCOMDAT()) {
- StringRef ComdatName =
- D.isLocalVarDecl() ? CGF.CurFn->getName() : var->getName();
- llvm::Comdat *C = CGM.getModule().getOrInsertComdat(ComdatName);
+ if (!D.isLocalVarDecl() && var->isWeakForLinker() && CGM.supportsCOMDAT()) {
+ llvm::Comdat *C = CGM.getModule().getOrInsertComdat(var->getName());
guard->setComdat(C);
var->setComdat(C);
CGF.CurFn->setComdat(C);
// CHECK: @_ZZN5test31BC1EvE1u = internal global { i8, [3 x i8] } { i8 97, [3 x i8] undef }, align 4
// CHECK: @_ZZN5test1L6getvarEiE3var = internal constant [4 x i32] [i32 1, i32 0, i32 2, i32 4], align 16
-// CHECK: @_ZZ2h2vE1i = linkonce_odr global i32 0, comdat $_Z2h2v
-// CHECK: @_ZGVZ2h2vE1i = linkonce_odr global i64 0, comdat $_Z2h2v
+// CHECK: @_ZZ2h2vE1i = linkonce_odr global i32 0
+// CHECK-NOT: comdat
+// CHECK: @_ZGVZ2h2vE1i = linkonce_odr global i64 0
+// CHECK-NOT: comdat
struct A {
A();
static const int i = a();
}
-// CHECK: define linkonce_odr void @_Z2h2v() {{.*}} comdat $_Z2h2v
+// CHECK: define linkonce_odr void @_Z2h2v()
+// CHECK-NOT: comdat
inline void h2() {
static int i = a();
}