diff options
author | Pete Cooper <peter_cooper@apple.com> | 2011-11-10 21:45:06 +0000 |
---|---|---|
committer | Pete Cooper <peter_cooper@apple.com> | 2011-11-10 21:45:06 +0000 |
commit | 9d6055133b223d465da2555e06b50ee127ef4f4e (patch) | |
tree | eb5338b2058995a7321d1cc1ddfa7b6fd4b50146 /clang/lib/CodeGen/CGObjCMac.cpp | |
parent | 9304ea4306de898615f9e6cf2542e33c674063d4 (diff) | |
download | bcm5719-llvm-9d6055133b223d465da2555e06b50ee127ef4f4e.tar.gz bcm5719-llvm-9d6055133b223d465da2555e06b50ee127ef4f4e.zip |
Add invariant.load metadata to loads from selector references. Allows these loads to later be moved/combined in the optimizer. Fixes <rdar://problem/6027699>
llvm-svn: 144318
Diffstat (limited to 'clang/lib/CodeGen/CGObjCMac.cpp')
-rw-r--r-- | clang/lib/CodeGen/CGObjCMac.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
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<llvm::Value*>())); + return LI; } /// EmitObjCIvarAssign - Code gen for assigning to a __strong object. /// objc_assign_ivar (id src, id *dst, ptrdiff_t) |