Let's not expose ABI specific minutia inside of CodeGenModule and
instead abstract it through CXXABI. This gets rid of
CodeGenModule::getCompleteObjectLocator,
CodeGenModule::EmitFundamentalTypeDescriptor{s,},
CodeGenModule::getMSTypeDescriptor,
CodeGenModule::getMSCompleteObjectLocator.
Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
include/clang/AST/Type.h | ||
---|---|---|
1458 ↗ | (On Diff #10765) | Stray comment? |
lib/CodeGen/CodeGenModule.cpp | ||
3390–3391 ↗ | (On Diff #10765) | Not part of this change, but note this linkage is incorrect for dllimport classes: http://llvm.org/PR20106 |
lib/CodeGen/ItaniumCXXABI.cpp | ||
1950 ↗ | (On Diff #10765) | Looks like the Itanium code paths weigh in at ~900 lines and the MS ones at ~500. That's kind of my internal threshold for "this deserves it's own file". IIRC you considered but rejected ItaniumRTTI.cpp. Why? I don't see any problem with a lib/CodeGen/ItaniumRTTI.h that exposes some free functions that ItaniumCXXABI calls to. |
lib/CodeGen/MicrosoftCXXABI.cpp | ||
2783 ↗ | (On Diff #10765) | "creats" |
- Address review feedback.
include/clang/AST/Type.h | ||
---|---|---|
1458 ↗ | (On Diff #10765) | Fixed. |
lib/CodeGen/ItaniumCXXABI.cpp | ||
1950 ↗ | (On Diff #10765) | As an example: I can do either but it made more sense, to me, to avoid creating another interface. |
lib/CodeGen/MicrosoftCXXABI.cpp | ||
2783 ↗ | (On Diff #10765) | Fixed. |
lgtm
lib/CodeGen/ItaniumCXXABI.cpp | ||
---|---|---|
1950 ↗ | (On Diff #10765) | OK, sgtm. We don't want a base class. The interface won't be the same. In Itanium, the type info object has all the relevant data, whereas in MS the other data points to the type_info struct. |