rjmccall added a comment. Incomplete classes are a curse. I don't suppose we can just modify the language specification to make it illegal to use `typeid(Incomplete*)`? Or make equality/hashing undefined in these cases?
================ Comment at: test/CodeGenCXX/arm64.cpp:48 void A::foo() {} - // CHECK-GLOBALS-DAG: @_ZTSN5test21AE = constant [11 x i8] + // CHECK-GLOBALS-DAG: @_ZTSN5test21AE = weak_odr constant [11 x i8] // CHECK-GLOBALS-DAG: @_ZTIN5test21AE = constant { {{.*}}, i8* getelementptr inbounds ([11 x i8], [11 x i8]* @_ZTSN5test21AE, i32 0, i32 0) } ---------------- The way the Darwin ARM64 ABI handles non-unique RTTI is by setting a flag indicating that clients should do string comparisons/hashes; it does not rely on the type name symbols being uniqued. So this should stay external and the _ZTI definition should change to set the bit. ================ Comment at: test/CodeGenCXX/windows-itanium-type-info.cpp:31 // CHECK-DAG: @_ZTI7derived = dso_local dllexport constant -// CHECK-DAG: @_ZTS7derived = dso_local dllexport constant +// CHECK-DAG: @_ZTS7derived = weak_odr dso_local dllexport constant // CHECK-DAG: @_ZTV7derived = dso_local dllexport unnamed_addr constant ---------------- Is this actually okay? I didn't think dllexport supported weak symbols. Repository: rC Clang https://reviews.llvm.org/D47092 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits