diff options
| author | Alexey Bataev <a.bataev@hotmail.com> | 2014-09-29 10:32:21 +0000 |
|---|---|---|
| committer | Alexey Bataev <a.bataev@hotmail.com> | 2014-09-29 10:32:21 +0000 |
| commit | 5bd68794393e51d65ad3c398dfc71ec2bdce7153 (patch) | |
| tree | 6c454856cd191b453819af927af699d48f59ada5 /clang/test | |
| parent | 609e2e6a6e001bcbe3da469a0c117fa570ca71aa (diff) | |
| download | bcm5719-llvm-5bd68794393e51d65ad3c398dfc71ec2bdce7153.tar.gz bcm5719-llvm-5bd68794393e51d65ad3c398dfc71ec2bdce7153.zip | |
Fix bug 20116 - http://llvm.org/bugs/show_bug.cgi?id=20116
Fixes incorrect codegen when devirtualization is aborted due to covariant return types.
Differential Revision: http://reviews.llvm.org/D5321
llvm-svn: 218602
Diffstat (limited to 'clang/test')
| -rw-r--r-- | clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp b/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp index 11026e8df3e..89c9a61b36e 100644 --- a/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp +++ b/clang/test/CodeGenCXX/devirtualize-virtual-function-calls-final.cpp @@ -178,9 +178,12 @@ namespace Test9 { A *f(RC *x) { // FIXME: It should be possible to devirtualize this case, but that is // not implemented yet. - // CHECK: getelementptr - // CHECK-NEXT: %[[FUNC:.*]] = load - // CHECK-NEXT: bitcast + // CHECK: load + // CHECK: bitcast + // CHECK: [[F_PTR_RA:%.+]] = bitcast + // CHECK: [[VTABLE:%.+]] = load {{.+}} [[F_PTR_RA]] + // CHECK: [[VFN:%.+]] = getelementptr inbounds {{.+}} [[VTABLE]], i{{[0-9]+}} 0 + // CHECK-NEXT: %[[FUNC:.*]] = load {{.+}} [[VFN]] // CHECK-NEXT: = call {{.*}} %[[FUNC]] return static_cast<RA*>(x)->f(); } |

