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]] = !{} _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits