CodeGen: Mark functions used in vtables as unnamed_addr.

This marks virtual function declarations, as well as runtime library functions
__cxa_pure_virtual, __cxa_deleted_virtual and _purecall, as unnamed_addr. This
will allow us to correctly form relative references to them from vtables in
the relative vtable ABI.

Differential Revision: http://reviews.llvm.org/D18071

llvm-svn: 263464
This commit is contained in:
Peter Collingbourne
2016-03-14 18:41:59 +00:00
parent b7860fedd4
commit 0446e7cfae
4 changed files with 26 additions and 6 deletions

View File

@@ -0,0 +1,14 @@
// RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++11 -emit-llvm -o - | FileCheck %s
class A {
virtual void f();
virtual void g();
virtual ~A();
};
void A::f() {}
// CHECK: define void @_ZN1A1fEv({{.*}}) unnamed_addr
// CHECK: declare void @_ZN1A1gEv({{.*}}) unnamed_addr
// CHECK: declare void @_ZN1AD1Ev({{.*}}) unnamed_addr
// CHECK: declare void @_ZN1AD0Ev({{.*}}) unnamed_addr