From d2d1cc5156bd13b78d66e11f4b51fcc7dc4b52af Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Fri, 20 Dec 2013 21:44:05 +0000 Subject: Compare canonical return types when generating MS C++ ABI vtable thunks This was part of the cause for PR17655. We were generating thunks when we shouldn't have. I suspect that if we tweak the test case for PR17655 to actually require thunks, we can reproduce the same crash. llvm-svn: 197836 --- clang/lib/AST/VTableBuilder.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'clang/lib/AST/VTableBuilder.cpp') diff --git a/clang/lib/AST/VTableBuilder.cpp b/clang/lib/AST/VTableBuilder.cpp index 5f7ae0f3ff4..63ac6f2c4a0 100644 --- a/clang/lib/AST/VTableBuilder.cpp +++ b/clang/lib/AST/VTableBuilder.cpp @@ -2888,7 +2888,8 @@ void VFTableBuilder::AddMethods(BaseSubobject Base, unsigned BaseDepth, AddThunk(MD, VTableThunks[OverriddenMethodInfo.VFTableIndex]); } - if (MD->getResultType() == OverriddenMD->getResultType()) { + if (Context.hasSameType(MD->getResultType(), + OverriddenMD->getResultType())) { // No return adjustment needed - just replace the overridden method info // with the current info. MethodInfo MI(OverriddenMethodInfo.VBTableIndex, -- cgit v1.2.3