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

Reply via email to