blob: 59ddcc656a5d1b89eb8227526ddd40614f8b2f72 [file] [log] [blame] [edit]
// Test safe ICF works with binaries that contain relative vtable.
// REQUIRES: system-linux,asserts
// RUN: %clang %cxxflags -o %t.so %s -Wl,-q -fno-rtti
// RUN: llvm-bolt %t.so -o %t.bolt --no-threads --icf=safe \
// RUN: --debug-only=bolt-icf 2>&1 | FileCheck %s
// RUN: %clang %cxxflags -o %t.so %s -Wl,-q -fno-rtti \
// RUN: -fexperimental-relative-c++-abi-vtables
// RUN: llvm-bolt %t.so -o %t.bolt --no-threads --icf=safe \
// RUN: --debug-only=bolt-icf 2>&1 | FileCheck %s
// CHECK: folding {{.*bar.*}} into {{.*foo.*}}
// CHECK-NOT: skipping function with reference taken {{.*bar.*}}
class TT {
public:
virtual int foo(int a) { return ++a; }
virtual int bar(int a) { return ++a; }
};
int main() {
TT T;
return T.foo(0) + T.bar(1);
}