diff options
author | Manuel Klimek <klimek@google.com> | 2015-02-24 09:06:28 +0000 |
---|---|---|
committer | Manuel Klimek <klimek@google.com> | 2015-02-24 09:06:28 +0000 |
commit | 7906f139c3adf797c8f1a8ec3a287682dec0176b (patch) | |
tree | b6a66de5eb3c55738a71b1f3214214ab04971d61 /clang/test/Modules/Inputs/merge-vtable-codegen/b.h | |
parent | cf51397c4872807e10d5ed3a55999693406eb2ae (diff) | |
download | bcm5719-llvm-7906f139c3adf797c8f1a8ec3a287682dec0176b.tar.gz bcm5719-llvm-7906f139c3adf797c8f1a8ec3a287682dec0176b.zip |
Fix codegen for virtual methods that are (re-) exported from multiple modules.
Fixes multiple crashes where a non-canonical decl would be used as key
in a lookup.
llvm-svn: 230314
Diffstat (limited to 'clang/test/Modules/Inputs/merge-vtable-codegen/b.h')
-rw-r--r-- | clang/test/Modules/Inputs/merge-vtable-codegen/b.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/clang/test/Modules/Inputs/merge-vtable-codegen/b.h b/clang/test/Modules/Inputs/merge-vtable-codegen/b.h new file mode 100644 index 00000000000..770e46077f9 --- /dev/null +++ b/clang/test/Modules/Inputs/merge-vtable-codegen/b.h @@ -0,0 +1,17 @@ +#ifndef B_H +#define B_H + +#include "a.h" + +class B : virtual public A { + virtual void x() {} +}; + +void b(A* p) { + p->x(); + // Instantiating a class that virtually inherits 'A' + // triggers calculation of the vtable offsets in 'A'. + B b; +} + +#endif |