[PATCH] D37206: [ItaniumCXXABI] Always use linkonce_odr linkage for RTTI data on MinGW

Saleem Abdulrasool via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Wed Aug 30 19:15:02 PDT 2017


compnerd added inline comments.


================
Comment at: lib/CodeGen/ItaniumCXXABI.cpp:2990-2993
+      bool IsMinGW =
+          CGM.getContext().getTargetInfo().getTriple().getEnvironment() ==
+              llvm::Triple::GNU &&
+          CGM.getContext().getTargetInfo().getTriple().isOSWindows();
----------------
This is equivalent to: `CGM.getContext().getTargetInfo().getTripleInfo().isWindowsGNUEnvironment()`


================
Comment at: lib/CodeGen/ItaniumCXXABI.cpp:2994
+          CGM.getContext().getTargetInfo().getTriple().isOSWindows();
+      // MinGW always uses LinkOnceODRLinkage for type info.
+      if (RD->isDynamicClass() && !IsMinGW)
----------------
mstorsjo wrote:
> mstorsjo wrote:
> > Thanks for having a look at this!
> > 
> > When giving this a second thought now, should we perhaps skip the check for `Environment == GNU` altogether? Or should `xxx-windows-itanium` be different by restricting this behaviour strictly to GNU (does it matter)?
> > 
> > And given the existing test case that you added with the previous form of this code, and the new test I'm adding here, are there any other odd corner cases I should check?
> To rephrase; previously, the comment talked about mingw specifically, but the code only checked for the dllimport attribute. So perhaps I should drop the check for GNU and just check for windows?
Im not 100% certain off the top of my head, but I believe that `windows-itanium` should actually import the typename, so this should be okay.


https://reviews.llvm.org/D37206





More information about the cfe-commits mailing list