Generating call assume(icmp %vtable, %global_vtable) after constructor call for devirtualization purposes. For more info go to: http://lists.llvm.org/pipermail/cfe-dev/2015-July/044227.html Edit: Fixed version because of PR24479 and other bug caused in chrome. After this patch got reverted because of ScalarEvolution bug (D12719) Merged after John McCall big patch (Added Address). http://reviews.llvm.org/D11859 http://reviews.llvm.org/D12865 llvm-svn: 247646
12 lines
331 B
C++
12 lines
331 B
C++
// RUN: %clang_cc1 %s -emit-llvm -triple %itanium_abi_triple -o - -O2 | opt - -S -globalopt -o - | FileCheck %s
|
|
|
|
struct B;
|
|
extern B x;
|
|
char y;
|
|
typedef __typeof(sizeof(int)) size_t;
|
|
struct A { int a; A() { y = ((size_t)this - (size_t)&x) / sizeof(void*); } };
|
|
struct B : virtual A { void* x; };
|
|
B x;
|
|
|
|
// CHECK: @y = global i8 2
|