diff options
| author | Anders Carlsson <andersca@mac.com> | 2010-03-29 02:53:58 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2010-03-29 02:53:58 +0000 |
| commit | 800ded68b5bc2c4c65cc22c2e0b36cc514a93c06 (patch) | |
| tree | 84af46a650e49cb8e9d5b52d70f83dc87707400f /clang/lib | |
| parent | 383f4cc8b9377db7456f7cf2bb2017feadd0a39a (diff) | |
| download | bcm5719-llvm-800ded68b5bc2c4c65cc22c2e0b36cc514a93c06.tar.gz bcm5719-llvm-800ded68b5bc2c4c65cc22c2e0b36cc514a93c06.zip | |
Only add thunks for the most derived class. This fixes some link errors I was seeing in files generated by the vtable tester utility.
llvm-svn: 99801
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/CGVtable.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/clang/lib/CodeGen/CGVtable.cpp b/clang/lib/CodeGen/CGVtable.cpp index 33225108152..f44b7ccb189 100644 --- a/clang/lib/CodeGen/CGVtable.cpp +++ b/clang/lib/CodeGen/CGVtable.cpp @@ -1803,8 +1803,9 @@ VtableBuilder::AddMethods(BaseSubobject Base, uint64_t BaseOffsetInLayoutClass, ComputeThisAdjustment(OverriddenMD, BaseOffsetInLayoutClass, Overrider); - if (ThisAdjustment.VCallOffsetOffset) { - // This is a virtual thunk, add it. + if (ThisAdjustment.VCallOffsetOffset && + Overrider.Method->getParent() == MostDerivedClass) { + // This is a virtual thunk for the most derived class, add it. AddThunk(Overrider.Method, ThunkInfo(ThisAdjustment, ReturnAdjustment())); } |

