Displaying 2 results from an estimated 2 matches for "_z4calcv".
2017 Dec 07
2
devirtualization with new-PM pipeline
...--
] cat devirt.cpp
struct A {
virtual int virt1();
};
struct B : A {
int virt1() override {
return 20;
}
};
static int redirect(A* a) {
return a->virt1();
}
int calc() {
B b;
return redirect(&b);
}
] clang++ -O3 devirt.cpp -std=c++11 -S -emit-llvm -o -
...
define i32 @_Z4calcv() local_unnamed_addr #0 {
entry:
ret i32 20 <--- nicely devirtualized (&b)->virt1() call
}
...
] clang++ -O3 -fexperimental-new-pass-manager -std=c++11 -S -emit-llvm -o -
...
define i32 @_Z4calcv() local_unnamed_addr #0 {
entry:
%b = alloca %struct.B, align 8
%0 = bitcast %str...
2017 Dec 14
2
devirtualization with new-PM pipeline
...gt; > }
> > };
> > static int redirect(A* a) {
> > return a->virt1();
> > }
> > int calc() {
> > B b;
> > return redirect(&b);
> > }
> > ] clang++ -O3 devirt.cpp -std=c++11 -S -emit-llvm -o -
> > ...
> > define i32 @_Z4calcv() local_unnamed_addr #0 {
> > entry:
> > ret i32 20 <--- nicely devirtualized (&b)->virt1() call
> > }
> > ...
> > ] clang++ -O3 -fexperimental-new-pass-manager -std=c++11 -S -emit-llvm
> -o -
> > ...
> > define i32 @_Z4calcv() local_unnam...