r249005 - Revert "Decorating virtual functions load with invariant.load" and fix
Renato Golin via cfe-commits
cfe-commits at lists.llvm.org
Thu Oct 1 05:58:41 PDT 2015
Author: rengolin
Date: Thu Oct 1 07:58:41 2015
New Revision: 249005
URL: http://llvm.org/viewvc/llvm-project?rev=249005&view=rev
Log:
Revert "Decorating virtual functions load with invariant.load" and fix
This reverts commit r248982 as it was breaking the ARM buildbots and the fix didn't work.
This reverts commit r248984, the fix that didn't work.
Modified:
cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
cfe/trunk/test/CodeGenCXX/virtual-function-calls.cpp
Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=249005&r1=249004&r2=249005&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original)
+++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Thu Oct 1 07:58:41 2015
@@ -1609,16 +1609,7 @@ llvm::Value *ItaniumCXXABI::getVirtualFu
uint64_t VTableIndex = CGM.getItaniumVTableContext().getMethodVTableIndex(GD);
llvm::Value *VFuncPtr =
CGF.Builder.CreateConstInBoundsGEP1_64(VTable, VTableIndex, "vfn");
- auto *Inst = CGF.Builder.CreateAlignedLoad(VFuncPtr, CGF.getPointerAlign());
-
- // It's safe to add "invariant.load" without -fstrict-vtable-pointers, but it
- // would not help in devirtualization.
- if (CGM.getCodeGenOpts().OptimizationLevel > 0 &&
- CGM.getCodeGenOpts().StrictVTablePointers)
- Inst->setMetadata(llvm::LLVMContext::MD_invariant_load,
- llvm::MDNode::get(CGM.getLLVMContext(),
- llvm::ArrayRef<llvm::Metadata *>()));
- return Inst;
+ return CGF.Builder.CreateAlignedLoad(VFuncPtr, CGF.getPointerAlign());
}
llvm::Value *ItaniumCXXABI::EmitVirtualDestructorCall(
Modified: cfe/trunk/test/CodeGenCXX/virtual-function-calls.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/virtual-function-calls.cpp?rev=249005&r1=249004&r2=249005&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/virtual-function-calls.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/virtual-function-calls.cpp Thu Oct 1 07:58:41 2015
@@ -1,5 +1,4 @@
// RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++11 -emit-llvm -o - | FileCheck %s
-// RUN: %clang_cc1 %s -triple %itanium_abi_triple -std=c++11 -emit-llvm -o - -fstrict-vtable-pointers -O1 | FileCheck --check-prefix=CHECK-INVARIANT %s
// PR5021
namespace PR5021 {
@@ -43,14 +42,10 @@ namespace VirtualNoreturn {
[[noreturn]] virtual void f();
};
- // CHECK-LABEL: @_ZN15VirtualNoreturn1f
- // CHECK-INVARIANT-LABEL: define void @_ZN15VirtualNoreturn1f
+ // CHECK: @_ZN15VirtualNoreturn1f
void f(A *p) {
p->f();
// CHECK: call {{.*}}void %{{[^#]*$}}
// CHECK-NOT: unreachable
- // CHECK-INVARIANT: load {{.*}} !invariant.load ![[EMPTY_NODE:[0-9]]]
}
}
-
-// CHECK-INVARIANT: ![[EMPTY_NODE]] = !{}
More information about the cfe-commits
mailing list