]> granicus.if.org Git - clang/commitdiff
Add a test for devirtualization of virtual operator calls.
authorNico Weber <nicolasweber@gmx.de>
Mon, 1 Dec 2014 17:48:04 +0000 (17:48 +0000)
committerNico Weber <nicolasweber@gmx.de>
Mon, 1 Dec 2014 17:48:04 +0000 (17:48 +0000)
There was no test coverage for this before: Modifiying
EmitCXXOperatorMemberCallee() to not call CanDevirtualizeMemberFunctionCall()
didn't make any test fail.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@223056 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGenCXX/virtual-operator-call.cpp

index 72d49c2300939f182fd2ddb432b116baa7945359..727c8e140fd81e81c0205089acbd496de192944f 100644 (file)
@@ -1,10 +1,13 @@
 // RUN: %clang_cc1 %s -triple i386-unknown-unknown -emit-llvm -o - | FileCheck %s
 
 struct A {
-  virtual int operator-() = 0;
+  virtual int operator-();
 };
 
-void f(A *a) {
+void f(A a, A *ap) {
+  // CHECK: call i32 @_ZN1AngEv(%struct.A* %a)
+  -a;
+
   // CHECK: call i32 %
-  -*a;
+  -*ap;
 }