EricWF added inline comments.

================
Comment at: src/memory.cpp:126-130
 const void*
 __shared_weak_count::__get_deleter(const type_info&) const _NOEXCEPT
 {
-    return 0;
+    return nullptr;
 }
----------------
dexonsmith wrote:
> If this is the right change, seems like the 0/nullptr change can be a 
> separate NFC pre-commit.
> 
> However, I wonder if this should call std::terminate or abort or something.
> - Previously, if someone with RTTI accidentally linked against such a 
> library, they'd get a link error in this case.
> - Now, what happens?
> Now, what happens?

That's a good question without an easy answer.

> Previously, if someone with RTTI accidentally linked against such a library, 
> they'd get a link error in this case.

Yep, that is true.

However if someone compiles a program with `-fno-rtti -D_LIBCPP_BUILD_STATIC`  
and links it to a library built w/ RTTI they will run into runtime errors and 
incorrect codegen since the vtable layout has silently changed. This is the 
problem I'm trying to fix.

> Now, what happens?

After this change it still fails to link when the library is built w/o RTTI but 
the program is.  This is caused by the missing typeinfo definition for 
`__shared_weak_count`. 

> I wonder if this should call std::terminate or abort or something.

This should never actually get called when programs are built with `-fno-rtti` 
because all of the call sites should be `#ifndef _LIBCPP_NO_RTTI` away, so 
there is no reason to abort or terminate. 



https://reviews.llvm.org/D32838



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D32838: [l... Eric Fiselier via Phabricator via cfe-commits
    • [PATCH] D3283... Duncan P. N. Exon Smith via Phabricator via cfe-commits
    • [PATCH] D3283... Eric Fiselier via Phabricator via cfe-commits

Reply via email to