From 9d6055133b223d465da2555e06b50ee127ef4f4e Mon Sep 17 00:00:00 2001 From: Pete Cooper Date: Thu, 10 Nov 2011 21:45:06 +0000 Subject: Add invariant.load metadata to loads from selector references. Allows these loads to later be moved/combined in the optimizer. Fixes llvm-svn: 144318 --- clang/lib/CodeGen/CGObjCMac.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'clang/lib/CodeGen/CGObjCMac.cpp') diff --git a/clang/lib/CodeGen/CGObjCMac.cpp b/clang/lib/CodeGen/CGObjCMac.cpp index 84277f6827e..1cbcc58ae5f 100644 --- a/clang/lib/CodeGen/CGObjCMac.cpp +++ b/clang/lib/CodeGen/CGObjCMac.cpp @@ -5887,7 +5887,12 @@ llvm::Value *CGObjCNonFragileABIMac::EmitSelector(CGBuilderTy &Builder, if (lval) return Entry; - return Builder.CreateLoad(Entry); + llvm::LoadInst* LI = Builder.CreateLoad(Entry); + + LI->setMetadata(CGM.getModule().getMDKindID("invariant.load"), + llvm::MDNode::get(VMContext, + ArrayRef())); + return LI; } /// EmitObjCIvarAssign - Code gen for assigning to a __strong object. /// objc_assign_ivar (id src, id *dst, ptrdiff_t) -- cgit v1.2.3