<html><head><meta http-equiv="Content-Type" content="text/html; charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Should now be fixed by r349782.<div class=""><br class=""></div><div class="">Thanks,</div><div class="">Pete<br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Dec 20, 2018, at 9:44 AM, Pete Cooper via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><meta http-equiv="Content-Type" content="text/html; charset=us-ascii" class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">Sorry Nico. That shouldn't have happened.<div class=""><br class=""></div><div class="">The ARC optimizer is removing these calls (see ObjCARCContract.cpp).</div><div class=""><br class=""></div><div class="">However, its looking for the intrinsic and I missed a case in clang where we are incorrectly emitting the runtime function instead of the intrinsic. I'll get a fix ready right now.</div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Pete<br class=""><div class=""><br class=""><blockquote type="cite" class=""><div class="">On Dec 20, 2018, at 9:40 AM, Nico Weber <<a href="mailto:thakis@chromium.org" class="">thakis@chromium.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class=""><div dir="ltr" class="">We're getting a bunch of linker errors like<br class=""><div class=""><br class=""></div><div class=""><div class="">Undefined symbols for architecture x86_64:</div><div class=""> "_clang.arc.use", referenced from:</div><div class=""> -[RTCVideoCodecInfo initWithName:parameters:] in libbase_objc.a(RTCVideoCodecInfo.o)</div></div><div class=""><br class=""></div><div class="">after this for some binaries (<a href="https://crbug.com/917047" class="">https://crbug.com/917047</a>). We don't use arc. Any idea how that could happen? Are we holding something wrong?</div></div></div></div></div><br class=""><div class="gmail_quote"><div dir="ltr" class="">On Tue, Dec 18, 2018 at 3:36 PM Pete Cooper via cfe-commits <<a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a>> wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Author: pete<br class="">
Date: Tue Dec 18 12:33:00 2018<br class="">
New Revision: 349535<br class="">
<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=349535&view=rev" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project?rev=349535&view=rev</a><br class="">
Log:<br class="">
Generate objc intrinsics instead of runtime calls as the ARC optimizer now works only on intrinsics<br class="">
<br class="">
Differential Revision: <a href="https://reviews.llvm.org/D55802" rel="noreferrer" target="_blank" class="">https://reviews.llvm.org/D55802</a><br class="">
<br class="">
Reviewers: rjmccall<br class="">
<br class="">
Modified:<br class="">
cfe/trunk/lib/CodeGen/CGObjC.cpp<br class="">
cfe/trunk/lib/CodeGen/CodeGenModule.h<br class="">
cfe/trunk/test/CodeGenObjC/arc-arm.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-block-copy-escape.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-blocks.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-bridged-cast.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-exceptions.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-foreach.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-i386.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-linetable.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-literals.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-loadweakretained-release.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-no-runtime.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-precise-lifetime.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-property.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-related-result-type.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-ternary-op.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-unbridged-cast.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-unopt.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-unoptimized-byref-var.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-unsafeclaim.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-weak-property.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-weak.m<br class="">
cfe/trunk/test/CodeGenObjC/arc-with-atthrow.m<br class="">
cfe/trunk/test/CodeGenObjC/arc.ll<br class="">
cfe/trunk/test/CodeGenObjC/arc.m<br class="">
cfe/trunk/test/CodeGenObjC/autorelease.m<br class="">
cfe/trunk/test/CodeGenObjC/debug-info-block-line.m<br class="">
cfe/trunk/test/CodeGenObjC/empty-collection-literals.m<br class="">
cfe/trunk/test/CodeGenObjC/fragile-arc.m<br class="">
cfe/trunk/test/CodeGenObjC/mrc-weak.m<br class="">
cfe/trunk/test/CodeGenObjC/noescape.m<br class="">
cfe/trunk/test/CodeGenObjC/ns_consume_null_check.m<br class="">
cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m<br class="">
cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m<br class="">
cfe/trunk/test/CodeGenObjC/objc-arc-container-subscripting.m<br class="">
cfe/trunk/test/CodeGenObjC/os_log.m<br class="">
cfe/trunk/test/CodeGenObjC/parameterized_classes.m<br class="">
cfe/trunk/test/CodeGenObjC/stret-lifetime.m<br class="">
cfe/trunk/test/CodeGenObjC/strong-in-c-struct.m<br class="">
cfe/trunk/test/CodeGenObjC/weak-in-c-struct.m<br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-attrs.mm/" rel="noreferrer" target="_blank" class="">arc-attrs.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-blocks.mm/" rel="noreferrer" target="_blank" class="">arc-blocks.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-constexpr.mm/" rel="noreferrer" target="_blank" class="">arc-constexpr.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-cxx11-init-list.mm/" rel="noreferrer" target="_blank" class="">arc-cxx11-init-list.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-exceptions.mm/" rel="noreferrer" target="_blank" class="">arc-exceptions.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-forwarded-lambda-call.mm/" rel="noreferrer" target="_blank" class="">arc-forwarded-lambda-call.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-globals.mm/" rel="noreferrer" target="_blank" class="">arc-globals.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-indirect.mm/" rel="noreferrer" target="_blank" class="">arc-indirect.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-move.mm/" rel="noreferrer" target="_blank" class="">arc-move.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-new-delete.mm/" rel="noreferrer" target="_blank" class="">arc-new-delete.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-pseudo-destructors.mm/" rel="noreferrer" target="_blank" class="">arc-pseudo-destructors.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-references.mm/" rel="noreferrer" target="_blank" class="">arc-references.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-returns-inner-reference-ptr.mm/" rel="noreferrer" target="_blank" class="">arc-returns-inner-reference-ptr.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-special-member-functions.mm/" rel="noreferrer" target="_blank" class="">arc-special-member-functions.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-weak.mm/" rel="noreferrer" target="_blank" class="">arc-weak.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://arc.mm/" rel="noreferrer" target="_blank" class="">arc.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://block-nested-in-lambda.mm/" rel="noreferrer" target="_blank" class="">block-nested-in-lambda.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://destroy.mm/" rel="noreferrer" target="_blank" class="">destroy.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://lambda-expressions.mm/" rel="noreferrer" target="_blank" class="">lambda-expressions.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://literals.mm/" rel="noreferrer" target="_blank" class="">literals.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://microsoft-abi-arc-param-order.mm/" rel="noreferrer" target="_blank" class="">microsoft-abi-arc-param-order.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://mrc-weak.mm/" rel="noreferrer" target="_blank" class="">mrc-weak.mm</a><br class="">
cfe/trunk/test/CodeGenObjCXX/<a href="http://objc-weak.mm/" rel="noreferrer" target="_blank" class="">objc-weak.mm</a><br class="">
cfe/trunk/test/SemaObjC/arc-objc-lifetime-conflict.m<br class="">
<br class="">
Modified: cfe/trunk/lib/CodeGen/CGObjC.cpp<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGObjC.cpp?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/CodeGen/CGObjC.cpp (original)<br class="">
+++ cfe/trunk/lib/CodeGen/CGObjC.cpp Tue Dec 18 12:33:00 2018<br class="">
@@ -1873,12 +1873,8 @@ void CodeGenFunction::EmitARCIntrinsicUs<br class="">
EmitNounwindRuntimeCall(fn, values);<br class="">
}<br class="">
<br class="">
-<br class="">
-static llvm::Constant *createARCRuntimeFunction(CodeGenModule &CGM,<br class="">
- llvm::FunctionType *FTy,<br class="">
- StringRef Name) {<br class="">
- llvm::Constant *RTF = CGM.CreateRuntimeFunction(FTy, Name);<br class="">
-<br class="">
+static void setARCRuntimeFunctionLinkage(CodeGenModule &CGM,<br class="">
+ llvm::Constant *RTF) {<br class="">
if (auto *F = dyn_cast<llvm::Function>(RTF)) {<br class="">
// If the target runtime doesn't naturally support ARC, emit weak<br class="">
// references to the runtime support library. We don't really<br class="">
@@ -1886,14 +1882,8 @@ static llvm::Constant *createARCRuntimeF<br class="">
if (!CGM.getLangOpts().ObjCRuntime.hasNativeARC() &&<br class="">
!CGM.getTriple().isOSBinFormatCOFF()) {<br class="">
F->setLinkage(llvm::Function::ExternalWeakLinkage);<br class="">
- } else if (Name == "objc_retain" || Name == "objc_release") {<br class="">
- // If we have Native ARC, set nonlazybind attribute for these APIs for<br class="">
- // performance.<br class="">
- F->addFnAttr(llvm::Attribute::NonLazyBind);<br class="">
}<br class="">
}<br class="">
-<br class="">
- return RTF;<br class="">
}<br class="">
<br class="">
/// Perform an operation having the signature<br class="">
@@ -1903,15 +1893,14 @@ static llvm::Value *emitARCValueOperatio<br class="">
llvm::Value *value,<br class="">
llvm::Type *returnType,<br class="">
llvm::Constant *&fn,<br class="">
- StringRef fnName,<br class="">
+ llvm::Intrinsic::ID IntID,<br class="">
bool isTailCall = false) {<br class="">
if (isa<llvm::ConstantPointerNull>(value))<br class="">
return value;<br class="">
<br class="">
if (!fn) {<br class="">
- llvm::FunctionType *fnType =<br class="">
- llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrTy, false);<br class="">
- fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName);<br class="">
+ fn = CGF.CGM.getIntrinsic(IntID);<br class="">
+ setARCRuntimeFunctionLinkage(CGF.CGM, fn);<br class="">
}<br class="">
<br class="">
// Cast the argument to 'id'.<br class="">
@@ -1932,11 +1921,10 @@ static llvm::Value *emitARCValueOperatio<br class="">
static llvm::Value *emitARCLoadOperation(CodeGenFunction &CGF,<br class="">
Address addr,<br class="">
llvm::Constant *&fn,<br class="">
- StringRef fnName) {<br class="">
+ llvm::Intrinsic::ID IntID) {<br class="">
if (!fn) {<br class="">
- llvm::FunctionType *fnType =<br class="">
- llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrPtrTy, false);<br class="">
- fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName);<br class="">
+ fn = CGF.CGM.getIntrinsic(IntID);<br class="">
+ setARCRuntimeFunctionLinkage(CGF.CGM, fn);<br class="">
}<br class="">
<br class="">
// Cast the argument to 'id*'.<br class="">
@@ -1959,16 +1947,13 @@ static llvm::Value *emitARCStoreOperatio<br class="">
Address addr,<br class="">
llvm::Value *value,<br class="">
llvm::Constant *&fn,<br class="">
- StringRef fnName,<br class="">
+ llvm::Intrinsic::ID IntID,<br class="">
bool ignored) {<br class="">
assert(addr.getElementType() == value->getType());<br class="">
<br class="">
if (!fn) {<br class="">
- llvm::Type *argTypes[] = { CGF.Int8PtrPtrTy, CGF.Int8PtrTy };<br class="">
-<br class="">
- llvm::FunctionType *fnType<br class="">
- = llvm::FunctionType::get(CGF.Int8PtrTy, argTypes, false);<br class="">
- fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName);<br class="">
+ fn = CGF.CGM.getIntrinsic(IntID);<br class="">
+ setARCRuntimeFunctionLinkage(CGF.CGM, fn);<br class="">
}<br class="">
<br class="">
llvm::Type *origType = value->getType();<br class="">
@@ -1990,15 +1975,12 @@ static void emitARCCopyOperation(CodeGen<br class="">
Address dst,<br class="">
Address src,<br class="">
llvm::Constant *&fn,<br class="">
- StringRef fnName) {<br class="">
+ llvm::Intrinsic::ID IntID) {<br class="">
assert(dst.getType() == src.getType());<br class="">
<br class="">
if (!fn) {<br class="">
- llvm::Type *argTypes[] = { CGF.Int8PtrPtrTy, CGF.Int8PtrPtrTy };<br class="">
-<br class="">
- llvm::FunctionType *fnType<br class="">
- = llvm::FunctionType::get(CGF.Builder.getVoidTy(), argTypes, false);<br class="">
- fn = createARCRuntimeFunction(CGF.CGM, fnType, fnName);<br class="">
+ fn = CGF.CGM.getIntrinsic(IntID);<br class="">
+ setARCRuntimeFunctionLinkage(CGF.CGM, fn);<br class="">
}<br class="">
<br class="">
llvm::Value *args[] = {<br class="">
@@ -2008,6 +1990,34 @@ static void emitARCCopyOperation(CodeGen<br class="">
CGF.EmitNounwindRuntimeCall(fn, args);<br class="">
}<br class="">
<br class="">
+/// Perform an operation having the signature<br class="">
+/// i8* (i8*)<br class="">
+/// where a null input causes a no-op and returns null.<br class="">
+static llvm::Value *emitObjCValueOperation(CodeGenFunction &CGF,<br class="">
+ llvm::Value *value,<br class="">
+ llvm::Type *returnType,<br class="">
+ llvm::Constant *&fn,<br class="">
+ StringRef fnName) {<br class="">
+ if (isa<llvm::ConstantPointerNull>(value))<br class="">
+ return value;<br class="">
+<br class="">
+ if (!fn) {<br class="">
+ llvm::FunctionType *fnType =<br class="">
+ llvm::FunctionType::get(CGF.Int8PtrTy, CGF.Int8PtrTy, false);<br class="">
+ fn = CGF.CGM.CreateRuntimeFunction(fnType, fnName);<br class="">
+ }<br class="">
+<br class="">
+ // Cast the argument to 'id'.<br class="">
+ llvm::Type *origType = returnType ? returnType : value->getType();<br class="">
+ value = CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy);<br class="">
+<br class="">
+ // Call the function.<br class="">
+ llvm::CallInst *call = CGF.EmitNounwindRuntimeCall(fn, value);<br class="">
+<br class="">
+ // Cast the result back to the original type.<br class="">
+ return CGF.Builder.CreateBitCast(call, origType);<br class="">
+}<br class="">
+<br class="">
/// Produce the code to do a retain. Based on the type, calls one of:<br class="">
/// call i8* \@objc_retain(i8* %value)<br class="">
/// call i8* \@objc_retainBlock(i8* %value)<br class="">
@@ -2023,7 +2033,7 @@ llvm::Value *CodeGenFunction::EmitARCRet<br class="">
llvm::Value *CodeGenFunction::EmitARCRetainNonBlock(llvm::Value *value) {<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_retain,<br class="">
- "objc_retain");<br class="">
+ llvm::Intrinsic::objc_retain);<br class="">
}<br class="">
<br class="">
/// Retain the given block, with _Block_copy semantics.<br class="">
@@ -2037,7 +2047,7 @@ llvm::Value *CodeGenFunction::EmitARCRet<br class="">
llvm::Value *result<br class="">
= emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_retainBlock,<br class="">
- "objc_retainBlock");<br class="">
+ llvm::Intrinsic::objc_retainBlock);<br class="">
<br class="">
// If the copy isn't mandatory, add !clang.arc.copy_on_escape to<br class="">
// tell the optimizer that it doesn't need to do this copy if the<br class="">
@@ -2107,7 +2117,7 @@ CodeGenFunction::EmitARCRetainAutoreleas<br class="">
emitAutoreleasedReturnValueMarker(*this);<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_retainAutoreleasedReturnValue,<br class="">
- "objc_retainAutoreleasedReturnValue");<br class="">
+ llvm::Intrinsic::objc_retainAutoreleasedReturnValue);<br class="">
}<br class="">
<br class="">
/// Claim a possibly-autoreleased return value at +0. This is only<br class="">
@@ -2122,7 +2132,7 @@ CodeGenFunction::EmitARCUnsafeClaimAutor<br class="">
emitAutoreleasedReturnValueMarker(*this);<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_unsafeClaimAutoreleasedReturnValue,<br class="">
- "objc_unsafeClaimAutoreleasedReturnValue");<br class="">
+ llvm::Intrinsic::objc_unsafeClaimAutoreleasedReturnValue);<br class="">
}<br class="">
<br class="">
/// Release the given object.<br class="">
@@ -2133,9 +2143,8 @@ void CodeGenFunction::EmitARCRelease(llv<br class="">
<br class="">
llvm::Constant *&fn = CGM.getObjCEntrypoints().objc_release;<br class="">
if (!fn) {<br class="">
- llvm::FunctionType *fnType =<br class="">
- llvm::FunctionType::get(Builder.getVoidTy(), Int8PtrTy, false);<br class="">
- fn = createARCRuntimeFunction(CGM, fnType, "objc_release");<br class="">
+ fn = CGM.getIntrinsic(llvm::Intrinsic::objc_release);<br class="">
+ setARCRuntimeFunctionLinkage(CGM, fn);<br class="">
}<br class="">
<br class="">
// Cast the argument to 'id'.<br class="">
@@ -2180,10 +2189,8 @@ llvm::Value *CodeGenFunction::EmitARCSto<br class="">
<br class="">
llvm::Constant *&fn = CGM.getObjCEntrypoints().objc_storeStrong;<br class="">
if (!fn) {<br class="">
- llvm::Type *argTypes[] = { Int8PtrPtrTy, Int8PtrTy };<br class="">
- llvm::FunctionType *fnType<br class="">
- = llvm::FunctionType::get(Builder.getVoidTy(), argTypes, false);<br class="">
- fn = createARCRuntimeFunction(CGM, fnType, "objc_storeStrong");<br class="">
+ fn = CGM.getIntrinsic(llvm::Intrinsic::objc_storeStrong);<br class="">
+ setARCRuntimeFunctionLinkage(CGM, fn);<br class="">
}<br class="">
<br class="">
llvm::Value *args[] = {<br class="">
@@ -2237,7 +2244,7 @@ llvm::Value *CodeGenFunction::EmitARCSto<br class="">
llvm::Value *CodeGenFunction::EmitARCAutorelease(llvm::Value *value) {<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_autorelease,<br class="">
- "objc_autorelease");<br class="">
+ llvm::Intrinsic::objc_autorelease);<br class="">
}<br class="">
<br class="">
/// Autorelease the given object.<br class="">
@@ -2246,7 +2253,7 @@ llvm::Value *<br class="">
CodeGenFunction::EmitARCAutoreleaseReturnValue(llvm::Value *value) {<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_autoreleaseReturnValue,<br class="">
- "objc_autoreleaseReturnValue",<br class="">
+ llvm::Intrinsic::objc_autoreleaseReturnValue,<br class="">
/*isTailCall*/ true);<br class="">
}<br class="">
<br class="">
@@ -2256,7 +2263,7 @@ llvm::Value *<br class="">
CodeGenFunction::EmitARCRetainAutoreleaseReturnValue(llvm::Value *value) {<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_retainAutoreleaseReturnValue,<br class="">
- "objc_retainAutoreleaseReturnValue",<br class="">
+ llvm::Intrinsic::objc_retainAutoreleaseReturnValue,<br class="">
/*isTailCall*/ true);<br class="">
}<br class="">
<br class="">
@@ -2285,7 +2292,7 @@ llvm::Value *<br class="">
CodeGenFunction::EmitARCRetainAutoreleaseNonBlock(llvm::Value *value) {<br class="">
return emitARCValueOperation(*this, value, nullptr,<br class="">
CGM.getObjCEntrypoints().objc_retainAutorelease,<br class="">
- "objc_retainAutorelease");<br class="">
+ llvm::Intrinsic::objc_retainAutorelease);<br class="">
}<br class="">
<br class="">
/// i8* \@objc_loadWeak(i8** %addr)<br class="">
@@ -2293,14 +2300,14 @@ CodeGenFunction::EmitARCRetainAutoreleas<br class="">
llvm::Value *CodeGenFunction::EmitARCLoadWeak(Address addr) {<br class="">
return emitARCLoadOperation(*this, addr,<br class="">
CGM.getObjCEntrypoints().objc_loadWeak,<br class="">
- "objc_loadWeak");<br class="">
+ llvm::Intrinsic::objc_loadWeak);<br class="">
}<br class="">
<br class="">
/// i8* \@objc_loadWeakRetained(i8** %addr)<br class="">
llvm::Value *CodeGenFunction::EmitARCLoadWeakRetained(Address addr) {<br class="">
return emitARCLoadOperation(*this, addr,<br class="">
CGM.getObjCEntrypoints().objc_loadWeakRetained,<br class="">
- "objc_loadWeakRetained");<br class="">
+ llvm::Intrinsic::objc_loadWeakRetained);<br class="">
}<br class="">
<br class="">
/// i8* \@objc_storeWeak(i8** %addr, i8* %value)<br class="">
@@ -2310,7 +2317,7 @@ llvm::Value *CodeGenFunction::EmitARCSto<br class="">
bool ignored) {<br class="">
return emitARCStoreOperation(*this, addr, value,<br class="">
CGM.getObjCEntrypoints().objc_storeWeak,<br class="">
- "objc_storeWeak", ignored);<br class="">
+ llvm::Intrinsic::objc_storeWeak, ignored);<br class="">
}<br class="">
<br class="">
/// i8* \@objc_initWeak(i8** %addr, i8* %value)<br class="">
@@ -2330,7 +2337,7 @@ void CodeGenFunction::EmitARCInitWeak(Ad<br class="">
<br class="">
emitARCStoreOperation(*this, addr, value,<br class="">
CGM.getObjCEntrypoints().objc_initWeak,<br class="">
- "objc_initWeak", /*ignored*/ true);<br class="">
+ llvm::Intrinsic::objc_initWeak, /*ignored*/ true);<br class="">
}<br class="">
<br class="">
/// void \@objc_destroyWeak(i8** %addr)<br class="">
@@ -2338,9 +2345,8 @@ void CodeGenFunction::EmitARCInitWeak(Ad<br class="">
void CodeGenFunction::EmitARCDestroyWeak(Address addr) {<br class="">
llvm::Constant *&fn = CGM.getObjCEntrypoints().objc_destroyWeak;<br class="">
if (!fn) {<br class="">
- llvm::FunctionType *fnType =<br class="">
- llvm::FunctionType::get(Builder.getVoidTy(), Int8PtrPtrTy, false);<br class="">
- fn = createARCRuntimeFunction(CGM, fnType, "objc_destroyWeak");<br class="">
+ fn = CGM.getIntrinsic(llvm::Intrinsic::objc_destroyWeak);<br class="">
+ setARCRuntimeFunctionLinkage(CGM, fn);<br class="">
}<br class="">
<br class="">
// Cast the argument to 'id*'.<br class="">
@@ -2355,7 +2361,7 @@ void CodeGenFunction::EmitARCDestroyWeak<br class="">
void CodeGenFunction::EmitARCMoveWeak(Address dst, Address src) {<br class="">
emitARCCopyOperation(*this, dst, src,<br class="">
CGM.getObjCEntrypoints().objc_moveWeak,<br class="">
- "objc_moveWeak");<br class="">
+ llvm::Intrinsic::objc_moveWeak);<br class="">
}<br class="">
<br class="">
/// void \@objc_copyWeak(i8** %dest, i8** %src)<br class="">
@@ -2364,7 +2370,7 @@ void CodeGenFunction::EmitARCMoveWeak(Ad<br class="">
void CodeGenFunction::EmitARCCopyWeak(Address dst, Address src) {<br class="">
emitARCCopyOperation(*this, dst, src,<br class="">
CGM.getObjCEntrypoints().objc_copyWeak,<br class="">
- "objc_copyWeak");<br class="">
+ llvm::Intrinsic::objc_copyWeak);<br class="">
}<br class="">
<br class="">
void CodeGenFunction::emitARCCopyAssignWeak(QualType Ty, Address DstAddr,<br class="">
@@ -2387,9 +2393,8 @@ void CodeGenFunction::emitARCMoveAssignW<br class="">
llvm::Value *CodeGenFunction::EmitObjCAutoreleasePoolPush() {<br class="">
llvm::Constant *&fn = CGM.getObjCEntrypoints().objc_autoreleasePoolPush;<br class="">
if (!fn) {<br class="">
- llvm::FunctionType *fnType =<br class="">
- llvm::FunctionType::get(Int8PtrTy, false);<br class="">
- fn = createARCRuntimeFunction(CGM, fnType, "objc_autoreleasePoolPush");<br class="">
+ fn = CGM.getIntrinsic(llvm::Intrinsic::objc_autoreleasePoolPush);<br class="">
+ setARCRuntimeFunctionLinkage(CGM, fn);<br class="">
}<br class="">
<br class="">
return EmitNounwindRuntimeCall(fn);<br class="">
@@ -2400,18 +2405,28 @@ llvm::Value *CodeGenFunction::EmitObjCAu<br class="">
void CodeGenFunction::EmitObjCAutoreleasePoolPop(llvm::Value *value) {<br class="">
assert(value->getType() == Int8PtrTy);<br class="">
<br class="">
- llvm::Constant *&fn = CGM.getObjCEntrypoints().objc_autoreleasePoolPop;<br class="">
- if (!fn) {<br class="">
- llvm::FunctionType *fnType =<br class="">
- llvm::FunctionType::get(Builder.getVoidTy(), Int8PtrTy, false);<br class="">
+ if (getInvokeDest()) {<br class="">
+ // Call the runtime method not the intrinsic if we are handling exceptions<br class="">
+ llvm::Constant *&fn =<br class="">
+ CGM.getObjCEntrypoints().objc_autoreleasePoolPopInvoke;<br class="">
+ if (!fn) {<br class="">
+ llvm::FunctionType *fnType =<br class="">
+ llvm::FunctionType::get(Builder.getVoidTy(), Int8PtrTy, false);<br class="">
+ fn = CGM.CreateRuntimeFunction(fnType, "objc_autoreleasePoolPop");<br class="">
+ setARCRuntimeFunctionLinkage(CGM, fn);<br class="">
+ }<br class="">
<br class="">
- // We don't want to use a weak import here; instead we should not<br class="">
- // fall into this path.<br class="">
- fn = createARCRuntimeFunction(CGM, fnType, "objc_autoreleasePoolPop");<br class="">
- }<br class="">
+ // objc_autoreleasePoolPop can throw.<br class="">
+ EmitRuntimeCallOrInvoke(fn, value);<br class="">
+ } else {<br class="">
+ llvm::Constant *&fn = CGM.getObjCEntrypoints().objc_autoreleasePoolPop;<br class="">
+ if (!fn) {<br class="">
+ fn = CGM.getIntrinsic(llvm::Intrinsic::objc_autoreleasePoolPop);<br class="">
+ setARCRuntimeFunctionLinkage(CGM, fn);<br class="">
+ }<br class="">
<br class="">
- // objc_autoreleasePoolPop can throw.<br class="">
- EmitRuntimeCallOrInvoke(fn, value);<br class="">
+ EmitRuntimeCall(fn, value);<br class="">
+ }<br class="">
}<br class="">
<br class="">
/// Produce the code to do an MRR version objc_autoreleasepool_push.<br class="">
@@ -2446,18 +2461,18 @@ llvm::Value *CodeGenFunction::EmitObjCMR<br class="">
/// call i8* \@objc_alloc(i8* %value)<br class="">
llvm::Value *CodeGenFunction::EmitObjCAlloc(llvm::Value *value,<br class="">
llvm::Type *resultType) {<br class="">
- return emitARCValueOperation(*this, value, resultType,<br class="">
- CGM.getObjCEntrypoints().objc_alloc,<br class="">
- "objc_alloc");<br class="">
+ return emitObjCValueOperation(*this, value, resultType,<br class="">
+ CGM.getObjCEntrypoints().objc_alloc,<br class="">
+ "objc_alloc");<br class="">
}<br class="">
<br class="">
/// Allocate the given objc object.<br class="">
/// call i8* \@objc_allocWithZone(i8* %value)<br class="">
llvm::Value *CodeGenFunction::EmitObjCAllocWithZone(llvm::Value *value,<br class="">
llvm::Type *resultType) {<br class="">
- return emitARCValueOperation(*this, value, resultType,<br class="">
- CGM.getObjCEntrypoints().objc_allocWithZone,<br class="">
- "objc_allocWithZone");<br class="">
+ return emitObjCValueOperation(*this, value, resultType,<br class="">
+ CGM.getObjCEntrypoints().objc_allocWithZone,<br class="">
+ "objc_allocWithZone");<br class="">
}<br class="">
<br class="">
/// Produce the code to do a primitive release.<br class="">
<br class="">
Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)<br class="">
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Tue Dec 18 12:33:00 2018<br class="">
@@ -128,6 +128,10 @@ struct ObjCEntrypoints {<br class="">
/// void objc_autoreleasePoolPop(void*);<br class="">
llvm::Constant *objc_autoreleasePoolPop;<br class="">
<br class="">
+ /// void objc_autoreleasePoolPop(void*);<br class="">
+ /// Note this method is used when we are using exception handling<br class="">
+ llvm::Constant *objc_autoreleasePoolPopInvoke;<br class="">
+<br class="">
/// void *objc_autoreleasePoolPush(void);<br class="">
llvm::Constant *objc_autoreleasePoolPush;<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-arm.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-arm.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-arm.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-arm.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-arm.m Tue Dec 18 12:33:00 2018<br class="">
@@ -14,9 +14,9 @@ void test1(void) {<br class="">
extern id test1_helper(void);<br class="">
// CHECK: [[T0:%.*]] = call [[CC]]i8* @test1_helper()<br class="">
// CHECK-NEXT: call void asm sideeffect "mov\09{{fp, fp|r7, r7}}\09\09// marker for objc_retainAutoreleaseReturnValue"<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call [[CC]]i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call [[CC]]i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]],<br class="">
- // CHECK-NEXT: call [[CC]]void @objc_storeStrong(<br class="">
+ // CHECK-NEXT: call [[CC]]void @llvm.objc.storeStrong(<br class="">
// CHECK-NEXT: ret void<br class="">
id x = test1_helper();<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-block-copy-escape.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-block-copy-escape.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-block-copy-escape.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-block-copy-escape.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-block-copy-escape.m Tue Dec 18 12:33:00 2018<br class="">
@@ -9,14 +9,14 @@ void use_int(int);<br class="">
void test0(int i) {<br class="">
block_t block = ^{ use_int(i); };<br class="">
// CHECK-LABEL: define {{.*}}void @test0(<br class="">
- // CHECK: call {{.*}}i8* @objc_retainBlock(i8* {{%.*}}) [[NUW:#[0-9]+]], !clang.arc.copy_on_escape<br class="">
+ // CHECK: call {{.*}}i8* @llvm.objc.retainBlock(i8* {{%.*}}) [[NUW:#[0-9]+]], !clang.arc.copy_on_escape<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
void test1(int i) {<br class="">
id block = ^{ use_int(i); };<br class="">
// CHECK-LABEL: define {{.*}}void @test1(<br class="">
- // CHECK: call {{.*}}i8* @objc_retainBlock(i8* {{%.*}}) [[NUW]]<br class="">
+ // CHECK: call {{.*}}i8* @llvm.objc.retainBlock(i8* {{%.*}}) [[NUW]]<br class="">
// CHECK-NOT: !clang.arc.copy_on_escape<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-blocks.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-blocks.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-blocks.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-blocks.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-blocks.m Tue Dec 18 12:33:00 2018<br class="">
@@ -19,10 +19,10 @@ int (^test1(int x))(void) {<br class="">
// CHECK-NEXT: store i32 {{%.*}}, i32* [[X]]<br class="">
// CHECK: [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to i32 ()*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i32 ()* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]]) [[NUW:#[0-9]+]]<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i32 ()*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i32 ()* [[T3]] to i8*<br class="">
- // CHECK-NEXT: [[T5:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T4]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[T5:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T4]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T6:%.*]] = bitcast i8* [[T5]] to i32 ()*<br class="">
// CHECK-NEXT: ret i32 ()* [[T6]]<br class="">
return ^{ return x; };<br class="">
@@ -32,19 +32,19 @@ void test2(id x) {<br class="">
// CHECK-LABEL: define void @test2(<br class="">
// CHECK: [[X:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],<br class="">
-// CHECK-NEXT: [[PARM:%.*]] = call i8* @objc_retain(i8* {{%.*}})<br class="">
+// CHECK-NEXT: [[PARM:%.*]] = call i8* @llvm.objc.retain(i8* {{%.*}})<br class="">
// CHECK-NEXT: store i8* [[PARM]], i8** [[X]]<br class="">
// CHECK-NEXT: [[SLOTREL:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]],<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[SLOT]],<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: call void @test2_helper(<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[SLOTREL]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: ret void<br class="">
extern void test2_helper(id (^)(void));<br class="">
test2_helper(^{ return x; });<br class="">
@@ -56,7 +56,7 @@ void test2(id x) {<br class="">
// CHECK-NEXT: [[DST:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*<br class="">
// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[SRC]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]]) [[NUW]]<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
<br class="">
@@ -65,7 +65,7 @@ void test2(id x) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[BLOCK_T]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[T1]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** [[T2]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T3]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T3]])<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -78,7 +78,7 @@ void test3(void (^sink)(id*)) {<br class="">
// CHECK-NEXT: [[STRONG:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: [[TEMP:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: bitcast void (i8**)* {{%.*}} to i8*<br class="">
- // CHECK-NEXT: call i8* @objc_retain(<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retain(<br class="">
// CHECK-NEXT: bitcast i8*<br class="">
// CHECK-NEXT: store void (i8**)* {{%.*}}, void (i8**)** [[SINK]]<br class="">
// CHECK-NEXT: [[STRONGPTR1:%.*]] = bitcast i8** [[STRONG]] to i8*<br class="">
@@ -95,20 +95,20 @@ void test3(void (^sink)(id*)) {<br class="">
// CHECK-NEXT: [[F1:%.*]] = bitcast i8* [[F0]] to void (i8*, i8**)*<br class="">
// CHECK-NEXT: call void [[F1]](i8* [[BLOCK]], i8** [[TEMP]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[TEMP]]<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[V]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[STRONG]]<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[STRONG]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[STRONG]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[STRONGPTR2:%.*]] = bitcast i8** [[STRONG]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[STRONGPTR2]])<br class="">
<br class="">
// CHECK-NEXT: load void (i8**)*, void (i8**)** [[SINK]]<br class="">
// CHECK-NEXT: bitcast<br class="">
- // CHECK-NEXT: call void @objc_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
}<br class="">
@@ -127,7 +127,7 @@ void test4(void) {<br class="">
// CHECK-NEXT: store i32 838860800, i32* [[T0]]<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[VAR]], i32 0, i32 6<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test4_source()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[SLOT]]<br class="">
// CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[VAR]], i32 0, i32 6<br class="">
// 0x42800000 - has signature, copy/dispose helpers, as well as BLOCK_HAS_EXTENDED_LAYOUT<br class="">
@@ -138,7 +138,7 @@ void test4(void) {<br class="">
// CHECK: [[T0:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*<br class="">
// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[SLOT]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK: ret void<br class="">
<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_copy_(i8*, i8*) #{{[0-9]+}} {<br class="">
@@ -153,13 +153,13 @@ void test4(void) {<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_dispose_(i8*) #{{[0-9]+}} {<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* {{%.*}}, i32 0, i32 6<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[T0]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
// CHECK-LABEL: define internal void @__test4_block_invoke<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds {{.*}}, i32 0, i32 6<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[SLOT]], align 8<br class="">
// CHECK-NEXT: store i8* null, i8** [[SLOT]],<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_8_32r(i8*, i8*) unnamed_addr #{{[0-9]+}} {<br class="">
@@ -181,9 +181,9 @@ void test5(void) {<br class="">
// CHECK-NEXT: [[VARPTR1:%.*]] = bitcast i8** [[VAR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[VARPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call i8* @test5_source()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[VAR]],<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// 0x40800000 - has signature but no copy/dispose, as well as BLOCK_HAS_EXTENDED_LAYOUT<br class="">
// CHECK: store i32 -1073741824, i32*<br class="">
// CHECK: [[CAPTURE:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
@@ -212,9 +212,9 @@ void test6(void) {<br class="">
// CHECK-NEXT: store i32 1107296256, i32* [[T0]]<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[VAR]], i32 0, i32 6<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test6_source()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
- // CHECK-NEXT: call i8* @objc_initWeak(i8** [[SLOT]], i8* [[T1]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[SLOT]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[VAR]], i32 0, i32 6<br class="">
// 0x42800000 - has signature, copy/dispose helpers, as well as BLOCK_HAS_EXTENDED_LAYOUT<br class="">
// CHECK: store i32 -1040187392,<br class="">
@@ -225,7 +225,7 @@ void test6(void) {<br class="">
// CHECK: call void @test6_helper(<br class="">
// CHECK: [[T0:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*<br class="">
// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[SLOT]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[SLOT]])<br class="">
// CHECK-NEXT: [[VARPTR2:%.*]] = bitcast [[BYREF_T]]* [[VAR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 48, i8* [[VARPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -235,15 +235,15 @@ void test6(void) {<br class="">
// CHECK-NEXT: load i8*, i8**<br class="">
// CHECK-NEXT: bitcast i8* {{%.*}} to [[BYREF_T]]*<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* {{%.*}}, i32 0, i32 6<br class="">
- // CHECK-NEXT: call void @objc_moveWeak(i8** [[T0]], i8** [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[T0]], i8** [[T1]])<br class="">
<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_dispose_.{{[0-9]+}}(i8*) #{{[0-9]+}} {<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* {{%.*}}, i32 0, i32 6<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]])<br class="">
<br class="">
// CHECK-LABEL: define internal void @__test6_block_invoke<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds {{.*}}, i32 0, i32 6<br class="">
- // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[SLOT]], i8* null)<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[SLOT]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -258,33 +258,33 @@ void test7(void) {<br class="">
// CHECK: [[VAR:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],<br class="">
// CHECK: [[T0:%.*]] = call i8* @test7_source()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
- // CHECK-NEXT: call i8* @objc_initWeak(i8** [[VAR]], i8* [[T1]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[VAR]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// 0x42800000 - has signature, copy/dispose helpers, as well as BLOCK_HAS_EXTENDED_LAYOUT<br class="">
// CHECK: store i32 -1040187392,<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
- // CHECK-NEXT: call void @objc_copyWeak(i8** [[SLOT]], i8** [[VAR]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.copyWeak(i8** [[SLOT]], i8** [[VAR]])<br class="">
// CHECK: call void @test7_helper(<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** {{%.*}})<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[VAR]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** {{%.*}})<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[VAR]])<br class="">
// CHECK: ret void<br class="">
<br class="">
// CHECK-LABEL: define internal void @__test7_block_invoke<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* {{%.*}}, i32 0, i32 5<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[SLOT]])<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[SLOT]])<br class="">
// CHECK-NEXT: call void @test7_consume(i8* [[T0]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK: ret void<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_8_32w(i8*, i8*) unnamed_addr #{{[0-9]+}} {<br class="">
// CHECK: getelementptr<br class="">
// CHECK-NEXT: getelementptr<br class="">
- // CHECK-NEXT: call void @objc_copyWeak(<br class="">
+ // CHECK-NEXT: call void @llvm.objc.copyWeak(<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_8_32w(i8*) unnamed_addr #{{[0-9]+}} {<br class="">
// CHECK: getelementptr<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(<br class="">
}<br class="">
<br class="">
@interface Test8 @end<br class="">
@@ -323,11 +323,11 @@ id test9(void) {<br class="">
// CHECK: load i8*, i8** getelementptr<br class="">
// CHECK-NEXT: bitcast i8*<br class="">
// CHECK-NEXT: call i8* <br class="">
-// CHECK-NEXT: tail call i8* @objc_autoreleaseReturnValue<br class="">
+// CHECK-NEXT: tail call i8* @llvm.objc.autoreleaseReturnValue<br class="">
// CHECK-NEXT: ret i8*<br class="">
<br class="">
// CHECK: call i8* @test9_produce()<br class="">
-// CHECK-NEXT: call i8* @objc_retain<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.retain<br class="">
// CHECK-NEXT: ret i8*<br class="">
}<br class="">
<br class="">
@@ -345,7 +345,7 @@ void test10a(void) {<br class="">
<br class="">
// Run the initializer as an assignment.<br class="">
// CHECK: [[T0:%.*]] = bitcast void ()* {{%.*}} to i8*<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainBlock(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to void ()*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[BYREF]], i32 0, i32 1<br class="">
// CHECK-NEXT: [[T4:%.*]] = load [[BYREF_T]]*, [[BYREF_T]]** [[T3]]<br class="">
@@ -353,7 +353,7 @@ void test10a(void) {<br class="">
// CHECK-NEXT: [[T6:%.*]] = load void ()*, void ()** [[T5]], align 8<br class="">
// CHECK-NEXT: store void ()* {{%.*}}, void ()** [[T5]], align 8<br class="">
// CHECK-NEXT: [[T7:%.*]] = bitcast void ()* [[T6]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T7]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T7]])<br class="">
<br class="">
// Destroy at end of function.<br class="">
// CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[BYREF]], i32 0, i32 6<br class="">
@@ -361,7 +361,7 @@ void test10a(void) {<br class="">
// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)<br class="">
// CHECK-NEXT: [[T1:%.*]] = load void ()*, void ()** [[SLOT]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast void ()* [[T1]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -379,7 +379,7 @@ void test10a(void) {<br class="">
// CHECK-NEXT: [[S2:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[S1]], i32 0, i32 6<br class="">
// CHECK-NEXT: [[T0:%.*]] = load void ()*, void ()** [[S2]], align 8<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*<br class="">
// CHECK-NEXT: store void ()* [[T3]], void ()** [[D2]], align 8<br class="">
// CHECK: ret void<br class="">
@@ -390,7 +390,7 @@ void test10a(void) {<br class="">
// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[T1]], i32 0, i32 6<br class="">
// CHECK-NEXT: [[T3:%.*]] = load void ()*, void ()** [[T2]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast void ()* [[T3]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T4]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T4]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// Test that we correctly assign to __block variables when the<br class="">
@@ -410,7 +410,7 @@ void test10b(void) {<br class="">
<br class="">
// The assignment.<br class="">
// CHECK: [[T0:%.*]] = bitcast void ()* {{%.*}} to i8*<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainBlock(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to void ()*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds [[BYREF_T]], [[BYREF_T]]* [[BYREF]], i32 0, i32 1<br class="">
// CHECK-NEXT: [[T4:%.*]] = load [[BYREF_T]]*, [[BYREF_T]]** [[T3]]<br class="">
@@ -418,14 +418,14 @@ void test10b(void) {<br class="">
// CHECK-NEXT: [[T6:%.*]] = load void ()*, void ()** [[T5]], align 8<br class="">
// CHECK-NEXT: store void ()* {{%.*}}, void ()** [[T5]], align 8<br class="">
// CHECK-NEXT: [[T7:%.*]] = bitcast void ()* [[T6]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T7]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T7]])<br class="">
<br class="">
// Destroy at end of function.<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BYREF_T]]* [[BYREF]] to i8*<br class="">
// CHECK-NEXT: call void @_Block_object_dispose(i8* [[T0]], i32 8)<br class="">
// CHECK-NEXT: [[T1:%.*]] = load void ()*, void ()** [[SLOT]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast void ()* [[T1]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -440,12 +440,12 @@ void test11a(void) {<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], align 8<br class="">
// CHECK: [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast void ()* [[T3]] to i8*<br class="">
// CHECK-NEXT: call void @test11_helper(i8* [[T4]])<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast void ()* [[T3]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T5]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T5]])<br class="">
// CHECK: ret void<br class="">
}<br class="">
void test11b(void) {<br class="">
@@ -458,12 +458,12 @@ void test11b(void) {<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], align 8<br class="">
// CHECK: [[T0:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast void ()* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[B]], align 8<br class="">
// CHECK-NEXT: [[T5:%.*]] = load i8*, i8** [[B]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T5]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T5]])<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -500,7 +500,7 @@ void test13(id x) {<br class="">
// CHECK-NEXT: [[B:%.*]] = alloca void ()*, align 8<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:.*]], align 8<br class="">
// CHECK-NEXT: [[CLEANUP_ACTIVE:%.*]] = alloca i1<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* {{%.*}})<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* {{%.*}})<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[X]], align 8<br class="">
// CHECK-NEXT: [[BPTR1:%.*]] = bitcast void ()** [[B]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[BPTR1]])<br class="">
@@ -513,7 +513,7 @@ void test13(id x) {<br class="">
// CHECK-NOT: br<br class="">
// CHECK: [[CAPTURE:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]], align 8<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[CAPTURE]], align 8<br class="">
// CHECK-NEXT: store i1 true, i1* [[CLEANUP_ACTIVE]]<br class="">
// CHECK-NEXT: bitcast [[BLOCK_T]]* [[BLOCK]] to void ()*<br class="">
@@ -521,25 +521,25 @@ void test13(id x) {<br class="">
// CHECK: br label<br class="">
// CHECK: [[T0:%.*]] = phi void ()*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*<br class="">
// CHECK-NEXT: store void ()* [[T3]], void ()** [[B]], align 8<br class="">
// CHECK-NEXT: [[T0:%.*]] = load void ()*, void ()** [[B]], align 8<br class="">
// CHECK-NEXT: call void @test13_use(void ()* [[T0]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load void ()*, void ()** [[B]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i1, i1* [[CLEANUP_ACTIVE]]<br class="">
// CHECK-NEXT: br i1 [[T0]]<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[CLEANUP_ADDR]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: br label<br class="">
<br class="">
// CHECK: [[BPTR2:%.*]] = bitcast void ()** [[B]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[BPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -586,7 +586,7 @@ id (^test17(id self, int which))(void) {<br class="">
// CHECK-NEXT: [[SELF:%.*]] = alloca i8*,<br class="">
// CHECK: [[B0:%.*]] = alloca [[BLOCK:<.*>]], align<br class="">
// CHECK: [[B1:%.*]] = alloca [[BLOCK]], align<br class="">
-// CHECK: [[T0:%.*]] = call i8* @objc_retain(i8*<br class="">
+// CHECK: [[T0:%.*]] = call i8* @llvm.objc.retain(i8*<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[SELF]], align<br class="">
// CHECK-NOT: objc_retain<br class="">
// CHECK-NOT: objc_release<br class="">
@@ -595,15 +595,15 @@ id (^test17(id self, int which))(void) {<br class="">
// CHECK-NOT: objc_release<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[BLOCK]], [[BLOCK]]* [[B0]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[SELF]], align<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: store i8* [[T2]], i8** [[T0]],<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK]]* [[B0]] to i8* ()*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* ()* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8* ()*<br class="">
// CHECK-NEXT: store i8* ()* [[T3]], i8* ()** [[RET]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[DESTROY]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: store i32<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK-NOT: objc_retain<br class="">
@@ -613,15 +613,15 @@ id (^test17(id self, int which))(void) {<br class="">
// CHECK-NOT: objc_release<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[BLOCK]], [[BLOCK]]* [[B1]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[SELF]], align<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: store i8* [[T2]], i8** [[T0]],<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[BLOCK]]* [[B1]] to i8* ()*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* ()* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainBlock(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8* ()*<br class="">
// CHECK-NEXT: store i8* ()* [[T3]], i8* ()** [[RET]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[DESTROY]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: store i32<br class="">
// CHECK-NEXT: br label<br class="">
<br class="">
@@ -630,18 +630,18 @@ void test18(id x) {<br class="">
// CHECK-UNOPT: [[X:%.*]] = alloca i8*,<br class="">
// CHECK-UNOPT-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],<br class="">
// CHECK-UNOPT-NEXT: store i8* null, i8** [[X]]<br class="">
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X]], <br class="">
+// CHECK-UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], <br class="">
// CHECK-UNOPT-NEXT: [[SLOTREL:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-UNOPT: %[[BLOCK_DESCRIPTOR:.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 4<br class="">
// CHECK-UNOPT: store %[[STRUCT_BLOCK_DESCRIPTOR]]* bitcast ({ i64, i64, i8*, i8*, i8*, i64 }* @[[BLOCK_DESCRIPTOR_TMP44]] to %[[STRUCT_BLOCK_DESCRIPTOR]]*), %[[STRUCT_BLOCK_DESCRIPTOR]]** %[[BLOCK_DESCRIPTOR]], align 8<br class="">
// CHECK-UNOPT: [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-UNOPT-NEXT: [[T0:%.*]] = load i8*, i8** [[X]],<br class="">
-// CHECK-UNOPT-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+// CHECK-UNOPT-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-UNOPT-NEXT: store i8* [[T1]], i8** [[SLOT]],<br class="">
// CHECK-UNOPT-NEXT: bitcast<br class="">
// CHECK-UNOPT-NEXT: call void @test18_helper(<br class="">
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[SLOTREL]], i8* null) [[NUW:#[0-9]+]]<br class="">
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null) [[NUW]]<br class="">
+// CHECK-UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[SLOTREL]], i8* null) [[NUW:#[0-9]+]]<br class="">
+// CHECK-UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null) [[NUW]]<br class="">
// CHECK-UNOPT-NEXT: ret void<br class="">
extern void test18_helper(id (^)(void));<br class="">
test18_helper(^{ return x; });<br class="">
@@ -669,7 +669,7 @@ void test19(void (^b)(void)) {<br class="">
// CHECK: [[B:%.*]] = alloca void ()*,<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]],<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast void ()* {{%.*}} to i8*<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to void ()*<br class="">
// CHECK-NEXT: store void ()* [[T2]], void ()** [[B]]<br class="">
<br class="">
@@ -680,7 +680,7 @@ void test19(void (^b)(void)) {<br class="">
// CHECK: [[SLOT:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-NEXT: [[T0:%.*]] = load void ()*, void ()** [[B]],<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to void ()*<br class="">
// CHECK-NEXT: store void ()* [[T3]], void ()** [[SLOT]],<br class="">
// Call.<br class="">
@@ -692,12 +692,12 @@ void test19(void (^b)(void)) {<br class="">
// Block teardown.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load void ()*, void ()** [[SLOTREL]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
// Local cleanup.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load void ()*, void ()** [[B]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast void ()* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
@@ -705,7 +705,7 @@ void test19(void (^b)(void)) {<br class="">
// CHECK-LABEL: define void @test20(<br class="">
// CHECK: [[XADDR:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: [[BLOCK:%.*]] = alloca <[[BLOCKTY:.*]]><br class="">
-// CHECK-NEXT: [[RETAINEDX:%.*]] = call i8* @objc_retain(i8* %{{.*}})<br class="">
+// CHECK-NEXT: [[RETAINEDX:%.*]] = call i8* @llvm.objc.retain(i8* %{{.*}})<br class="">
// CHECK-NEXT: store i8* [[RETAINEDX]], i8** [[XADDR]]<br class="">
// CHECK-NEXT: [[CAPTUREFIELD:%.*]] = getelementptr inbounds <[[BLOCKTY]]>, <[[BLOCKTY]]>* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK: [[BLOCKCAPTURED:%.*]] = getelementptr inbounds <[[BLOCKTY]]>, <[[BLOCKTY]]>* [[BLOCK]], i32 0, i32 5<br class="">
@@ -714,7 +714,7 @@ void test19(void (^b)(void)) {<br class="">
// CHECK: [[CAPTURE:%.*]] = load i8*, i8** [[CAPTUREFIELD]]<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[CAPTURE]])<br class="">
// CHECK-NEXT: [[X:%.*]] = load i8*, i8** [[XADDR]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[X]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[X]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// CHECK-UNOPT-LABEL: define void @test20(<br class="">
@@ -723,9 +723,9 @@ void test19(void (^b)(void)) {<br class="">
// CHECK-UNOPT: [[CAPTUREFIELD:%.*]] = getelementptr inbounds <[[BLOCKTY]]>, <[[BLOCKTY]]>* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-UNOPT: [[BLOCKCAPTURED:%.*]] = getelementptr inbounds <[[BLOCKTY]]>, <[[BLOCKTY]]>* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-UNOPT: [[CAPTURED:%.*]] = load i8*, i8** [[XADDR]]<br class="">
-// CHECK-UNOPT: [[RETAINED:%.*]] = call i8* @objc_retain(i8* [[CAPTURED]])<br class="">
+// CHECK-UNOPT: [[RETAINED:%.*]] = call i8* @llvm.objc.retain(i8* [[CAPTURED]])<br class="">
// CHECK-UNOPT: store i8* [[RETAINED]], i8** [[BLOCKCAPTURED]]<br class="">
-// CHECK-UNOPT: call void @objc_storeStrong(i8** [[CAPTUREFIELD]], i8* null)<br class="">
+// CHECK-UNOPT: call void @llvm.objc.storeStrong(i8** [[CAPTUREFIELD]], i8* null)<br class="">
<br class="">
void test20_callee(void (^)());<br class="">
void test20(const id x) {<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-bridged-cast.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-bridged-cast.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-bridged-cast.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-bridged-cast.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-bridged-cast.m Tue Dec 18 12:33:00 2018<br class="">
@@ -27,10 +27,10 @@ void bridge_transfer_from_cf(int *i) {<br class="">
// CHECK-NOT: retain<br class="">
// CHECK: store i32 13<br class="">
(void)(__bridge_transfer id)CFCreateSomething(), *i = 13;<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: store i32 17<br class="">
*i = 17;<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -42,7 +42,7 @@ void bridge_from_cf(int *i) {<br class="">
*i = 7;<br class="">
// CHECK: call i8* @CFCreateSomething()<br class="">
id obj1 = (__bridge id)CFCreateSomething();<br class="">
- // CHECK: objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: llvm.objc.retainAutoreleasedReturnValue<br class="">
// CHECK: store i32 11<br class="">
*i = 11;<br class="">
// CHECK: call i8* @CFCreateSomething()<br class="">
@@ -51,7 +51,7 @@ void bridge_from_cf(int *i) {<br class="">
(void)(__bridge id)CFCreateSomething(), *i = 13;<br class="">
// CHECK: store i32 17<br class="">
*i = 17;<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -62,12 +62,12 @@ void bridge_retained_of_cf(int *i) {<br class="">
*i = 7;<br class="">
// CHECK: call i8* @CreateSomething()<br class="">
CFTypeRef cf1 = (__bridge_retained CFTypeRef)CreateSomething();<br class="">
- // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
// CHECK: store i32 11<br class="">
*i = 11;<br class="">
// CHECK: call i8* @CreateSomething()<br class="">
(__bridge_retained CFTypeRef)CreateSomething(), *i = 13;<br class="">
- // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
// CHECK: store i32 13<br class="">
// CHECK: store i32 17<br class="">
*i = 17;<br class="">
@@ -99,8 +99,8 @@ void bridge_of_cf(int *i) {<br class="">
<br class="">
// CHECK-LABEL: define %struct.__CFString* @bridge_of_paren_expr()<br class="">
CFStringRef bridge_of_paren_expr() {<br class="">
- // CHECK-NOT: call i8* @objc_retainAutoreleasedReturnValue(<br class="">
- // CHECK-NOT: call void @objc_release(<br class="">
+ // CHECK-NOT: call i8* @llvm.objc.retainAutoreleasedReturnValue(<br class="">
+ // CHECK-NOT: call void @llvm.objc.release(<br class="">
CFStringRef r = (__bridge CFStringRef)(CreateNSString());<br class="">
r = (__bridge CFStringRef)((NSString *)(CreateNSString()));<br class="">
return r;<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-exceptions.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-exceptions.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-exceptions.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-exceptions.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-exceptions.m Tue Dec 18 12:33:00 2018<br class="">
@@ -17,11 +17,11 @@ void test0(void) {<br class="">
// CHECK: [[T0:%.*]] = call i8* @objc_begin_catch(<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retain(i8* [[T2]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]*<br class="">
// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: call void @objc_end_catch() [[NUW]]<br class="">
<br class="">
void test1_helper(void);<br class="">
@@ -38,9 +38,9 @@ void test1(void) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: call void @objc_end_catch() [[NUW]]<br class="">
<br class="">
// CHECK: attributes [[NUW]] = { nounwind }<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-foreach.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-foreach.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-foreach.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-foreach.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-foreach.m Tue Dec 18 12:33:00 2018<br class="">
@@ -38,7 +38,7 @@ void test0(NSArray *array) {<br class="">
// CHECK-LP64-NEXT: store [[ARRAY_T]]* null, [[ARRAY_T]]** [[ARRAY]]<br class="">
// CHECK-LP64-NEXT: [[ZERO:%.*]] = bitcast [[ARRAY_T]]** [[ARRAY]] to i8**<br class="">
// CHECK-LP64-NEXT: [[ONE:%.*]] = bitcast [[ARRAY_T]]* {{%.*}} to i8*<br class="">
-// CHECK-LP64-NEXT: call void @objc_storeStrong(i8** [[ZERO]], i8* [[ONE]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.storeStrong(i8** [[ZERO]], i8* [[ONE]]) [[NUW:#[0-9]+]]<br class="">
<br class="">
// Initialize the fast enumaration state.<br class="">
// CHECK-LP64-NEXT: [[T0:%.*]] = bitcast [[STATE_T]]* [[STATE]] to i8*<br class="">
@@ -47,7 +47,7 @@ void test0(NSArray *array) {<br class="">
// Evaluate the collection expression and retain.<br class="">
// CHECK-LP64-NEXT: [[T0:%.*]] = load [[ARRAY_T]]*, [[ARRAY_T]]** [[ARRAY]], align 8<br class="">
// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[ARRAY_T]]* [[T0]] to i8*<br class="">
-// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-LP64-NEXT: [[SAVED_ARRAY:%.*]] = bitcast i8* [[T2]] to [[ARRAY_T]]*<br class="">
<br class="">
// Call the enumeration method.<br class="">
@@ -68,11 +68,11 @@ void test0(NSArray *array) {<br class="">
// CHECK-LP64: [[D0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-LP64: [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-LP64-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
-// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-LP64-NEXT: store i8* [[T2]], i8** [[T0]]<br class="">
// CHECK-LP64-NEXT: [[BLOCK1:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]]<br class="">
// CHECK-LP64-NEXT: call void @use_block(void ()* [[BLOCK1]])<br class="">
-// CHECK-LP64-NEXT: call void @objc_storeStrong(i8** [[D0]], i8* null)<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.storeStrong(i8** [[D0]], i8* null)<br class="">
// CHECK-LP64-NOT: call void (...) @clang.arc.use(i8* [[CAPTURE]])<br class="">
<br class="">
// CHECK-LP64-OPT: [[D0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i64 0, i32 5<br class="">
@@ -85,11 +85,11 @@ void test0(NSArray *array) {<br class="">
<br class="">
// Release the array.<br class="">
// CHECK-LP64: [[T0:%.*]] = bitcast [[ARRAY_T]]* [[SAVED_ARRAY]] to i8*<br class="">
-// CHECK-LP64-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
<br class="">
// Destroy 'array'.<br class="">
// CHECK-LP64: [[T0:%.*]] = bitcast [[ARRAY_T]]** [[ARRAY]] to i8**<br class="">
-// CHECK-LP64-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-LP64-NEXT: ret void<br class="">
<br class="">
// CHECK-LP64-LABEL: define internal void @__test0_block_invoke<br class="">
@@ -116,15 +116,15 @@ void test1(NSArray *array) {<br class="">
// CHECK-LP64-NEXT: [[T1:%.*]] = load i8**, i8*** [[T0]]<br class="">
// CHECK-LP64-NEXT: [[T2:%.*]] = getelementptr i8*, i8** [[T1]], i64<br class="">
// CHECK-LP64-NEXT: [[T3:%.*]] = load i8*, i8** [[T2]]<br class="">
-// CHECK-LP64-NEXT: call i8* @objc_initWeak(i8** [[X]], i8* [[T3]])<br class="">
+// CHECK-LP64-NEXT: call i8* @llvm.objc.initWeak(i8** [[X]], i8* [[T3]])<br class="">
<br class="">
// CHECK-LP64: [[D0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-LP64: [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i32 0, i32 5<br class="">
-// CHECK-LP64-NEXT: call void @objc_copyWeak(i8** [[T0]], i8** [[X]])<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.copyWeak(i8** [[T0]], i8** [[X]])<br class="">
// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[BLOCK_T]]* [[BLOCK]] to<br class="">
// CHECK-LP64: call void @use_block<br class="">
-// CHECK-LP64-NEXT: call void @objc_destroyWeak(i8** [[D0]])<br class="">
-// CHECK-LP64-NEXT: call void @objc_destroyWeak(i8** [[X]])<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.destroyWeak(i8** [[D0]])<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.destroyWeak(i8** [[X]])<br class="">
<br class="">
// <a href="rdar://problem/9817306" class="">rdar://problem/9817306</a><br class="">
@interface Test2<br class="">
@@ -139,7 +139,7 @@ void test2(Test2 *a) {<br class="">
// CHECK-LP64-LABEL: define void @test2(<br class="">
// CHECK-LP64: [[T0:%.*]] = call [[ARRAY_T]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to [[ARRAY_T]]* (i8*, i8*)*)(<br class="">
// CHECK-LP64-NEXT: [[T1:%.*]] = bitcast [[ARRAY_T]]* [[T0]] to i8*<br class="">
-// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-LP64-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-LP64-NEXT: [[COLL:%.*]] = bitcast i8* [[T2]] to [[ARRAY_T]]*<br class="">
<br class="">
// Make sure it's not immediately released before starting the iteration.<br class="">
@@ -157,7 +157,7 @@ void test2(Test2 *a) {<br class="">
<br class="">
// This bitcast is for the final release.<br class="">
// CHECK-LP64: [[T0:%.*]] = bitcast [[ARRAY_T]]* [[COLL]] to i8*<br class="">
-// CHECK-LP64-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-LP64-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
<br class="">
<br class="">
// Check that the 'continue' label is positioned appropriately<br class="">
@@ -211,7 +211,7 @@ NSArray *array4;<br class="">
// CHECK-LP64: [[BC:%.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, [[TY]]* }>, <{ i8*, i32, i32, i8*, %struct.__block_descriptor*, [[TY]]* }>* [[BLOCK]], i32 0, i32 5<br class="">
// CHECK-LP64: [[T1:%.*]] = load [[TY]]*, [[TY]]** [[SELF_ADDR]]<br class="">
// CHECK-LP64: [[T2:%.*]] = bitcast [[TY]]* [[T1]] to i8*<br class="">
-// CHECK-LP64: call i8* @objc_retain(i8* [[T2]])<br class="">
+// CHECK-LP64: call i8* @llvm.objc.retain(i8* [[T2]])<br class="">
<br class="">
// CHECK-LP64-OPT-LABEL: define internal void @"\01-[I1 foo2]"(<br class="">
// CHECK-LP64-OPT: [[TY:%.*]]* %self<br class="">
@@ -219,7 +219,7 @@ NSArray *array4;<br class="">
// CHECK-LP64-OPT: [[T0:%.*]] = getelementptr inbounds [[BLOCK_T]], [[BLOCK_T]]* [[BLOCK]], i64 0, i32 5<br class="">
<br class="">
// CHECK-LP64: [[T5:%.*]] = bitcast [[TY]]** [[T0]] to i8**<br class="">
-// CHECK-LP64: call void @objc_storeStrong(i8** [[T5]], i8* null)<br class="">
+// CHECK-LP64: call void @llvm.objc.storeStrong(i8** [[T5]], i8* null)<br class="">
// CHECK-LP64-NOT: call void (...) @clang.arc.use([[TY]]* [[T5]])<br class="">
// CHECK-LP64: switch i32 {{%.*}}, label %[[UNREACHABLE:.*]] [<br class="">
// CHECK-LP64-NEXT: i32 0, label %[[CLEANUP_CONT:.*]]<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-i386.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-i386.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-i386.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-i386.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-i386.m Tue Dec 18 12:33:00 2018<br class="">
@@ -16,9 +16,9 @@ void test1(void) {<br class="">
extern id test1_helper(void);<br class="">
// CHECK: [[T0:%.*]] = call i8* @test1_helper()<br class="">
// CHECK-NEXT: call void asm sideeffect "mov<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]],<br class="">
- // CHECK-NEXT: call void @objc_storeStrong(<br class="">
+ // CHECK-NEXT: call void @llvm.objc.storeStrong(<br class="">
// CHECK-NEXT: ret void<br class="">
id x = test1_helper();<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-linetable-autorelease.m Tue Dec 18 12:33:00 2018<br class="">
@@ -29,8 +29,8 @@ NSRect NSMakeRect(CGFloat x, CGFloat y,<br class="">
CGFloat pattern[2];<br class="">
// CHECK: define {{.*}}_createBezierPathWithWidth<br class="">
// CHECK: load {{.*}} %path, align {{.*}}, !dbg ![[RET:[0-9]+]]<br class="">
- // CHECK: call void @objc_storeStrong{{.*}} !dbg ![[ARC:[0-9]+]]<br class="">
- // CHECK: call {{.*}} @objc_autoreleaseReturnValue{{.*}} !dbg ![[ARC]]<br class="">
+ // CHECK: call void @llvm.objc.storeStrong{{.*}} !dbg ![[ARC:[0-9]+]]<br class="">
+ // CHECK: call {{.*}} @llvm.objc.autoreleaseReturnValue{{.*}} !dbg ![[ARC]]<br class="">
// CHECK: ret {{.*}} !dbg ![[ARC]]<br class="">
// CHECK: ![[RET]] = !DILocation(line: [[@LINE+1]], scope: !{{.*}})<br class="">
return path;<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-linetable.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-linetable.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-linetable.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-linetable.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-linetable.m Tue Dec 18 12:33:00 2018<br class="">
@@ -3,8 +3,8 @@<br class="">
// Legend: EXP = Return expression, RET = ret instruction<br class="">
<br class="">
// CHECK: define {{.*}}testNoSideEffect<br class="">
-// CHECK: call void @objc_storeStrong{{.*}}<br class="">
-// CHECK: call void @objc_storeStrong{{.*}} !dbg ![[RET1:[0-9]+]]<br class="">
+// CHECK: call void @llvm.objc.storeStrong{{.*}}<br class="">
+// CHECK: call void @llvm.objc.storeStrong{{.*}} !dbg ![[RET1:[0-9]+]]<br class="">
// CHECK: ret {{.*}} !dbg ![[RET1]]<br class="">
<br class="">
// CHECK: define {{.*}}testNoCleanup<br class="">
@@ -20,8 +20,8 @@<br class="">
// CHECK: ret {{.*}} !dbg ![[RET4:[0-9]+]]<br class="">
<br class="">
// CHECK: define {{.*}}testVoid<br class="">
-// CHECK: call void @objc_storeStrong{{.*}}<br class="">
-// CHECK: call void @objc_storeStrong{{.*}} !dbg ![[RET5:[0-9]+]]<br class="">
+// CHECK: call void @llvm.objc.storeStrong{{.*}}<br class="">
+// CHECK: call void @llvm.objc.storeStrong{{.*}} !dbg ![[RET5:[0-9]+]]<br class="">
// CHECK: ret {{.*}} !dbg ![[RET5]]<br class="">
<br class="">
// CHECK: define {{.*}}testVoidNoReturn<br class="">
@@ -35,7 +35,7 @@<br class="">
// CHECK: define {{.*}}testCleanupVoid<br class="">
// CHECK: icmp ne {{.*}}!dbg ![[SKIP1:[0-9]+]]<br class="">
// CHECK: store i32 0, i32* {{.*}}, !dbg ![[RET8:[0-9]+]]<br class="">
-// CHECK: @objc_storeStrong{{.*}}, !dbg ![[RET8]]<br class="">
+// CHECK: @llvm.objc.storeStrong{{.*}}, !dbg ![[RET8]]<br class="">
// CHECK: ret {{.*}} !dbg ![[RET8]]<br class="">
<br class="">
typedef signed char BOOL;<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-literals.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-literals.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-literals.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-literals.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-literals.m Tue Dec 18 12:33:00 2018<br class="">
@@ -15,24 +15,24 @@<br class="">
// CHECK-LABEL: define void @test_numeric()<br class="">
void test_numeric() {<br class="">
// CHECK: {{call.*objc_msgSend.*i32 17}}<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
id ilit = @17;<br class="">
// CHECK: {{call.*objc_msgSend.*i32 25}}<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
id ulit = @25u;<br class="">
// CHECK: {{call.*objc_msgSend.*i64 42}}<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
id ulllit = @42ull;<br class="">
// CHECK: {{call.*objc_msgSend.*i8 signext 97}}<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
id charlit = @'a';<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
@@ -43,8 +43,8 @@ void test_array(id a, id b) {<br class="">
// CHECK: [[B:%.*]] = alloca i8*,<br class="">
<br class="">
// Retaining parameters<br class="">
- // CHECK: call i8* @objc_retain(i8*<br class="">
- // CHECK: call i8* @objc_retain(i8*<br class="">
+ // CHECK: call i8* @llvm.objc.retain(i8*<br class="">
+ // CHECK: call i8* @llvm.objc.retain(i8*<br class="">
<br class="">
// Constructing the array<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[OBJECTS:%[A-Za-z0-9]+]], i64 0, i64 0<br class="">
@@ -59,13 +59,13 @@ void test_array(id a, id b) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [2 x i8*]* [[OBJECTS]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = call i8* bitcast ({{.*@objc_msgSend.*}})(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i64 2)<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T3]])<br class="">
// CHECK: call void (...) @clang.arc.use(i8* [[V0]], i8* [[V1]])<br class="">
id arr = @[a, b];<br class="">
<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -77,10 +77,10 @@ void test_dictionary(id k1, id o1, id k2<br class="">
// CHECK: [[O2:%.*]] = alloca i8*,<br class="">
<br class="">
// Retaining parameters<br class="">
- // CHECK: call i8* @objc_retain(i8*<br class="">
- // CHECK: call i8* @objc_retain(i8*<br class="">
- // CHECK: call i8* @objc_retain(i8*<br class="">
- // CHECK: call i8* @objc_retain(i8*<br class="">
+ // CHECK: call i8* @llvm.objc.retain(i8*<br class="">
+ // CHECK: call i8* @llvm.objc.retain(i8*<br class="">
+ // CHECK: call i8* @llvm.objc.retain(i8*<br class="">
+ // CHECK: call i8* @llvm.objc.retain(i8*<br class="">
<br class="">
// Constructing the arrays<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[KEYS:%[A-Za-z0-9]+]], i64 0, i64 0<br class="">
@@ -103,16 +103,16 @@ void test_dictionary(id k1, id o1, id k2<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [2 x i8*]* [[OBJECTS]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [2 x i8*]* [[KEYS]] to i8**<br class="">
// CHECK-NEXT: [[T4:%.*]] = call i8* bitcast ({{.*@objc_msgSend.*}})(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i8** [[T3]], i64 2)<br class="">
- // CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]])<br class="">
+ // CHECK-NEXT: [[T5:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T4]])<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[V0]], i8* [[V1]], i8* [[V2]], i8* [[V3]])<br class="">
<br class="">
id dict = @{ k1 : o1, k2 : o2 };<br class="">
<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -126,7 +126,7 @@ void test_dictionary(id k1, id o1, id k2<br class="">
// CHECK-LABEL: define void @test_property<br class="">
void test_property(B *b) {<br class="">
// Retain parameter<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [1 x i8*], [1 x i8*]* [[OBJECTS:%.*]], i64 0, i64 0<br class="">
<br class="">
@@ -135,7 +135,7 @@ void test_property(B *b) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast<br class="">
// CHECK-NEXT: [[T2:%.*]] = call [[B:%.*]]* bitcast ({{.*}} @objc_msgSend to {{.*}})(i8* [[T1]], i8* [[SEL]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[B]]* [[T2]] to i8*<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T3]])<br class="">
// CHECK-NEXT: [[V0:%.*]] = bitcast i8* [[T4]] to [[B]]*<br class="">
// CHECK-NEXT: [[V1:%.*]] = bitcast [[B]]* [[V0]] to i8*<br class="">
<br class="">
@@ -148,7 +148,7 @@ void test_property(B *b) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[CLASS_T]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [1 x i8*]* [[OBJECTS]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = call i8* bitcast ({{.*}} @objc_msgSend to {{.*}}(i8* [[T1]], i8* [[SEL]], i8** [[T2]], i64 1)<br class="">
- // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue(i8* [[T3]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T3]])<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[V1]])<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: bitcast<br class="">
@@ -157,12 +157,12 @@ void test_property(B *b) {<br class="">
<br class="">
// Release b.prop<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[B]]* [[V0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
<br class="">
// Destroy arr<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
<br class="">
// Destroy b<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-loadweakretained-release.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-loadweakretained-release.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-loadweakretained-release.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-loadweakretained-release.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-loadweakretained-release.m Tue Dec 18 12:33:00 2018<br class="">
@@ -28,13 +28,13 @@ int main (int argc, const char * argv[])<br class="">
}<br class="">
}<br class="">
<br class="">
-// CHECK: [[SIXTEEN:%.*]] = call i8* @objc_loadWeakRetained(i8** {{%.*}})<br class="">
+// CHECK: [[SIXTEEN:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** {{%.*}})<br class="">
// CHECK-NEXT: [[SEVENTEEN:%.*]] = bitcast i8* [[SIXTEEN]] to {{%.*}}<br class="">
// CHECK-NEXT: [[EIGHTEEN:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_.6<br class="">
// CHECK-NEXT: [[NINETEEN:%.*]] = bitcast %0* [[SEVENTEEN]] to i8*<br class="">
// CHECK-NEXT: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
// CHECK-NEXT: [[TWENTY:%.*]] = bitcast %0* [[SEVENTEEN]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[TWENTY]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[TWENTY]])<br class="">
<br class="">
void test1(int cond) {<br class="">
extern void test34_sink(id *);<br class="">
@@ -55,7 +55,7 @@ void test1(int cond) {<br class="">
// CHECK-NEXT: [[ICRARGUMENT:%.*]] = select i1 [[ICRISNULL]], i8** null, i8** [[INCRTEMP]]<br class="">
// CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: br i1 [[ICRISNULL]], label [[ICRCONT:%.*]], label [[ICRCOPY:%.*]]<br class="">
-// CHECK: [[ONE:%.*]] = call i8* @objc_loadWeakRetained(<br class="">
+// CHECK: [[ONE:%.*]] = call i8* @llvm.objc.loadWeakRetained(<br class="">
// CHECK-NEXT: store i8* [[ONE]], i8** [[CONDCLEANUPSAVE]]<br class="">
// CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: store i8* [[ONE]], i8** [[INCRTEMP]]<br class="">
@@ -65,13 +65,13 @@ void test1(int cond) {<br class="">
// CHECK-NEXT: [[ICRISNULL1:%.*]] = icmp eq i8** [[COND1]], null<br class="">
// CHECK-NEXT: br i1 [[ICRISNULL1]], label [[ICRDONE:%.*]], label [[ICRWRITEBACK:%.*]]<br class="">
// CHECK: [[TWO:%.*]] = load i8*, i8** [[INCRTEMP]]<br class="">
-// CHECK-NEXT: [[THREE:%.*]] = call i8* @objc_storeWeak(<br class="">
+// CHECK-NEXT: [[THREE:%.*]] = call i8* @llvm.objc.storeWeak(<br class="">
// CHECK-NEXT: br label [[ICRDONE]]<br class="">
// CHECK: [[CLEANUPISACTIVE:%.*]] = load i1, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: br i1 [[CLEANUPISACTIVE]], label [[CLEASNUPACTION:%.*]], label [[CLEANUPDONE:%.*]]<br class="">
<br class="">
// CHECK: [[FOUR:%.*]] = load i8*, i8** [[CONDCLEANUPSAVE]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[FOUR]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[FOUR]])<br class="">
// CHECK-NEXT: br label<br class="">
-// CHECK: call void @objc_destroyWeak(i8** [[WEAK]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** [[WEAK]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-no-runtime.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-no-runtime.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-no-runtime.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-no-runtime.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-no-runtime.m Tue Dec 18 12:33:00 2018<br class="">
@@ -5,9 +5,9 @@ id make(void) __attribute__((ns_returns_<br class="">
void test0() {<br class="">
make();<br class="">
id x = 0;<br class="">
- // CHECK: call void @objc_release(<br class="">
- // CHECK: call void @objc_storeStrong(<br class="">
+ // CHECK: call void @llvm.objc.release(<br class="">
+ // CHECK: call void @llvm.objc.storeStrong(<br class="">
}<br class="">
<br class="">
-// CHECK: declare extern_weak void @objc_release(<br class="">
-// CHECK: declare extern_weak void @objc_storeStrong(<br class="">
+// CHECK: declare extern_weak void @llvm.objc.release(<br class="">
+// CHECK: declare extern_weak void @llvm.objc.storeStrong(<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-precise-lifetime.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-precise-lifetime.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-precise-lifetime.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-precise-lifetime.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-precise-lifetime.m Tue Dec 18 12:33:00 2018<br class="">
@@ -14,11 +14,11 @@ void test0() {<br class="">
<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW:#[0-9]+]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NOT: clang.imprecise_release<br class="">
<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW:#[0-9]+]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NOT: clang.imprecise_release<br class="">
<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
@@ -43,14 +43,14 @@ void test1a_message(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[CPTR1:%.*]] = bitcast i8** [[C]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[CPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutorelease(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST1]]* [[T3]] to i8*<br class="">
@@ -60,7 +60,7 @@ void test1a_message(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[CPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -77,14 +77,14 @@ void test1a_property(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[CPTR1:%.*]] = bitcast i8** [[C]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[CPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutorelease(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST1]]* [[T3]] to i8*<br class="">
@@ -94,7 +94,7 @@ void test1a_property(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[CPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -111,7 +111,7 @@ void test1b_message(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[CPTR1:%.*]] = bitcast i8** [[C]] to i8*<br class="">
@@ -125,7 +125,7 @@ void test1b_message(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[CPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NOT: clang.imprecise_release<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
@@ -142,7 +142,7 @@ void test1b_property(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[CPTR1:%.*]] = bitcast i8** [[C]] to i8*<br class="">
@@ -156,7 +156,7 @@ void test1b_property(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[CPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NOT: clang.imprecise_release<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
@@ -173,14 +173,14 @@ void test1c_message(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[PCPTR1:%.*]] = bitcast i8** [[PC]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PCPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutorelease(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST1]]* [[T3]] to i8*<br class="">
@@ -190,7 +190,7 @@ void test1c_message(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PCPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -206,14 +206,14 @@ void test1c_property(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[PCPTR1:%.*]] = bitcast i8** [[PC]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PCPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutorelease(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST1]]* [[T3]] to i8*<br class="">
@@ -223,7 +223,7 @@ void test1c_property(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PCPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -239,7 +239,7 @@ void test1d_message(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[PCPTR1:%.*]] = bitcast i8** [[PC]] to i8*<br class="">
@@ -253,7 +253,7 @@ void test1d_message(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PCPTR2]])<br class="">
// CHECK-NEXT: [[NINE:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[TEN:%.*]] = bitcast [[TEST1]]* [[NINE]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TEN]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TEN]])<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -269,7 +269,7 @@ void test1d_property(void) {<br class="">
// CHECK: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[PTRPTR1]])<br class="">
// CHECK: [[T0:%.*]] = call [[TEST1:%.*]]* @test1_helper()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST1]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST1]]*<br class="">
// CHECK-NEXT: store [[TEST1]]* [[T3]]<br class="">
// CHECK-NEXT: [[PCPTR1:%.*]] = bitcast i8** [[PC]] to i8*<br class="">
@@ -283,7 +283,7 @@ void test1d_property(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PCPTR2]])<br class="">
// CHECK-NEXT: [[NINE:%.*]] = load [[TEST1]]*, [[TEST1]]**<br class="">
// CHECK-NEXT: [[TEN:%.*]] = bitcast [[TEST1]]* [[NINE]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TEN]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TEN]])<br class="">
// CHECK-NEXT: [[PTRPTR2:%.*]] = bitcast [[PTR_T]]** [[PTR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTRPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -301,7 +301,7 @@ void test2(Test2 *x) {<br class="">
x->ivar = 0;<br class="">
// CHECK: [[X:%.*]] = alloca [[TEST2:%.*]]*<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST2]]* {{%.*}} to i8*<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST2]]*<br class="">
// CHECK-NEXT: store [[TEST2]]* [[T2]], [[TEST2]]** [[X]],<br class="">
<br class="">
@@ -312,12 +312,12 @@ void test2(Test2 *x) {<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8**<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[T3]],<br class="">
// CHECK-NEXT: store i8* null, i8** [[T3]],<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T4]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T4]]) [[NUW]]<br class="">
// CHECK-NOT: imprecise<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST2]]*, [[TEST2]]** [[X]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST2]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
@@ -325,11 +325,11 @@ void test2(Test2 *x) {<br class="">
// CHECK-LABEL: define void @test3(i8*<br class="">
void test3(PRECISE_LIFETIME id x) {<br class="">
// CHECK: [[X:%.*]] = alloca i8*,<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* {{%.*}}) [[NUW]]<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* {{%.*}}) [[NUW]]<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[X]],<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]]<br class="">
// CHECK-NOT: imprecise_release<br class="">
<br class="">
// CHECK-NEXT: ret void <br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-property.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-property.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-property.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-property.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-property.m Tue Dec 18 12:33:00 2018<br class="">
@@ -8,11 +8,11 @@ void test0(Test0 *t0, id value) {<br class="">
t0.value = value;<br class="">
}<br class="">
// CHECK-LABEL: define void @test0(<br class="">
-// CHECK: call void @objc_storeStrong<br class="">
-// CHECK: call void @objc_storeStrong<br class="">
+// CHECK: call void @llvm.objc.storeStrong<br class="">
+// CHECK: call void @llvm.objc.storeStrong<br class="">
// CHECK: @objc_msgSend<br class="">
-// CHECK: call void @objc_storeStrong(<br class="">
-// CHECK: call void @objc_storeStrong(<br class="">
+// CHECK: call void @llvm.objc.storeStrong(<br class="">
+// CHECK: call void @llvm.objc.storeStrong(<br class="">
<br class="">
struct S1 { Class isa; };<br class="">
@interface Test1<br class="">
@@ -62,7 +62,7 @@ static Class theGlobalClass;<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST2]]* [[T1]] to i8*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8, i8* [[T2]], i64 [[OFFSET]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T4]], i8* [[T0]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T4]], i8* [[T0]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// CHECK: define internal i8* @"\01-[Test2 theClass]"(<br class="">
@@ -83,7 +83,7 @@ static Class theGlobalClass;<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST2]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds i8, i8* [[T1]], i64 [[OFFSET]]<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T3]], i8* null) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T3]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// <a href="rdar://13115896" class="">rdar://13115896</a><br class="">
@@ -112,11 +112,11 @@ void test3(Test3 *t) {<br class="">
// CHECK-NEXT: [[T2:%.*]] = call i8* bitcast ({{.*}} @objc_msgSend to {{.*}})(i8* [[T1]], i8* [[SEL]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** [[X]],<br class="">
// CHECK-NEXT: store i8* [[T2]], i8** [[X]],<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T3]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T3]])<br class="">
// Epilogue.<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST3]]** [[T]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@implementation Test3<br class="">
@@ -126,7 +126,7 @@ void test3(Test3 *t) {<br class="">
}<br class="">
// CHECK: define internal i8* @"\01-[Test3 copyMachine]"(<br class="">
// CHECK: [[T0:%.*]] = call i8* @test3_helper()<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: ret i8* [[T1]]<br class="">
- (void) setCopyMachine: (id) x {}<br class="">
@end<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-related-result-type.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-related-result-type.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-related-result-type.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-related-result-type.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-related-result-type.m Tue Dec 18 12:33:00 2018<br class="">
@@ -12,17 +12,17 @@ void test0(Test0 *val) {<br class="">
// CHECK-NEXT: store [[TEST0]]* null<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: bitcast<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(<br class="">
// CHECK-NEXT: load [[TEST0]]*, [[TEST0]]** [[VAL]],<br class="">
// CHECK-NEXT: load<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* bitcast (<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST0]]*<br class="">
// CHECK-NEXT: store [[TEST0]]* [[T2]], [[TEST0]]** [[X]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]** [[X]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]** [[VAL]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-ternary-op.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-ternary-op.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-ternary-op.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-ternary-op.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-ternary-op.m Tue Dec 18 12:33:00 2018<br class="">
@@ -22,15 +22,15 @@ void test0(_Bool cond) {<br class="">
// CHECK-NEXT: store i1 true, i1* [[RELCOND]]<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: [[T0:%.*]] = phi i8* [ null, {{%.*}} ], [ [[CALL]], {{%.*}} ]<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) [[NUW:#[0-9]+]]<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[X]],<br class="">
// CHECK-NEXT: [[REL:%.*]] = load i1, i1* [[RELCOND]]<br class="">
// CHECK-NEXT: br i1 [[REL]],<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[RELVAL]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -58,7 +58,7 @@ void test1(int cond) {<br class="">
// CHECK-NEXT: store i8* null, i8** [[STRONG]]<br class="">
// CHECK-NEXT: [[WEAKPTR1:%.*]] = bitcast i8** [[WEAK]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[WEAKPTR1]])<br class="">
- // CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAK]], i8* null)<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[WEAK]], i8* null)<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i32, i32* [[COND]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0<br class="">
@@ -74,11 +74,11 @@ void test1(int cond) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[TEMP1]]<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[W]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[ARG]]<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[ARG]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
// CHECK-NEXT: br label<br class="">
<br class="">
// CHECK: [[T0:%.*]] = load i32, i32* [[COND]]<br class="">
@@ -88,7 +88,7 @@ void test1(int cond) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP2]]<br class="">
// CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
- // CHECK: [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[ARG]])<br class="">
+ // CHECK: [[T0:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[ARG]])<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[CONDCLEANUPSAVE]]<br class="">
// CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[TEMP2]]<br class="">
@@ -97,10 +97,10 @@ void test1(int cond) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[TEMP2]]<br class="">
- // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[ARG]], i8* [[T0]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[ARG]], i8* [[T0]])<br class="">
// CHECK-NEXT: br label<br class="">
<br class="">
- // CHECK: call void @objc_destroyWeak(i8** [[WEAK]])<br class="">
+ // CHECK: call void @llvm.objc.destroyWeak(i8** [[WEAK]])<br class="">
// CHECK: [[WEAKPTR2:%.*]] = bitcast i8** [[WEAK]] to i8*<br class="">
// CHECK: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[WEAKPTR2]])<br class="">
// CHECK: [[STRONGPTR2:%.*]] = bitcast i8** [[STRONG]] to i8*<br class="">
@@ -130,21 +130,21 @@ void test2(int cond) {<br class="">
// CHECK-NEXT: br i1<br class="">
// Within true branch, cleanup enabled.<br class="">
// CHECK: [[T0:%.*]] = call i8* @test2_producer()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[CLEANUP_SAVE]]<br class="">
// CHECK-NEXT: store i1 true, i1* [[RUN_CLEANUP]]<br class="">
// CHECK-NEXT: br label<br class="">
// Join point for conditional operator; retain immediately.<br class="">
// CHECK: [[T0:%.*]] = phi i8* [ [[T1]], {{%.*}} ], [ null, {{%.*}} ]<br class="">
- // CHECK-NEXT: [[RESULT:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[RESULT:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// Leaving full-expression; run conditional cleanup.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i1, i1* [[RUN_CLEANUP]]<br class="">
// CHECK-NEXT: br i1 [[T0]]<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[CLEANUP_SAVE]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: br label<br class="">
// And way down at the end of the loop:<br class="">
- // CHECK: call void @objc_release(i8* [[RESULT]])<br class="">
+ // CHECK: call void @llvm.objc.release(i8* [[RESULT]])<br class="">
}<br class="">
<br class="">
// CHECK: attributes [[NUW]] = { nounwind }<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-unbridged-cast.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unbridged-cast.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unbridged-cast.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-unbridged-cast.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-unbridged-cast.m Tue Dec 18 12:33:00 2018<br class="">
@@ -32,4 +32,4 @@ id MMM()<br class="">
return 0;<br class="">
}<br class="">
<br class="">
-// CHECK-NOT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+// CHECK-NOT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-unopt.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unopt.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unopt.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-unopt.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-unopt.m Tue Dec 18 12:33:00 2018<br class="">
@@ -9,7 +9,7 @@ Test0 *test0(void) {<br class="">
<br class="">
// CHECK: [[LD:%.*]] = load [[TEST0:%.*]]*, [[TEST0:%.*]]** @test0_helper<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST0]]* [[LD]] to i8*<br class="">
- // CHECK-NEXT: [[T1:%.*]] = tail call i8* @objc_retainAutoreleaseReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = tail call i8* @llvm.objc.retainAutoreleaseReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[TEST0]]*<br class="">
// CHECK-NEXT: ret [[TEST0]]* [[T2]]<br class="">
}<br class="">
@@ -19,14 +19,14 @@ id test1(void) {<br class="">
return test1_helper;<br class="">
<br class="">
// CHECK: [[LD:%.*]] = load i8*, i8** @test1_helper<br class="">
- // CHECK-NEXT: [[T0:%.*]] = tail call i8* @objc_retainAutoreleaseReturnValue(i8* [[LD]])<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = tail call i8* @llvm.objc.retainAutoreleaseReturnValue(i8* [[LD]])<br class="">
// CHECK-NEXT: ret i8* [[T0]]<br class="">
}<br class="">
<br class="">
void test2(void) {<br class="">
// CHECK: [[X:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[X]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[X]])<br class="">
// CHECK-NEXT: ret void<br class="">
__weak id x;<br class="">
}<br class="">
@@ -63,7 +63,7 @@ void test5(void) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST5]]*, [[TEST5]]** [[Y]],<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST5]]** [[X]] to i8**<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST5]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T1]], i8* [[T2]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T1]], i8* [[T2]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = icmp ne [[TEST5]]* [[T0]], null<br class="">
// CHECK-NEXT: br i1 [[T3]],<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-unoptimized-byref-var.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unoptimized-byref-var.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unoptimized-byref-var.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-unoptimized-byref-var.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-unoptimized-byref-var.m Tue Dec 18 12:33:00 2018<br class="">
@@ -9,8 +9,8 @@ void test19() {<br class="">
// CHECK-UNOPT: [[X2:%.*]] = getelementptr inbounds [[BYREF_T:%.*]], [[BYREF_T:%.*]]* [[VAR1:%.*]], i32 0, i32 6<br class="">
// CHECK-UNOPT-NEXT: [[SIX:%.*]] = load i8*, i8** [[X2]], align 8<br class="">
// CHECK-UNOPT-NEXT: store i8* null, i8** [[X]], align 8<br class="">
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X]], i8* [[SIX]]) [[NUW:#[0-9]+]]<br class="">
-// CHECK-UNOPT-NEXT: call void @objc_storeStrong(i8** [[X2]], i8* null) [[NUW]]<br class="">
+// CHECK-UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* [[SIX]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK-UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[X2]], i8* null) [[NUW]]<br class="">
// CHECK-UNOPT-NEXT: ret void<br class="">
}<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-unsafeclaim.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unsafeclaim.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-unsafeclaim.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-unsafeclaim.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-unsafeclaim.m Tue Dec 18 12:33:00 2018<br class="">
@@ -29,7 +29,7 @@ void test_assign() {<br class="">
// CHECK: [[T0:%.*]] = call [[A:.*]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
@@ -41,7 +41,7 @@ void test_assign() {<br class="">
// DISABLED: [[T0:%.*]] = call [[A:.*]]* @makeA()<br class="">
// DISABLED-MARKED-NEXT: call void asm sideeffect<br class="">
// DISABLED-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// DISABLED-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// DISABLED-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
<br class="">
void test_assign_assign() {<br class="">
__unsafe_unretained id x, y;<br class="">
@@ -53,7 +53,7 @@ void test_assign_assign() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[Y]]<br class="">
@@ -75,18 +75,18 @@ void test_strong_assign_assign() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[Y]]<br class="">
// CHECK-NEXT: [[OLD:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[OLD]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[OLD]]<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
// CHECK-OPTIMIZED-NEXT: lifetime.end<br class="">
-// CHECK-UNOPTIMIZED-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+// CHECK-UNOPTIMIZED-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
// CHECK-OPTIMIZED-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
-// CHECK-OPTIMIZED-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-OPTIMIZED-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
// CHECK-OPTIMIZED-NEXT: lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -102,16 +102,16 @@ void test_assign_strong_assign() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: [[OLD:%.*]] = load i8*, i8** [[Y]]<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[Y]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[OLD]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[OLD]]<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
-// CHECK-UNOPTIMIZED-NEXT: call void @objc_storeStrong(i8** [[Y]], i8* null)<br class="">
+// CHECK-UNOPTIMIZED-NEXT: call void @llvm.objc.storeStrong(i8** [[Y]], i8* null)<br class="">
// CHECK-OPTIMIZED-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-OPTIMIZED-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-OPTIMIZED-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
// CHECK-OPTIMIZED-NEXT: lifetime.end<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
@@ -126,7 +126,7 @@ void test_init() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
@@ -144,7 +144,7 @@ void test_init_assignment() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
@@ -165,14 +165,14 @@ void test_strong_init_assignment() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[Y]]<br class="">
-// CHECK-UNOPTIMIZED-NEXT: call void @objc_storeStrong(i8** [[Y]], i8* null)<br class="">
+// CHECK-UNOPTIMIZED-NEXT: call void @llvm.objc.storeStrong(i8** [[Y]], i8* null)<br class="">
// CHECK-OPTIMIZED-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-OPTIMIZED-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-OPTIMIZED-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
// CHECK-OPTIMIZED-NEXT: lifetime.end<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
@@ -189,18 +189,18 @@ void test_init_strong_assignment() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[A]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: [[OLD:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[X]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[OLD]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[OLD]])<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[Y]]<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
// CHECK-OPTIMIZED-NEXT: lifetime.end<br class="">
-// CHECK-UNOPTIMIZED-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+// CHECK-UNOPTIMIZED-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
// CHECK-OPTIMIZED-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
-// CHECK-OPTIMIZED-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-OPTIMIZED-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-OPTIMIZED-NEXT: bitcast<br class="">
// CHECK-OPTIMIZED-NEXT: lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -212,7 +212,7 @@ void test_ignored() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -223,7 +223,7 @@ void test_cast_to_void() {<br class="">
// CHECK: [[T0:%.*]] = call [[A]]* @makeA()<br class="">
// CHECK-MARKED-NEXT: call void asm sideeffect<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.unsafeClaimAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-weak-property.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-weak-property.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-weak-property.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-weak-property.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-weak-property.m Tue Dec 18 12:33:00 2018<br class="">
@@ -21,8 +21,8 @@<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[WPT]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8, i8* [[T2]], i64 [[T1]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**<br class="">
-// CHECK-NEXT: [[T5:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T4]])<br class="">
-// CHECK-NEXT: [[T6:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T5]])<br class="">
+// CHECK-NEXT: [[T5:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T4]])<br class="">
+// CHECK-NEXT: [[T6:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T5]])<br class="">
// CHECK-NEXT: ret i8* [[T6]]<br class="">
<br class="">
// CHECK: define internal void @"\01-[WeakPropertyTest setPROP:]"<br class="">
@@ -38,7 +38,7 @@<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[WPT]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8, i8* [[T2]], i64 [[T1]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**<br class="">
-// CHECK-NEXT: call i8* @objc_storeWeak(i8** [[T4]], i8* [[V]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[T4]], i8* [[V]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// CHECK: define internal void @"\01-[WeakPropertyTest .cxx_destruct]"<br class="">
@@ -51,5 +51,5 @@<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[WPT]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8, i8* [[T2]], i64 [[T1]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T4]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T4]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-weak.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-weak.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-weak.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-weak.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-weak.m Tue Dec 18 12:33:00 2018<br class="">
@@ -15,6 +15,6 @@ void test0(__weak B **src) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]** [[T0]] to [[A]]**<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[A]]** [[DEST]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[A]]** [[T1]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_copyWeak(i8** [[T2]], i8** [[T3]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.copyWeak(i8** [[T2]], i8** [[T3]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]** [[DEST]] to i8**<br class="">
-// CHECK: call void @objc_destroyWeak(i8** [[T0]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** [[T0]])<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc-with-atthrow.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-with-atthrow.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc-with-atthrow.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc-with-atthrow.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc-with-atthrow.m Tue Dec 18 12:33:00 2018<br class="">
@@ -11,8 +11,8 @@ void test() {<br class="">
<br class="">
// CHECK-LABEL: define void @test()<br class="">
// CHECK: [[T0:%.*]] = call i8* @make()<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_autorelease(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.autorelease(i8* [[T1]])<br class="">
// CHECK-NEXT: call void @objc_exception_throw(i8* [[T2]]) [[NR:#[0-9]+]]<br class="">
// CHECK-NEXT: unreachable<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc.ll<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc.ll?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc.ll?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc.ll (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc.ll Tue Dec 18 12:33:00 2018<br class="">
@@ -2,8 +2,8 @@<br class="">
<br class="">
target triple = "x86_64-apple-darwin10"<br class="">
<br class="">
-declare i8* @objc_retain(i8*)<br class="">
-declare void @objc_release(i8*)<br class="">
+declare i8* @llvm.objc.retain(i8*)<br class="">
+declare void @llvm.objc.release(i8*)<br class="">
<br class="">
; CHECK-LABEL: define void @test(<br class="">
; CHECK-NOT: @objc_<br class="">
@@ -13,15 +13,15 @@ entry:<br class="">
br label %loop<br class="">
<br class="">
loop:<br class="">
- call i8* @objc_retain(i8* %x)<br class="">
+ call i8* @llvm.objc.retain(i8* %x)<br class="">
%q = load i1, i1* %p<br class="">
br i1 %q, label %loop.more, label %exit<br class="">
<br class="">
loop.more:<br class="">
- call void @objc_release(i8* %x)<br class="">
+ call void @llvm.objc.release(i8* %x)<br class="">
br label %loop<br class="">
<br class="">
exit:<br class="">
- call void @objc_release(i8* %x)<br class="">
+ call void @llvm.objc.release(i8* %x)<br class="">
ret void<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/arc.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/arc.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/arc.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/arc.m Tue Dec 18 12:33:00 2018<br class="">
@@ -6,39 +6,39 @@<br class="">
// RUN: %clang_cc1 -fobjc-runtime=macosx-10.6.0 -triple x86_64-apple-darwin10 -Wno-objc-root-class -Wno-incompatible-pointer-types -Wno-arc-unsafe-retained-assign -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=ARC-ALIEN %s<br class="">
// RUN: %clang_cc1 -fobjc-runtime=macosx-10.7.0 -triple x86_64-apple-darwin11 -Wno-objc-root-class -Wno-incompatible-pointer-types -Wno-arc-unsafe-retained-assign -emit-llvm -fblocks -fobjc-arc -fobjc-runtime-has-weak -o - %s | FileCheck -check-prefix=ARC-NATIVE %s<br class="">
<br class="">
-// ARC-ALIEN: declare extern_weak void @objc_storeStrong(i8**, i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_retain(i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_autoreleaseReturnValue(i8*)<br class="">
+// ARC-ALIEN: declare extern_weak void @llvm.objc.storeStrong(i8**, i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.retain(i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.autoreleaseReturnValue(i8*)<br class="">
// ARC-ALIEN: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]<br class="">
-// ARC-ALIEN: declare extern_weak void @objc_release(i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_retainAutoreleasedReturnValue(i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_initWeak(i8**, i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_storeWeak(i8**, i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_loadWeakRetained(i8**)<br class="">
-// ARC-ALIEN: declare extern_weak void @objc_destroyWeak(i8**)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_autorelease(i8*)<br class="">
-// ARC-ALIEN: declare extern_weak i8* @objc_retainAutorelease(i8*)<br class="">
-<br class="">
-// ARC-NATIVE: declare void @objc_storeStrong(i8**, i8*)<br class="">
-// ARC-NATIVE: declare i8* @objc_retain(i8*) [[NLB:#[0-9]+]]<br class="">
-// ARC-NATIVE: declare i8* @objc_autoreleaseReturnValue(i8*)<br class="">
-// ARC-NATIVE: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB]]<br class="">
-// ARC-NATIVE: declare void @objc_release(i8*) [[NLB]]<br class="">
-// ARC-NATIVE: declare i8* @objc_retainAutoreleasedReturnValue(i8*)<br class="">
-// ARC-NATIVE: declare i8* @objc_initWeak(i8**, i8*)<br class="">
-// ARC-NATIVE: declare i8* @objc_storeWeak(i8**, i8*)<br class="">
-// ARC-NATIVE: declare i8* @objc_loadWeakRetained(i8**)<br class="">
-// ARC-NATIVE: declare void @objc_destroyWeak(i8**)<br class="">
-// ARC-NATIVE: declare i8* @objc_autorelease(i8*)<br class="">
-// ARC-NATIVE: declare i8* @objc_retainAutorelease(i8*)<br class="">
+// ARC-ALIEN: declare extern_weak void @llvm.objc.release(i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.retainAutoreleasedReturnValue(i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.initWeak(i8**, i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.storeWeak(i8**, i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.loadWeakRetained(i8**)<br class="">
+// ARC-ALIEN: declare extern_weak void @llvm.objc.destroyWeak(i8**)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.autorelease(i8*)<br class="">
+// ARC-ALIEN: declare extern_weak i8* @llvm.objc.retainAutorelease(i8*)<br class="">
+<br class="">
+// ARC-NATIVE: declare void @llvm.objc.storeStrong(i8**, i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.retain(i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.autoreleaseReturnValue(i8*)<br class="">
+// ARC-NATIVE: declare i8* @objc_msgSend(i8*, i8*, ...) [[NLB:#[0-9]+]]<br class="">
+// ARC-NATIVE: declare void @llvm.objc.release(i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.retainAutoreleasedReturnValue(i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.initWeak(i8**, i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.storeWeak(i8**, i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.loadWeakRetained(i8**)<br class="">
+// ARC-NATIVE: declare void @llvm.objc.destroyWeak(i8**)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.autorelease(i8*)<br class="">
+// ARC-NATIVE: declare i8* @llvm.objc.retainAutorelease(i8*)<br class="">
<br class="">
// CHECK-LABEL: define void @test0<br class="">
void test0(id x) {<br class="">
// CHECK: [[X:%.*]] = alloca i8*<br class="">
- // CHECK-NEXT: [[PARM:%.*]] = call i8* @objc_retain(i8* {{.*}})<br class="">
+ // CHECK-NEXT: [[PARM:%.*]] = call i8* @llvm.objc.retain(i8* {{.*}})<br class="">
// CHECK-NEXT: store i8* [[PARM]], i8** [[X]]<br class="">
// CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TMP]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TMP]])<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -46,20 +46,20 @@ void test0(id x) {<br class="">
id test1(id x) {<br class="">
// CHECK: [[X:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: [[Y:%.*]] = alloca i8*<br class="">
- // CHECK-NEXT: [[PARM:%.*]] = call i8* @objc_retain(i8* {{%.*}})<br class="">
+ // CHECK-NEXT: [[PARM:%.*]] = call i8* @llvm.objc.retain(i8* {{%.*}})<br class="">
// CHECK-NEXT: store i8* [[PARM]], i8** [[X]]<br class="">
// CHECK-NEXT: [[YPTR1:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[YPTR1]])<br class="">
// CHECK-NEXT: store i8* null, i8** [[Y]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: [[RET:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[RET:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[YPTR2:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[YPTR2]])<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T1:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[RET]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[RET]])<br class="">
// CHECK-NEXT: ret i8* [[T1]]<br class="">
id y;<br class="">
return y;<br class="">
@@ -113,19 +113,19 @@ void test3_unelided() {<br class="">
// CHECK-NEXT: [[ALLOC:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: bitcast<br class="">
- // CHECK-NEXT: call void @objc_release(i8*<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8*<br class="">
[Test3 alloc];<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST3]]*, [[TEST3]]** [[X]]<br class="">
// CHECK-NEXT: load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST3]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[COPY:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend {{.*}})(i8* [[T1]],<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[COPY]]) [[NUW:#[0-9]+]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[COPY]]) [[NUW:#[0-9]+]]<br class="">
[x copy];<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST3]]*, [[TEST3]]** [[X]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST3]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast [[TEST3]]** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -163,13 +163,13 @@ void test3() {<br class="">
// Assignment to x.<br class="">
// CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* [[COPY]], i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TMP]]) [[NUW]]<br class="">
<br class="">
x = [x copy];<br class="">
<br class="">
// Cleanup for x.<br class="">
// CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TMP]]) [[NUW]]<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -193,7 +193,7 @@ id test4() {<br class="">
// Retain/release elided.<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: [[INIT:%.*]] = bitcast<br class="">
- // CHECK-NEXT: [[RET:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[INIT]])<br class="">
+ // CHECK-NEXT: [[RET:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[INIT]])<br class="">
<br class="">
// CHECK-NEXT: ret i8* [[RET]]<br class="">
<br class="">
@@ -212,10 +212,10 @@ void test5(Test5 *x, id y) {<br class="">
// CHECK: [[X:%.*]] = alloca [[TEST5:%.*]]*,<br class="">
// CHECK-NEXT: [[Y:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: bitcast [[TEST5]]* {{%.*}} to i8*<br class="">
- // CHECK-NEXT: call i8* @objc_retain<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retain<br class="">
// CHECK-NEXT: [[PARMX:%.*]] = bitcast i8* {{%.*}} to [[TEST5]]*<br class="">
// CHECK-NEXT: store [[TEST5]]* [[PARMX]], [[TEST5]]** [[X]]<br class="">
- // CHECK-NEXT: call i8* @objc_retain<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retain<br class="">
// CHECK-NEXT: store<br class="">
<br class="">
// CHECK-NEXT: load [[TEST5]]*, [[TEST5]]** [[X]]<br class="">
@@ -225,7 +225,7 @@ void test5(Test5 *x, id y) {<br class="">
// CHECK-NEXT: [[VAR:%.*]] = bitcast<br class="">
// CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[VAR]]<br class="">
// CHECK-NEXT: store i8* null, i8** [[VAR]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TMP]]) [[NUW]]<br class="">
x->var = 0;<br class="">
<br class="">
// CHECK-NEXT: [[YVAL:%.*]] = load i8*, i8** [[Y]]<br class="">
@@ -234,18 +234,18 @@ void test5(Test5 *x, id y) {<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: getelementptr<br class="">
// CHECK-NEXT: [[VAR:%.*]] = bitcast<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[YVAL]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[YVAL]]) [[NUW]]<br class="">
// CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[VAR]]<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[VAR]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TMP]]) [[NUW]]<br class="">
x->var = y;<br class="">
<br class="">
// Epilogue.<br class="">
// CHECK-NEXT: [[TMP:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[TMP]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[TMP]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST5]]*, [[TEST5]]** [[X]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST5]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -258,7 +258,7 @@ void test6() {<br class="">
// CHECK-NEXT: [[CALL:%.*]] = call i8* @test6_helper()<br class="">
// CHECK-NEXT: store i8* [[CALL]], i8** [[X]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -273,10 +273,10 @@ void test7() {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[XPTR1]])<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: call void @test7_helper(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -292,7 +292,7 @@ void test8() {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[XPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test8_helper()<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -318,25 +318,25 @@ void test10() {<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: [[T0:%.*]] = call [[TEST10]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST10]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[V:%.*]] = bitcast i8* [[T2]] to [[TEST10]]*<br class="">
// CHECK-NEXT: load i8*, i8** @OBJC_SELECTOR_REFERENCES_{{[0-9]*}}<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: [[T0:%.*]] = call [[TEST10]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST10]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST10]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast [[TEST10]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: store i8* [[T4]], i8** [[Y]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST10]]* [[V]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[YPTR2:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: void @llvm.lifetime.end.p0i8(i64 8, i8* [[YPTR2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST10]]*, [[TEST10]]** [[X]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST10]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast [[TEST10]]** [[X]] to i8*<br class="">
// CHECK-NEXT: void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -353,7 +353,7 @@ void test11(id (*f)(void) __attribute__(<br class="">
// CHECK-NEXT: [[T1:%.*]] = call i8* [[T0]]()<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[X]], align<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T3]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T3]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -371,27 +371,27 @@ void test12(void) {<br class="">
// CHECK-NEXT: [[XPTR1:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[XPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test12_helper()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
- // CHECK-NEXT: call i8* @objc_initWeak(i8** [[X]], i8* [[T1]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[X]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
x = test12_helper();<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test12_helper()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
- // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[X]], i8* [[T1]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[X]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
id y = x;<br class="">
// CHECK-NEXT: [[YPTR1:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[YPTR1]])<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_loadWeakRetained(i8** [[X]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[X]])<br class="">
// CHECK-NEXT: store i8* [[T2]], i8** [[Y]], align<br class="">
<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T4]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T4]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[YPTR2:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: void @llvm.lifetime.end.p0i8(i64 8, i8* [[YPTR2]])<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[X]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[X]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK: ret void<br class="">
@@ -410,7 +410,7 @@ void test13(void) {<br class="">
extern fnty *test13_func;<br class="">
// CHECK-NEXT: [[FN:%.*]] = load void (i8*)*, void (i8*)** @test13_func, align<br class="">
// CHECK-NEXT: [[X_VAL:%.*]] = load i8*, i8** [[X]], align<br class="">
- // CHECK-NEXT: [[X_TMP:%.*]] = call i8* @objc_retain(i8* [[X_VAL]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[X_TMP:%.*]] = call i8* @llvm.objc.retain(i8* [[X_VAL]]) [[NUW]]<br class="">
// CHECK-NEXT: call void [[FN]](i8* [[X_TMP]])<br class="">
test13_func(x);<br class="">
<br class="">
@@ -420,14 +420,14 @@ void test13(void) {<br class="">
// CHECK-NEXT: [[BLOCK_FN_PTR:%.*]] = getelementptr inbounds [[BLOCKTY]], [[BLOCKTY]]* [[BLOCK]], i32 0, i32 3<br class="">
// CHECK-NEXT: [[BLOCK_OPAQUE:%.*]] = bitcast [[BLOCKTY]]* [[BLOCK]] to i8*<br class="">
// CHECK-NEXT: [[X_VAL:%.*]] = load i8*, i8** [[X]], align<br class="">
- // CHECK-NEXT: [[X_TMP:%.*]] = call i8* @objc_retain(i8* [[X_VAL]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[X_TMP:%.*]] = call i8* @llvm.objc.retain(i8* [[X_VAL]]) [[NUW]]<br class="">
// CHECK-NEXT: [[BLOCK_FN_TMP:%.*]] = load i8*, i8** [[BLOCK_FN_PTR]]<br class="">
// CHECK-NEXT: [[BLOCK_FN:%.*]] = bitcast i8* [[BLOCK_FN_TMP]] to void (i8*, i8*)*<br class="">
// CHECK-NEXT: call void [[BLOCK_FN]](i8* [[BLOCK_OPAQUE]], i8* [[X_TMP]])<br class="">
test13_block(x);<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -479,14 +479,14 @@ void test13(void) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST16]]* [[BASE]] to i8*<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8, i8* [[T0]], i64 [[Y_OFF]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i8**<br class="">
- // CHECK-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T2]], i8* null) [[NUW]]<br class="">
<br class="">
// Destroy z.<br class="">
// CHECK-NEXT: [[Z_OFF:%.*]] = load i64, i64* @"OBJC_IVAR_$_Test16.z"<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST16]]* [[BASE]] to i8*<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8, i8* [[T0]], i64 [[Z_OFF]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i8**<br class="">
- // CHECK-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T2]], i8* null) [[NUW]]<br class="">
<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -514,11 +514,11 @@ void test19() {<br class="">
x[2] = test19_helper();<br class="">
<br class="">
// CHECK-NEXT: [[CALL:%.*]] = call i8* @test19_helper()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]]) [[NUW]]<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[CALL]]) [[NUW]]<br class="">
// CHECK-NEXT: [[SLOT:%.*]] = getelementptr inbounds [5 x i8*], [5 x i8*]* [[X]], i64 0, i64 2<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[SLOT]]<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[SLOT]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]]<br class="">
<br class="">
// CHECK-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [5 x i8*], [5 x i8*]* [[X]], i32 0, i32 0<br class="">
// CHECK-NEXT: [[END:%.*]] = getelementptr inbounds i8*, i8** [[BEGIN]], i64 5<br class="">
@@ -527,7 +527,7 @@ void test19() {<br class="">
// CHECK: [[AFTER:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[NEXT:%.*]], {{%.*}} ]<br class="">
// CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds i8*, i8** [[AFTER]], i64 -1<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[CUR]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[EQ:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]<br class="">
// CHECK-NEXT: br i1 [[EQ]],<br class="">
<br class="">
@@ -570,7 +570,7 @@ void test20(unsigned n) {<br class="">
// CHECK: [[AFTER:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]<br class="">
// CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds i8*, i8** [[AFTER]], i64 -1<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[CUR]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[EQ:%.*]] = icmp eq i8** [[CUR]], [[VLA]]<br class="">
// CHECK-NEXT: br i1 [[EQ]],<br class="">
<br class="">
@@ -620,7 +620,7 @@ void test21(unsigned n) {<br class="">
// CHECK: [[AFTER:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]<br class="">
// CHECK-NEXT: [[CUR:%.*]] = getelementptr inbounds i8*, i8** [[AFTER]], i64 -1<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[CUR]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
// CHECK-NEXT: [[EQ:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]<br class="">
// CHECK-NEXT: br i1 [[EQ]],<br class="">
<br class="">
@@ -656,7 +656,7 @@ void test21(unsigned n) {<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]<br class="">
// CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[CUR]], i8* null)<br class="">
// CHECK-NEXT: [[ISDONE:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]<br class="">
// CHECK-NEXT: br i1 [[ISDONE]],<br class="">
// CHECK: ret void<br class="">
@@ -674,12 +674,12 @@ void test21(unsigned n) {<br class="">
// CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST27]]*, [[TEST27]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST27]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST27]]*<br class="">
// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST27]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST27]]*, [[TEST27]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST27]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// CHECK-NEXT: ret i8* [[RET]]<br class="">
<br class="">
@end<br class="">
@@ -697,7 +697,7 @@ void test21(unsigned n) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[TEST28]]* [[SELF]] to i8*<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8, i8* [[T0]], i64 [[OFFSET]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T2]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T2]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@interface Test29_super<br class="">
@@ -738,14 +738,14 @@ static id _test29_allocator = 0;<br class="">
// Return statement.<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[CALL]]<br class="">
// CHECK-NEXT: [[CALL:%.*]] = bitcast<br class="">
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[CALL]]) [[NUW]]<br class="">
+// CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[CALL]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST29]]*<br class="">
// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST29]]* [[T1]] to i8*<br class="">
<br class="">
// Cleanup.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]*, [[TEST29]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
<br class="">
// Return.<br class="">
// CHECK-NEXT: ret i8* [[RET]]<br class="">
@@ -759,7 +759,7 @@ static id _test29_allocator = 0;<br class="">
// CHECK-NEXT: alloca<br class="">
// CHECK-NEXT: store [[TEST29]]* {{%.*}}, [[TEST29]]** [[SELF]]<br class="">
// CHECK-NEXT: store i8* {{%.*}}, i8** [[CMD]]<br class="">
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* {{%.*}})<br class="">
+// CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* {{%.*}})<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[ALLOCATOR]]<br class="">
<br class="">
// Evaluate arguments. Note that the send argument is evaluated<br class="">
@@ -782,27 +782,27 @@ static id _test29_allocator = 0;<br class="">
// Assignment.<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast i8* [[CALL]] to [[TEST29]]*<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]]) [[NUW]]<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST29]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = load [[TEST29]]*, [[TEST29]]** [[SELF]], align<br class="">
// CHECK-NEXT: store [[TEST29]]* [[T3]], [[TEST29]]** [[SELF]], align<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[TEST29]]* [[T4]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T5]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T5]])<br class="">
<br class="">
// Return statement.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]*, [[TEST29]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[T1]]) [[NUW]]<br class="">
+// CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST29]]*<br class="">
// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST29]]* [[T1]] to i8*<br class="">
<br class="">
// Cleanup.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[ALLOCATOR]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]]) [[NUW]], !clang.imprecise_release<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST29]]*, [[TEST29]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST29]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]]) [[NUW]], !clang.imprecise_release<br class="">
<br class="">
// Return.<br class="">
// CHECK-NEXT: ret i8* [[RET]]<br class="">
@@ -840,21 +840,21 @@ char *helper;<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8, i8* [[T2]], i64 [[IVAR]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**<br class="">
// CHECK-NEXT#: [[T5:%.*]] = load i8*, i8** [[T4]]<br class="">
-// CHECK-NEXT#: [[T6:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
-// CHECK-NEXT#: call void @objc_release(i8* [[T5]])<br class="">
+// CHECK-NEXT#: [[T6:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
+// CHECK-NEXT#: call void @llvm.objc.release(i8* [[T5]])<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[T4]]<br class="">
<br class="">
// Return.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST30]]*, [[TEST30]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST30]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST30]]*<br class="">
// CHECK-NEXT: [[RET:%.*]] = bitcast [[TEST30]]* [[T1]] to i8*<br class="">
<br class="">
// Cleanup.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST30]]*, [[TEST30]]** [[SELF]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST30]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
<br class="">
// Epilogue.<br class="">
// CHECK-NEXT: ret i8* [[RET]]<br class="">
@@ -876,7 +876,7 @@ char *helper;<br class="">
__attribute__((ns_returns_retained)) id test32(void) {<br class="">
// CHECK-LABEL: define i8* @test32()<br class="">
// CHECK: [[CALL:%.*]] = call i8* @test32_helper()<br class="">
-// CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]])<br class="">
+// CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[CALL]])<br class="">
// CHECK-NEXT: ret i8* [[T0]]<br class="">
extern id test32_helper(void);<br class="">
return test32_helper();<br class="">
@@ -905,7 +905,7 @@ void test33(Test33 *ptr) {<br class="">
// CHECK-NEXT: [[TEMP1:%.*]] = alloca [[A_T]]*<br class="">
// CHECK-NEXT: [[TEMP2:%.*]] = alloca [[A_T]]*<br class="">
// CHECK-NEXT: bitcast<br class="">
- // CHECK-NEXT: objc_retain<br class="">
+ // CHECK-NEXT: llvm.objc.retain<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: bitcast<br class="">
@@ -920,13 +920,13 @@ void test33(Test33 *ptr) {<br class="">
// CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[TEMP0]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[A_T]]*, [[A_T]]** [[TEMP0]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A_T]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A_T]]*<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use([[A_T]]* [[W0]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = load [[A_T]]*, [[A_T]]** [[A]]<br class="">
// CHECK-NEXT: store [[A_T]]* [[T3]], [[A_T]]** [[A]]<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[A_T]]* [[T4]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T5]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T5]])<br class="">
<br class="">
// CHECK-NEXT: load [[TEST33]]*, [[TEST33]]** [[PTR]]<br class="">
// CHECK-NEXT: [[W0:%.*]] = load [[A_T]]*, [[A_T]]** [[A]]<br class="">
@@ -936,13 +936,13 @@ void test33(Test33 *ptr) {<br class="">
// CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[TEMP1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[A_T]]*, [[A_T]]** [[TEMP1]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A_T]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A_T]]*<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use([[A_T]]* [[W0]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = load [[A_T]]*, [[A_T]]** [[A]]<br class="">
// CHECK-NEXT: store [[A_T]]* [[T3]], [[A_T]]** [[A]]<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[A_T]]* [[T4]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T5]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T5]])<br class="">
<br class="">
// CHECK-NEXT: load [[TEST33]]*, [[TEST33]]** [[PTR]]<br class="">
// CHECK-NEXT: load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
@@ -962,21 +962,21 @@ void test33(Test33 *ptr) {<br class="">
// CHECK-NEXT: objc_msgSend{{.*}}, [[A_T]]** [[TEMP2]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[A_T]]*, [[A_T]]** [[TEMP2]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[A_T]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[A_T]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = load [[A_T]]*, [[A_T]]** [[A]]<br class="">
// CHECK-NEXT: store [[A_T]]* [[T3]], [[A_T]]** [[A]]<br class="">
// CHECK-NEXT: [[T5:%.*]] = bitcast [[A_T]]* [[T4]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T5]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T5]])<br class="">
<br class="">
// CHECK-NEXT: load<br class="">
// CHECK-NEXT: bitcast<br class="">
- // CHECK-NEXT: objc_release<br class="">
+ // CHECK-NEXT: llvm.objc.release<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end<br class="">
// CHECK-NEXT: load<br class="">
// CHECK-NEXT: bitcast<br class="">
- // CHECK-NEXT: objc_release<br class="">
+ // CHECK-NEXT: llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -985,21 +985,21 @@ void test33(Test33 *ptr) {<br class="">
void test36(id x) {<br class="">
// CHECK: [[X:%.*]] = alloca i8*<br class="">
<br class="">
- // CHECK: call i8* @objc_retain<br class="">
- // CHECK: call i8* @objc_retain<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id array[3] = { @"A", x, @"y" };<br class="">
<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
x = 0;<br class="">
<br class="">
// CHECK: br label<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: br i1<br class="">
<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -1023,17 +1023,17 @@ void test37(void) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[TEMP]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[TEST37]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST37]]* [[T1]] to i8*<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retain(i8* [[T2]])<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[TEST37]]*<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[W1]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T5:%.*]] = load [[TEST37]]*, [[TEST37]]** [[VAR]]<br class="">
// CHECK-NEXT: store [[TEST37]]* [[T4]], [[TEST37]]** [[VAR]]<br class="">
// CHECK-NEXT: [[T6:%.*]] = bitcast [[TEST37]]* [[T5]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T6]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T6]])<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[TEST37]]*, [[TEST37]]** [[VAR]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST37]]* [[T0]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// CHECK-NEXT: [[VARPTR2:%.*]] = bitcast [[TEST37]]** [[VAR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[VARPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1045,7 +1045,7 @@ void test37(void) {<br class="">
extern id test43_produce(void);<br class="">
return test43_produce();<br class="">
// CHECK: call i8* @test43_produce()<br class="">
- // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue(<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue(<br class="">
// CHECK-NEXT: ret <br class="">
}<br class="">
@end<br class="">
@@ -1067,21 +1067,21 @@ void test46(__weak id *wp, __weak volati<br class="">
// TODO: this is sub-optimal, we should retain at the actual call site.<br class="">
<br class="">
// CHECK: [[T0:%.*]] = call i8* @test46_helper()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8**, i8*** {{%.*}}, align 8<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retain(i8* [[T3]])<br class="">
// CHECK-NEXT: store i8* [[T4]], i8**<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
id x = *wp = test46_helper();<br class="">
<br class="">
// CHECK: [[T0:%.*]] = call i8* @test46_helper()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8**, i8*** {{%.*}}, align 8<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retain(i8* [[T3]])<br class="">
// CHECK-NEXT: store i8* [[T4]], i8**<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
id y = *wvp = test46_helper();<br class="">
}<br class="">
<br class="">
@@ -1096,16 +1096,16 @@ void test47(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[XPTR1]])<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]]<br class="">
// CHECK-NEXT: [[CALL:%.*]] = call i8* @test47_helper()<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]])<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[CALL]])<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** [[X]]<br class="">
// CHECK-NEXT: store i8* [[T2]], i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T3]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T3]])<br class="">
// CHECK-NEXT: [[T4:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T4]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T4]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1118,13 +1118,13 @@ void test48(void) {<br class="">
// CHECK: [[X:%.*]] = alloca i8*<br class="">
// CHECK-NEXT: [[XPTR1:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[XPTR1]])<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_initWeak(i8** [[X]], i8* null)<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.initWeak(i8** [[X]], i8* null)<br class="">
// CHECK-NEXT: [[T1:%.*]] = call i8* @test48_helper()<br class="">
- // CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[X]], i8* [[T2]])<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_storeWeak(i8** [[X]], i8* [[T3]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[X]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[X]], i8* [[T2]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[X]], i8* [[T3]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[X]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1139,10 +1139,10 @@ void test49(void) {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[XPTR1]])<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]]<br class="">
// CHECK-NEXT: [[CALL:%.*]] = call i8* @test49_helper()<br class="">
- // CHECK-NEXT: [[T0:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[CALL]])<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_autorelease(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[CALL]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.autorelease(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T2]], i8** [[X]]<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retainAutorelease(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retainAutorelease(i8* [[T1]])<br class="">
// CHECK-NEXT: store i8* [[T3]], i8** [[X]]<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
@@ -1153,8 +1153,8 @@ void test49(void) {<br class="">
id x();<br class="">
void test50(id y) {<br class="">
({x();});<br class="">
-// CHECK: [[T0:%.*]] = call i8* @objc_retain<br class="">
-// CHECK: call void @objc_release<br class="">
+// CHECK: [[T0:%.*]] = call i8* @llvm.objc.retain<br class="">
+// CHECK: call void @llvm.objc.release<br class="">
}<br class="">
<br class="">
<br class="">
@@ -1190,7 +1190,7 @@ id test52(void) {<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i32* [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[TMPALLOCA]]<br class="">
-// CHECK-NEXT: [[T3:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T2]])<br class="">
+// CHECK-NEXT: [[T3:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T2]])<br class="">
// CHECK-NEXT: ret i8* [[T3]]<br class="">
}<br class="">
<br class="">
@@ -1208,20 +1208,20 @@ void test53(void) {<br class="">
// CHECK-NEXT: [[YPTR1:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[YPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test53_helper()<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[Y]],<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]],<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[TMPALLOCA]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
// CHECK-NEXT: [[YPTR2:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[YPTR2]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** [[TMPALLOCA]]<br class="">
// CHECK-NEXT: store i8* [[T3]], i8** [[X]],<br class="">
// CHECK-NEXT: load i8*, i8** [[X]],<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1233,11 +1233,11 @@ void test54(int first, ...) {<br class="">
__builtin_va_list arglist;<br class="">
// CHECK: call void @llvm.va_start<br class="">
__builtin_va_start(arglist, first);<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id obj = __builtin_va_arg(arglist, id);<br class="">
// CHECK: call void @llvm.va_end<br class="">
__builtin_va_end(arglist);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -1261,7 +1261,7 @@ void test54(int first, ...) {<br class="">
+ (id) make {<br class="">
extern id test56_helper(void);<br class="">
// CHECK: [[T0:%.*]] = call i8* @test56_helper()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: ret i8* [[T1]]<br class="">
return test56_helper();<br class="">
}<br class="">
@@ -1275,7 +1275,7 @@ void test56_test(void) {<br class="">
// CHECK: [[T0:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[X]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1305,8 +1305,8 @@ void test56_test(void) {<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[TEST57]]* [[T0]] to i8*<br class="">
// CHECK-NEXT: [[T3:%.*]] = getelementptr inbounds i8, i8* [[T2]], i64 [[T1]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i8**<br class="">
-// CHECK-NEXT: [[T5:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T4]])<br class="">
-// CHECK-NEXT: [[T6:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T5]])<br class="">
+// CHECK-NEXT: [[T5:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T4]])<br class="">
+// CHECK-NEXT: [[T6:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T5]])<br class="">
// CHECK-NEXT: ret i8* [[T6]]<br class="">
<br class="">
// CHECK: define internal i8* @"\01-[Test57 unsafe]"(<br class="">
@@ -1328,11 +1328,11 @@ void test59(void) {<br class="">
<br class="">
// CHECK-LABEL: define void @test59()<br class="">
// CHECK: [[T0:%.*]] = call i8* @test59_getlock()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: call i32 @objc_sync_enter(i8* [[T1]])<br class="">
// CHECK-NEXT: call void @test59_body()<br class="">
// CHECK-NEXT: call i32 @objc_sync_exit(i8* [[T1]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -1350,27 +1350,27 @@ void test61(void) {<br class="">
extern id test61_make(void);<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test61_make()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T4:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[T1]], i8* [[T3]], i8* [[T2]])<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
[test61_make() performSelector: @selector(test61_void)];<br class="">
<br class="">
// CHECK-NEXT: [[YPTR1:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[YPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test61_make()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T3:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES_<br class="">
// CHECK-NEXT: [[T4:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*, i8*)*)(i8* [[T1]], i8* [[T3]], i8* [[T2]])<br class="">
- // CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]])<br class="">
+ // CHECK-NEXT: [[T5:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T4]])<br class="">
// CHECK-NEXT: store i8* [[T5]], i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
id y = [test61_make() performSelector: @selector(test61_id)];<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: [[YPTR2:%.*]] = bitcast i8** [[Y]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[YPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1400,7 +1400,7 @@ void test62(void) {<br class="">
// CHECK-NEXT: store i1 false, i1* [[CLEANUP_REQUIRED]]<br class="">
// CHECK-NEXT: br i1 [[T1]],<br class="">
// CHECK: [[T0:%.*]] = call i8* @test62_make()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[CLEANUP_VALUE]]<br class="">
// CHECK-NEXT: store i1 true, i1* [[CLEANUP_REQUIRED]]<br class="">
// CHECK-NEXT: [[T2:%.*]] = icmp ne i8* [[T1]], null<br class="">
@@ -1409,7 +1409,7 @@ void test62(void) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i1, i1* [[CLEANUP_REQUIRED]]<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[CLEANUP_VALUE]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: br i1 [[COND]]<br class="">
// CHECK: call void @test62_body()<br class="">
@@ -1455,20 +1455,20 @@ void test66(void) {<br class="">
// CHECK-LABEL: define void @test66()<br class="">
// CHECK: [[T0:%.*]] = call [[TEST66:%.*]]* @test66_receiver()<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[TEST66]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[TEST66]]*<br class="">
// CHECK-NEXT: [[T4:%.*]] = call i8* @test66_arg()<br class="">
-// CHECK-NEXT: [[T5:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T4]])<br class="">
+// CHECK-NEXT: [[T5:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T4]])<br class="">
// CHECK-NEXT: [[T6:%.*]] = load i8*, i8** @OBJC_SELECTOR_REFERENCES<br class="">
// CHECK-NEXT: [[T7:%.*]] = bitcast [[TEST66]]* [[T3]] to i8*<br class="">
// CHECK-NEXT: [[SIX:%.*]] = icmp eq i8* [[T7]], null<br class="">
// CHECK-NEXT: br i1 [[SIX]], label [[NULINIT:%.*]], label [[CALL:%.*]]<br class="">
// CHECK: call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, i8*)*)(i8* [[T7]], i8* [[T6]], i8* [[T5]])<br class="">
// CHECK-NEXT: br label [[CONT:%.*]]<br class="">
-// CHECK: call void @objc_release(i8* [[T5]]) [[NUW]]<br class="">
+// CHECK: call void @llvm.objc.release(i8* [[T5]]) [[NUW]]<br class="">
// CHECK-NEXT: br label [[CONT:%.*]]<br class="">
// CHECK: [[T8:%.*]] = bitcast [[TEST66]]* [[T3]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T8]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T8]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// <a href="rdar://problem/9953540" class="">rdar://problem/9953540</a><br class="">
@@ -1495,10 +1495,10 @@ void test68(void) {<br class="">
// CHECK-NEXT: [[CLPTR1:%.*]] = bitcast i8** [[CL]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[CLPTR1]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = call i8* @test67_helper()<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[CL]], align 8<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[CL]]<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
// CHECK-NEXT: [[CLPTR2:%.*]] = bitcast i8** [[CL]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[CLPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -1519,7 +1519,7 @@ void test70(id i) {<br class="">
// CHECK-LABEL: define void @test70<br class="">
// CHECK: store i8* null, i8**<br class="">
// CHECK: store i8* null, i8**<br class="">
- // CHECK: [[ID:%.*]] = call i8* @objc_retain(i8*<br class="">
+ // CHECK: [[ID:%.*]] = call i8* @llvm.objc.retain(i8*<br class="">
// CHECK: store i8* [[ID]], i8**<br class="">
id x[3] = {<br class="">
[2] = i<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/autorelease.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/autorelease.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/autorelease.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/autorelease.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/autorelease.m Tue Dec 18 12:33:00 2018<br class="">
@@ -25,9 +25,9 @@<br class="">
}<br class="">
@end<br class="">
<br class="">
-// CHECK: call i8* @objc_autoreleasePoolPush<br class="">
+// CHECK: call i8* @llvm.objc.autoreleasePoolPush<br class="">
// CHECK: [[T:%.*]] = load i8*, i8** [[A:%.*]]<br class="">
-// CHECK: call void @objc_autoreleasePoolPop<br class="">
+// CHECK: call void @llvm.objc.autoreleasePoolPop<br class="">
<br class="">
// <a href="rdar://13660038" class="">rdar://13660038</a><br class="">
int tryTo(int (*f)(void)) {<br class="">
@@ -41,7 +41,7 @@ int tryTo(int (*f)(void)) {<br class="">
}<br class="">
// CHECK-LABEL: define i32 @tryTo(i32 ()*<br class="">
// CHECK: [[RET:%.*]] = alloca i32,<br class="">
-// CHECK: [[T0:%.*]] = call i8* @objc_autoreleasePoolPush()<br class="">
+// CHECK: [[T0:%.*]] = call i8* @llvm.objc.autoreleasePoolPush()<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i32 ()*, i32 ()** {{%.*}},<br class="">
// CHECK-NEXT: [[T2:%.*]] = invoke i32 [[T1]]()<br class="">
// CHECK: store i32 [[T2]], i32* [[RET]]<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/debug-info-block-line.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-block-line.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/debug-info-block-line.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/debug-info-block-line.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/debug-info-block-line.m Tue Dec 18 12:33:00 2018<br class="">
@@ -62,16 +62,16 @@ typedef enum : NSUInteger {<br class="">
TMap *map = [TMap mapForID:mapID];<br class="">
// Make sure we do not map code generated for the block to the above line.<br class="">
// CHECK: define internal void @"__39-[TServer serverConnection:getCommand:]_block_invoke"<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[ZERO:%.*]], i8* [[ONE:%.*]]) [[NUW:#[0-9]+]]<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[TWO:%.*]], i8* [[THREE:%.*]]) [[NUW]]<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[ZERO:%.*]], i8* [[ONE:%.*]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[TWO:%.*]], i8* [[THREE:%.*]]) [[NUW]]<br class="">
// CHECK: call {{.*}}@objc_msgSend{{.*}}, !dbg ![[LINE_ABOVE:[0-9]+]]<br class="">
// CHECK: getelementptr<br class="">
// CHECK-NOT: !dbg, ![[LINE_ABOVE]]<br class="">
// CHECK: bitcast %5** [[TMP:%.*]] to i8**<br class="">
// CHECK-NOT: !dbg, ![[LINE_ABOVE]]<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[VAL1:%.*]], i8* null) [[NUW]]<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[VAL1:%.*]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: bitcast %4** [[TMP:%.*]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[VAL2:%.*]], i8* null) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[VAL2:%.*]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: ret<br class="">
// CHECK: attributes [[NUW]] = { nounwind }<br class="">
[map dataWithCompletionBlock:^(NSData *data, NSError *error) {<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/empty-collection-literals.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/empty-collection-literals.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/empty-collection-literals.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/empty-collection-literals.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/empty-collection-literals.m Tue Dec 18 12:33:00 2018<br class="">
@@ -17,16 +17,16 @@ void test_empty_array() {<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS-NOT: ret void<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS: {{call.*objc_msgSend}}<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS-NOT: ret void<br class="">
- // CHECK-WITHOUT-EMPTY-COLLECTIONS: {{call.*objc_retainAutoreleasedReturnValue}}<br class="">
+ // CHECK-WITHOUT-EMPTY-COLLECTIONS: {{call.*llvm.objc.retainAutoreleasedReturnValue}}<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS: ret void<br class="">
<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-LABEL: define void @test_empty_array<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NOT: ret void<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS: load {{.*}} @__NSArray0__<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NOT: ret void<br class="">
- // CHECK-WITH-EMPTY-COLLECTIONS: {{call.*objc_retain\(}}<br class="">
+ // CHECK-WITH-EMPTY-COLLECTIONS: {{call.*llvm.objc.retain\(}}<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NOT: ret void<br class="">
- // CHECK-WITH-EMPTY-COLLECTIONS: call void @objc_storeStrong<br class="">
+ // CHECK-WITH-EMPTY-COLLECTIONS: call void @llvm.objc.storeStrong<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NEXT: ret void<br class="">
NSArray *arr = @[];<br class="">
}<br class="">
@@ -36,16 +36,16 @@ void test_empty_dictionary() {<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS-NOT: ret void<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS: {{call.*objc_msgSend}}<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS-NOT: ret void<br class="">
- // CHECK-WITHOUT-EMPTY-COLLECTIONS: {{call.*objc_retainAutoreleasedReturnValue}}<br class="">
+ // CHECK-WITHOUT-EMPTY-COLLECTIONS: {{call.*llvm.objc.retainAutoreleasedReturnValue}}<br class="">
// CHECK-WITHOUT-EMPTY-COLLECTIONS: ret void<br class="">
<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-LABEL: define void @test_empty_dictionary<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NOT: ret void<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS: load {{.*}} @__NSDictionary0__{{.*}}!invariant.load<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NOT: ret void<br class="">
- // CHECK-WITH-EMPTY-COLLECTIONS: {{call.*objc_retain\(}}<br class="">
+ // CHECK-WITH-EMPTY-COLLECTIONS: {{call.*llvm.objc.retain\(}}<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NOT: ret void<br class="">
- // CHECK-WITH-EMPTY-COLLECTIONS: call void @objc_storeStrong<br class="">
+ // CHECK-WITH-EMPTY-COLLECTIONS: call void @llvm.objc.storeStrong<br class="">
// CHECK-WITH-EMPTY-COLLECTIONS-NEXT: ret void<br class="">
NSDictionary *dict = @{};<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/fragile-arc.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/fragile-arc.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/fragile-arc.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/fragile-arc.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/fragile-arc.m Tue Dec 18 12:33:00 2018<br class="">
@@ -37,7 +37,7 @@<br class="">
// CHECK-NEXT: [[IVAR:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]**<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[OPAQUE]]*, [[OPAQUE]]** [[IVAR]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[OPAQUE]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[OPAQUE]]*<br class="">
// CHECK-NEXT: store [[OPAQUE]]* [[T3]], [[OPAQUE]]** [[X]]<br class="">
Opaque *x = strong;<br class="">
@@ -48,10 +48,10 @@<br class="">
// CHECK-NEXT: [[IVAR:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]**<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[IVAR]] to i8**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[OPAQUE]]* [[VALUE]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* [[T1]])<br class="">
strong = x;<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[X]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -64,7 +64,7 @@<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8, i8* [[T0]], i32 8<br class="">
// CHECK-NEXT: [[IVAR:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]**<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[IVAR]] to i8**<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]*<br class="">
// CHECK-NEXT: store [[OPAQUE]]* [[T2]], [[OPAQUE]]** [[X]]<br class="">
Opaque *x = weak;<br class="">
@@ -75,10 +75,10 @@<br class="">
// CHECK-NEXT: [[IVAR:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]**<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[IVAR]] to i8**<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[OPAQUE]]* [[VALUE]] to i8*<br class="">
-// CHECK-NEXT: call i8* @objc_storeWeak(i8** [[T0]], i8* [[T1]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[T0]], i8* [[T1]])<br class="">
weak = x;<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[X]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -89,12 +89,12 @@<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8, i8* [[T0]], i32 8<br class="">
// CHECK-NEXT: [[IVAR:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]**<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[IVAR]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]* [[SELF]] to i8*<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds i8, i8* [[T0]], i32 4<br class="">
// CHECK-NEXT: [[IVAR:%.*]] = bitcast i8* [[T1]] to [[OPAQUE]]**<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[OPAQUE]]** [[IVAR]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
@end<br class="">
<br class="">
@@ -151,17 +151,17 @@ void testBlockLayoutWeak(__weak id x) {<br class="">
// CHECK: br i1<br class="">
// CHECK: [[T0:%.*]] = bitcast i8* [[EXN]] to [[A]]*<br class="">
// CHECK: [[T1:%.*]] = bitcast [[A]]* [[T0]] to i8*<br class="">
-// CHECK: [[T2:%.*]] = call i8* @objc_retain(i8* [[T1]])<br class="">
+// CHECK: [[T2:%.*]] = call i8* @llvm.objc.retain(i8* [[T1]])<br class="">
// CHECK: [[T3:%.*]] = bitcast i8* [[T2]] to [[A]]*<br class="">
// CHECK: store [[A]]* [[T3]], [[A]]** [[X]]<br class="">
// CHECK: call void @checkpoint(i32 1)<br class="">
// CHECK: [[T0:%.*]] = bitcast [[A]]** [[X]] to i8**<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[T0]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null)<br class="">
// CHECK: br label<br class="">
-// CHECK: [[T0:%.*]] = call i8* @objc_retain(i8* [[EXN]])<br class="">
+// CHECK: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[EXN]])<br class="">
// CHECK: store i8* [[T0]], i8** [[Y]]<br class="">
// CHECK: call void @checkpoint(i32 2)<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[Y]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[Y]], i8* null)<br class="">
extern void checkpoint(int n);<br class="">
void testCatch() {<br class="">
@try {<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/mrc-weak.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/mrc-weak.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/mrc-weak.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/mrc-weak.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/mrc-weak.m Tue Dec 18 12:33:00 2018<br class="">
@@ -46,15 +46,15 @@<br class="">
<br class="">
@implementation Foo<br class="">
// CHECK-LABEL: define internal void @"\01-[Foo .cxx_destruct]"<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
@end<br class="">
<br class="">
<br class="">
void test1(__weak id x) {}<br class="">
// CHECK-LABEL: define void @test1<br class="">
// CHECK: [[X:%.*]] = alloca i8*,<br class="">
-// CHECK-NEXT: objc_initWeak<br class="">
-// CHECK-NEXT: objc_destroyWeak<br class="">
+// CHECK-NEXT: @llvm.objc.initWeak<br class="">
+// CHECK-NEXT: @llvm.objc.destroyWeak<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
void test2(id y) {<br class="">
@@ -65,8 +65,8 @@ void test2(id y) {<br class="">
// CHECK-NEXT: [[Z:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[Z]], i8* [[T0]])<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Z]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[Z]], i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Z]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
void test3(id y) {<br class="">
@@ -79,8 +79,8 @@ void test3(id y) {<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: store i8* null, i8** [[Z]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-NEXT: call i8* @objc_storeWeak(i8** [[Z]], i8* [[T0]])<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Z]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[Z]], i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Z]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
void test4(__weak id *p) {<br class="">
@@ -91,7 +91,7 @@ void test4(__weak id *p) {<br class="">
// CHECK-NEXT: [[Y:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8**, i8*** [[P]]<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[Y]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -103,7 +103,7 @@ void test5(__weak id *p) {<br class="">
// CHECK-NEXT: [[Y:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8**, i8*** [[P]]<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[Y]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -116,7 +116,7 @@ void test6(__weak Foo **p) {<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[FOO]]**, [[FOO]]*** [[P]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[FOO]]** [[T0]] to i8**<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[FOO]]*<br class="">
// CHECK-NEXT: store [[FOO]]* [[T3]], [[FOO]]** [[Y]]<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -134,32 +134,32 @@ void test7(void) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[FOO]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[FOO]]** [[P]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[FOO]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]])<br class="">
-// CHECK: call void @objc_copyWeak<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]])<br class="">
+// CHECK: call void @llvm.objc.copyWeak<br class="">
// CHECK: call void @use_block<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block<br class="">
-// CHECK: @objc_copyWeak<br class="">
+// CHECK: @llvm.objc.copyWeak<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block<br class="">
-// CHECK: @objc_destroyWeak<br class="">
+// CHECK: @llvm.objc.destroyWeak<br class="">
<br class="">
void test8(void) {<br class="">
__block __weak Foo *p = get_object();<br class="">
use_block(^{ [p run ]; });<br class="">
}<br class="">
// CHECK-LABEL: define void @test8<br class="">
-// CHECK: call i8* @objc_initWeak<br class="">
-// CHECK-NOT: call void @objc_copyWeak<br class="">
+// CHECK: call i8* @llvm.objc.initWeak<br class="">
+// CHECK-NOT: call void @llvm.objc.copyWeak<br class="">
// CHECK: call void @use_block<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_copy<br class="">
-// CHECK: call void @objc_moveWeak<br class="">
+// CHECK: call void @llvm.objc.moveWeak<br class="">
<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_dispose<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
<br class="">
// CHECK-LABEL: define void @test9_baseline()<br class="">
// CHECK: define linkonce_odr hidden void @__copy_helper<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/noescape.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/noescape.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/noescape.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/noescape.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/noescape.m Tue Dec 18 12:33:00 2018<br class="">
@@ -94,7 +94,7 @@ void test5(BlockTy2 b, int *p) {<br class="">
// CHECK: %[[BLOCK:.*]] = alloca <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8* }>, align 8<br class="">
// CHECK-NOARC: store i8* %[[B]], i8** %[[B_ADDR]], align 8<br class="">
// CHECK-ARC: store i8* null, i8** %[[B_ADDR]], align 8<br class="">
-// CHECK-ARC: call void @objc_storeStrong(i8** %[[B_ADDR]], i8* %[[B]])<br class="">
+// CHECK-ARC: call void @llvm.objc.storeStrong(i8** %[[B_ADDR]], i8* %[[B]])<br class="">
// CHECK-ARC: %[[V0:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8* }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8* }>* %[[BLOCK]], i32 0, i32 5<br class="">
// CHECK: %[[BLOCK_ISA:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8* }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8* }>* %[[BLOCK]], i32 0, i32 0<br class="">
// CHECK: store i8* bitcast (i8** @_NSConcreteGlobalBlock to i8*), i8** %[[BLOCK_ISA]], align 8<br class="">
@@ -106,11 +106,11 @@ void test5(BlockTy2 b, int *p) {<br class="">
// CHECK-NOARC: %[[V1:.*]] = load i8*, i8** %[[B_ADDR]], align 8<br class="">
// CHECK-NOARC: store i8* %[[V1]], i8** %[[BLOCK_CAPTURED]], align 8<br class="">
// CHECK-ARC: %[[V2:.*]] = load i8*, i8** %[[B_ADDR]], align 8<br class="">
-// CHECK-ARC: %[[V3:.*]] = call i8* @objc_retain(i8* %[[V2]])<br class="">
+// CHECK-ARC: %[[V3:.*]] = call i8* @llvm.objc.retain(i8* %[[V2]])<br class="">
// CHECK-ARC: store i8* %[[V3]], i8** %[[BLOCK_CAPTURED]], align 8<br class="">
// CHECK: call void @noescapeFunc0(<br class="">
-// CHECK-ARC: call void @objc_storeStrong(i8** %[[V0]], i8* null)<br class="">
-// CHECK-ARC: call void @objc_storeStrong(i8** %[[B_ADDR]], i8* null)<br class="">
+// CHECK-ARC: call void @llvm.objc.storeStrong(i8** %[[V0]], i8* null)<br class="">
+// CHECK-ARC: call void @llvm.objc.storeStrong(i8** %[[B_ADDR]], i8* null)<br class="">
<br class="">
// Non-escaping blocks don't need copy/dispose helper functions.<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/ns_consume_null_check.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/ns_consume_null_check.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/ns_consume_null_check.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/ns_consume_null_check.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/ns_consume_null_check.m Tue Dec 18 12:33:00 2018<br class="">
@@ -17,7 +17,7 @@ void test0(void) {<br class="">
[x isEqual : obj];<br class="">
}<br class="">
// CHECK-LABEL: define void @test0()<br class="">
-// CHECK: [[FIVE:%.*]] = call i8* @objc_retain<br class="">
+// CHECK: [[FIVE:%.*]] = call i8* @llvm.objc.retain<br class="">
// CHECK-NEXT: [[SIX:%.*]] = bitcast<br class="">
// CHECK-NEXT: [[SEVEN:%.*]] = icmp eq i8* [[SIX]], null<br class="">
// CHECK-NEXT: br i1 [[SEVEN]], label [[NULLINIT:%.*]], label [[CALL_LABEL:%.*]]<br class="">
@@ -25,7 +25,7 @@ void test0(void) {<br class="">
// CHECK-NEXT: [[EIGHT:%.*]] = bitcast i8* [[FN]]<br class="">
// CHECK-NEXT: [[CALL:%.*]] = call signext i8 [[EIGHT]]<br class="">
// CHECK-NEXT: br label [[CONT:%.*]]<br class="">
-// CHECK: call void @objc_release(i8* [[FIVE]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK: call void @llvm.objc.release(i8* [[FIVE]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NEXT: br label [[CONT]]<br class="">
// CHECK: phi i8 [ [[CALL]], {{%.*}} ], [ 0, {{%.*}} ]<br class="">
<br class="">
@@ -44,11 +44,11 @@ void test1(void) {<br class="">
// CHECK: [[T0:%.*]] = call i8* bitcast (<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[OBJ]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[OBJ]]<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAKOBJ]], i8* [[T0]]) [[NUW]]<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[WEAKOBJ]], i8* [[T0]]) [[NUW]]<br class="">
// Okay, start the message-send.<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[MYOBJECT:%.*]]*, [[MYOBJECT:%.*]]** @x<br class="">
// CHECK-NEXT: [[ARG:%.*]] = load i8*, i8** [[OBJ]]<br class="">
-// CHECK-NEXT: [[ARG_RETAINED:%.*]] = call i8* @objc_retain(i8* [[ARG]])<br class="">
+// CHECK-NEXT: [[ARG_RETAINED:%.*]] = call i8* @llvm.objc.retain(i8* [[ARG]])<br class="">
// CHECK-NEXT: load i8*, i8** @<br class="">
// CHECK-NEXT: [[SELF:%.*]] = bitcast [[MYOBJECT]]* [[T0]] to i8*<br class="">
// Null check.<br class="">
@@ -65,7 +65,7 @@ void test1(void) {<br class="">
// CHECK-NEXT: [[IMAGCALL:%.*]] = load float, float* [[T0]]<br class="">
// CHECK-NEXT: br label [[CONT:%.*]]{{$}}<br class="">
// Null path.<br class="">
-// CHECK: call void @objc_release(i8* [[ARG_RETAINED]]) [[NUW]]<br class="">
+// CHECK: call void @llvm.objc.release(i8* [[ARG_RETAINED]]) [[NUW]]<br class="">
// CHECK-NEXT: br label [[CONT]]<br class="">
// Join point.<br class="">
// CHECK: [[REAL:%.*]] = phi float [ [[REALCALL]], [[INVOKE_CONT]] ], [ 0.000000e+00, [[FORNULL]] ]<br class="">
@@ -75,11 +75,11 @@ void test1(void) {<br class="">
// CHECK-NEXT: store float [[REAL]], float* [[T0]]<br class="">
// CHECK-NEXT: store float [[IMAG]], float* [[T1]]<br class="">
// Epilogue.<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[WEAKOBJ]]) [[NUW]]<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[OBJ]], i8* null) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[WEAKOBJ]]) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[OBJ]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: ret void<br class="">
// Cleanup.<br class="">
// CHECK: landingpad<br class="">
-// CHECK: call void @objc_destroyWeak(i8** [[WEAKOBJ]]) [[NUW]]<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** [[WEAKOBJ]]) [[NUW]]<br class="">
<br class="">
// CHECK: attributes [[NUW]] = { nounwind }<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-ios-arc.m Tue Dec 18 12:33:00 2018<br class="">
@@ -25,9 +25,9 @@ void doRange() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
NSRange ns_range = { .location = 0, .length = 42 };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8* {{.*}}[[RANGE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *range = @(ns_range);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -44,9 +44,9 @@ void doPoint() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
CGPoint cg_point = { .x = 42, .y = 24 };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8* {{.*}}[[POINT_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *point = @(cg_point);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -63,9 +63,9 @@ void doSize() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
CGSize cg_size = { .width = 42, .height = 24 };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8* {{.*}}[[SIZE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *size = @(cg_size);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -84,9 +84,9 @@ void doRect() {<br class="">
CGSize cg_size = { .width = 42, .height = 24 };<br class="">
CGRect cg_rect = { .origin = cg_point, .size = cg_size };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8*{{.*}}[[RECT_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *rect = @(cg_rect);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -103,9 +103,9 @@ void doNSEdgeInsets() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
NSEdgeInsets ns_edge_insets;<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8*{{.*}}[[EDGE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *edge_insets = @(ns_edge_insets);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -118,9 +118,9 @@ void doRangeRValue() {<br class="">
// CHECK: [[SEL:%.*]] = load i8*, i8** [[VALUE_SEL]]<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[COERCE_CAST]], i8* {{.*}}[[RANGE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *range_rvalue = @(getRange());<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/nsvalue-objc-boxable-mac-arc.m Tue Dec 18 12:33:00 2018<br class="">
@@ -25,9 +25,9 @@ void doRange() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
NSRange ns_range = { .location = 0, .length = 42 };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8* {{.*}}[[RANGE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *range = @(ns_range);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -44,9 +44,9 @@ void doPoint() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
NSPoint ns_point = { .x = 42, .y = 24 };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8* {{.*}}[[POINT_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *point = @(ns_point);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -63,9 +63,9 @@ void doSize() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
NSSize ns_size = { .width = 42, .height = 24 };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8* {{.*}}[[SIZE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *size = @(ns_size);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -84,9 +84,9 @@ void doRect() {<br class="">
NSSize ns_size = { .width = 42, .height = 24 };<br class="">
NSRect ns_rect = { .origin = ns_point, .size = ns_size };<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8*{{.*}}[[RECT_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *rect = @(ns_rect);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -103,9 +103,9 @@ void doNSEdgeInsets() {<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
NSEdgeInsets ns_edge_insets;<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[PARAM_CAST]], i8*{{.*}}[[EDGE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *edge_insets = @(ns_edge_insets);<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -122,9 +122,9 @@ void doRangeRValue() {<br class="">
// CHECK: [[SEL:%.*]] = load i8*, i8** [[VALUE_SEL]]<br class="">
// CHECK: [[RECV:%.*]] = bitcast %struct._class_t* [[RECV_PTR]] to i8*<br class="">
// CHECK: call {{.*objc_msgSend.*}}(i8* [[RECV]], i8* [[SEL]], i8* [[COERCE_CAST]], i8* {{.*}}[[RANGE_STR]]{{.*}})<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
NSValue *range_rvalue = @(getRange());<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/objc-arc-container-subscripting.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/objc-arc-container-subscripting.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/objc-arc-container-subscripting.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/objc-arc-container-subscripting.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/objc-arc-container-subscripting.m Tue Dec 18 12:33:00 2018<br class="">
@@ -12,10 +12,10 @@ id func() {<br class="">
}<br class="">
<br class="">
// CHECK: [[call:%.*]] = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
-// CHECK: [[SIX:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[call]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK: [[SIX:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[call]]) [[NUW:#[0-9]+]]<br class="">
// CHECK: [[ARRAY_CASTED:%.*]] = bitcast %0** {{%.*}} to i8**<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[ARRAY_CASTED]], i8* null)<br class="">
-// CHECK: [[EIGHT:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[SIX]]) [[NUW]]<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[ARRAY_CASTED]], i8* null)<br class="">
+// CHECK: [[EIGHT:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[SIX]]) [[NUW]]<br class="">
// CHECK: ret i8* [[EIGHT]]<br class="">
<br class="">
// CHECK: attributes [[NUW]] = { nounwind }<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/os_log.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/os_log.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/os_log.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/os_log.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/os_log.m Tue Dec 18 12:33:00 2018<br class="">
@@ -21,7 +21,7 @@ void *test_builtin_os_log(void *buf) {<br class="">
<br class="">
// CHECK: %[[CALL:.*]] = tail call %[[TY0:.*]]* (...) @GenString()<br class="">
// CHECK: %[[V0:.*]] = bitcast %[[TY0]]* %[[CALL]] to i8*<br class="">
- // CHECK: %[[V1:.*]] = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %[[V0]])<br class="">
+ // CHECK: %[[V1:.*]] = tail call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %[[V0]])<br class="">
// CHECK: %[[V2:.*]] = ptrtoint %[[TY0]]* %[[CALL]] to i64<br class="">
// CHECK: store i8 2, i8* %[[BUF]], align 1<br class="">
// CHECK: %[[NUMARGS_I:.*]] = getelementptr i8, i8* %[[BUF]], i64 1<br class="">
@@ -34,7 +34,7 @@ void *test_builtin_os_log(void *buf) {<br class="">
// CHECK: %[[ARGDATACAST_I:.*]] = bitcast i8* %[[ARGDATA_I]] to i64*<br class="">
// CHECK: store i64 %[[V2]], i64* %[[ARGDATACAST_I]], align 1<br class="">
// CHECK: tail call void (...) @clang.arc.use(%[[TY0]]* %[[CALL]])<br class="">
- // CHECK: tail call void @objc_release(i8* %[[V0]])<br class="">
+ // CHECK: tail call void @llvm.objc.release(i8* %[[V0]])<br class="">
// CHECK: ret i8* %[[BUF]]<br class="">
<br class="">
// clang.arc.use is used and removed in IR optimizations. At O0, we should not<br class="">
@@ -45,13 +45,13 @@ void *test_builtin_os_log(void *buf) {<br class="">
// CHECK-O0: %[[V0:.*]] = load i8*, i8** %[[BUF_ADDR]], align 8<br class="">
// CHECK-O0: %[[CALL:.*]] = call %[[TY0:.*]]* (...) @GenString()<br class="">
// CHECK-O0: %[[V1:.*]] = bitcast %[[TY0]]* %[[CALL]] to i8*<br class="">
- // CHECK-O0: %[[V2:.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* %[[V1]])<br class="">
+ // CHECK-O0: %[[V2:.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* %[[V1]])<br class="">
// CHECK-O0: %[[V3:.*]] = bitcast i8* %[[V2]] to %[[TY0]]*<br class="">
// CHECK-O0: %[[V4:.*]] = ptrtoint %[[TY0]]* %[[V3]] to i64<br class="">
// CHECK-O0: call void @__os_log_helper_1_2_1_8_64(i8* %[[V0]], i64 %[[V4]])<br class="">
// CHECK-O0: %[[V5:.*]] = bitcast %[[TY0]]* %[[V3]] to i8*<br class="">
// CHECK-O0-NOT call void (...) @clang.arc.use({{.*}}<br class="">
- // CHECK-O0: call void @objc_release(i8* %[[V5]])<br class="">
+ // CHECK-O0: call void @llvm.objc.release(i8* %[[V5]])<br class="">
// CHECK-O0: ret i8* %[[V0]]<br class="">
}<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/parameterized_classes.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/parameterized_classes.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/parameterized_classes.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/parameterized_classes.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/parameterized_classes.m Tue Dec 18 12:33:00 2018<br class="">
@@ -61,11 +61,11 @@ void printMe(NSString *name) { }<br class="">
// CHECK-LABEL: define void @blockTest<br class="">
void blockTest(NSMutableArray<void (^)(void)> *array, NSString *name) {<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call i8* @objc_retainBlock<br class="">
+ // CHECK: call i8* @llvm.objc.retainBlock<br class="">
[array addObject: ^ { printMe(name); }];<br class="">
// CHECK-NOT: ret void<br class="">
array[0] = ^ { printMe(name); };<br class="">
- // CHECK: call i8* @objc_retainBlock<br class="">
+ // CHECK: call i8* @llvm.objc.retainBlock<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -80,7 +80,7 @@ void blockTest(NSMutableArray<void (^)(v<br class="">
// CHECK: %[[V5:.*]] = bitcast i8* %[[ADDPTR]] to %[[IVARTY]]**<br class="">
// CHECK: %[[V6:.*]] = bitcast %[[IVARTY]]** %[[V5]] to i8**<br class="">
// CHECK: %[[V7:.*]] = bitcast %[[IVARTY]]* %[[V2]] to i8*<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V6]], i8* %[[V7]])<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V6]], i8* %[[V7]])<br class="">
<br class="">
@interface Base<DestType> : NSObject {<br class="">
DestType _destination;<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/stret-lifetime.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/stret-lifetime.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/stret-lifetime.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/stret-lifetime.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/stret-lifetime.m Tue Dec 18 12:33:00 2018<br class="">
@@ -27,7 +27,7 @@ void foo(id o, id p) {<br class="">
// CHECK: @llvm.lifetime.end<br class="">
// ARC: br label<br class="">
<br class="">
- // ARC: call void @objc_release<br class="">
+ // ARC: call void @llvm.objc.release<br class="">
// ARC: br label<br class="">
<br class="">
// CHECK-NOT: call void @llvm.memset<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/strong-in-c-struct.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/strong-in-c-struct.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/strong-in-c-struct.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/strong-in-c-struct.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/strong-in-c-struct.m Tue Dec 18 12:33:00 2018<br class="">
@@ -125,7 +125,7 @@ void func(Strong *);<br class="">
// CHECK: %[[V1:.*]] = bitcast i8** %[[V0]] to i8*<br class="">
// CHECK: %[[V2:.*]] = getelementptr inbounds i8, i8* %[[V1]], i64 24<br class="">
// CHECK: %[[V3:.*]] = bitcast i8* %[[V2]] to i8**<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V3]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V3]], i8* null)<br class="">
// CHECK: ret void<br class="">
<br class="">
// CHECK: define linkonce_odr hidden void @__destructor_8_s16(i8** %[[DST:.*]])<br class="">
@@ -135,7 +135,7 @@ void func(Strong *);<br class="">
// CHECK: %[[V1:.*]] = bitcast i8** %[[V0]] to i8*<br class="">
// CHECK: %[[V2:.*]] = getelementptr inbounds i8, i8* %[[V1]], i64 16<br class="">
// CHECK: %[[V3:.*]] = bitcast i8* %[[V2]] to i8**<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V3]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V3]], i8* null)<br class="">
// CHECK: ret void<br class="">
<br class="">
void test_constructor_destructor_StrongOuter(void) {<br class="">
@@ -169,7 +169,7 @@ void test_constructor_destructor_StrongO<br class="">
// CHECK: %[[V6:.*]] = getelementptr inbounds i8, i8* %[[V5]], i64 24<br class="">
// CHECK: %[[V7:.*]] = bitcast i8* %[[V6]] to i8**<br class="">
// CHECK: %[[V8:.*]] = load i8*, i8** %[[V7]], align 8<br class="">
-// CHECK: %[[V9:.*]] = call i8* @objc_retain(i8* %[[V8]])<br class="">
+// CHECK: %[[V9:.*]] = call i8* @llvm.objc.retain(i8* %[[V8]])<br class="">
// CHECK: store i8* %[[V9]], i8** %[[V4]], align 8<br class="">
// CHECK: %[[V10:.*]] = bitcast i8** %[[V0]] to i8*<br class="">
// CHECK: %[[V11:.*]] = getelementptr inbounds i8, i8* %[[V10]], i64 32<br class="">
@@ -200,7 +200,7 @@ void test_constructor_destructor_StrongO<br class="">
// CHECK: %[[V8:.*]] = getelementptr inbounds i8, i8* %[[V7]], i64 16<br class="">
// CHECK: %[[V9:.*]] = bitcast i8* %[[V8]] to i8**<br class="">
// CHECK: %[[V10:.*]] = load i8*, i8** %[[V9]], align 8<br class="">
-// CHECK: %[[V11:.*]] = call i8* @objc_retain(i8* %[[V10]])<br class="">
+// CHECK: %[[V11:.*]] = call i8* @llvm.objc.retain(i8* %[[V10]])<br class="">
// CHECK: store i8* %[[V11]], i8** %[[V6]], align 8<br class="">
// CHECK: ret void<br class="">
<br class="">
@@ -222,7 +222,7 @@ void test_copy_constructor_StrongOuter(S<br class="">
// CHECK: %[[V6:.*]] = getelementptr inbounds i8, i8* %[[V5]], i64 24<br class="">
// CHECK: %[[V7:.*]] = bitcast i8* %[[V6]] to i8**<br class="">
// CHECK: %[[V8:.*]] = load i8*, i8** %[[V7]], align 8<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V4]], i8* %[[V8]])<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* %[[V8]])<br class="">
<br class="">
void test_copy_assignment_StrongOuter(StrongOuter *d, StrongOuter *s) {<br class="">
*d = *s;<br class="">
@@ -283,7 +283,7 @@ void test_move_constructor_StrongOuter(v<br class="">
// CHECK: store i8* null, i8** %[[V7]], align 8<br class="">
// CHECK: %[[V9:.*]] = load i8*, i8** %[[V4]], align 8<br class="">
// CHECK: store i8* %[[V8]], i8** %[[V4]], align 8<br class="">
-// CHECK: call void @objc_release(i8* %[[V9]])<br class="">
+// CHECK: call void @llvm.objc.release(i8* %[[V9]])<br class="">
<br class="">
void test_move_assignment_StrongOuter(StrongOuter *p) {<br class="">
*p = getStrongOuter();<br class="">
@@ -363,7 +363,7 @@ void test_destructor_ignored_result(void<br class="">
// CHECK: %[[V0:.*]] = load i8**, i8*** %[[DST_ADDR]], align 8<br class="">
// CHECK: %[[V1:.*]] = load i8**, i8*** %[[SRC_ADDR]], align 8<br class="">
// CHECK: %[[V2:.*]] = load i8*, i8** %[[V1]], align 8<br class="">
-// CHECK: %[[V3:.*]] = call i8* @objc_retainBlock(i8* %[[V2]])<br class="">
+// CHECK: %[[V3:.*]] = call i8* @llvm.objc.retainBlock(i8* %[[V2]])<br class="">
// CHECK: store i8* %[[V3]], i8** %[[V0]], align 8<br class="">
// CHECK: ret void<br class="">
<br class="">
@@ -382,10 +382,10 @@ void test_copy_constructor_StrongBlock(S<br class="">
// CHECK: %[[V0:.*]] = load i8**, i8*** %[[DST_ADDR]], align 8<br class="">
// CHECK: %[[V1:.*]] = load i8**, i8*** %[[SRC_ADDR]], align 8<br class="">
// CHECK: %[[V2:.*]] = load i8*, i8** %[[V1]], align 8<br class="">
-// CHECK: %[[V3:.*]] = call i8* @objc_retainBlock(i8* %[[V2]])<br class="">
+// CHECK: %[[V3:.*]] = call i8* @llvm.objc.retainBlock(i8* %[[V2]])<br class="">
// CHECK: %[[V4:.*]] = load i8*, i8** %[[V0]], align 8<br class="">
// CHECK: store i8* %[[V3]], i8** %[[V0]], align 8<br class="">
-// CHECK: call void @objc_release(i8* %[[V4]])<br class="">
+// CHECK: call void @llvm.objc.release(i8* %[[V4]])<br class="">
// CHECK: ret void<br class="">
<br class="">
void test_copy_assignment_StrongBlock(StrongBlock *d, StrongBlock *s) {<br class="">
@@ -398,7 +398,7 @@ void test_copy_assignment_StrongBlock(St<br class="">
<br class="">
// CHECK: define linkonce_odr hidden void @__copy_constructor_8_8_t0w4_sv8(<br class="">
// CHECK: %[[V8:.*]] = load volatile i8*, i8** %{{.*}}, align 8<br class="">
-// CHECK: %[[V9:.*]] = call i8* @objc_retain(i8* %[[V8]])<br class="">
+// CHECK: %[[V9:.*]] = call i8* @llvm.objc.retain(i8* %[[V8]])<br class="">
// CHECK: store volatile i8* %[[V9]], i8** %{{.*}}, align 8<br class="">
<br class="">
void test_copy_constructor_StrongVolatile0(StrongVolatile *s) {<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjC/weak-in-c-struct.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/weak-in-c-struct.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjC/weak-in-c-struct.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjC/weak-in-c-struct.m (original)<br class="">
+++ cfe/trunk/test/CodeGenObjC/weak-in-c-struct.m Tue Dec 18 12:33:00 2018<br class="">
@@ -40,7 +40,7 @@ void calleeWeak(Weak);<br class="">
// ARM64: %[[V1:.*]] = bitcast i8** %[[V0]] to i8*<br class="">
// ARM64: %[[V2:.*]] = getelementptr inbounds i8, i8* %[[V1]], i64 8<br class="">
// ARM64: %[[V3:.*]] = bitcast i8* %[[V2]] to i8**<br class="">
-// ARM64: call void @objc_destroyWeak(i8** %[[V3]])<br class="">
+// ARM64: call void @llvm.objc.destroyWeak(i8** %[[V3]])<br class="">
<br class="">
void test_constructor_destructor_Weak(void) {<br class="">
Weak t;<br class="">
@@ -67,7 +67,7 @@ void test_constructor_destructor_Weak(vo<br class="">
// ARM64: %[[V8:.*]] = bitcast i8** %[[V1]] to i8*<br class="">
// ARM64: %[[V9:.*]] = getelementptr inbounds i8, i8* %[[V8]], i64 8<br class="">
// ARM64: %[[V10:.*]] = bitcast i8* %[[V9]] to i8**<br class="">
-// ARM64: call void @objc_copyWeak(i8** %[[V7]], i8** %[[V10]])<br class="">
+// ARM64: call void @llvm.objc.copyWeak(i8** %[[V7]], i8** %[[V10]])<br class="">
<br class="">
void test_copy_constructor_Weak(Weak *s) {<br class="">
Weak t = *s;<br class="">
@@ -93,9 +93,9 @@ void test_copy_constructor_Weak(Weak *s)<br class="">
// ARM64: %[[V8:.*]] = bitcast i8** %[[V1]] to i8*<br class="">
// ARM64: %[[V9:.*]] = getelementptr inbounds i8, i8* %[[V8]], i64 8<br class="">
// ARM64: %[[V10:.*]] = bitcast i8* %[[V9]] to i8**<br class="">
-// ARM64: %[[V11:.*]] = call i8* @objc_loadWeakRetained(i8** %[[V10]])<br class="">
-// ARM64: %[[V12:.*]] = call i8* @objc_storeWeak(i8** %[[V7]], i8* %[[V11]])<br class="">
-// ARM64: call void @objc_release(i8* %[[V11]])<br class="">
+// ARM64: %[[V11:.*]] = call i8* @llvm.objc.loadWeakRetained(i8** %[[V10]])<br class="">
+// ARM64: %[[V12:.*]] = call i8* @llvm.objc.storeWeak(i8** %[[V7]], i8* %[[V11]])<br class="">
+// ARM64: call void @llvm.objc.release(i8* %[[V11]])<br class="">
<br class="">
void test_copy_assignment_Weak(Weak *d, Weak *s) {<br class="">
*d = *s;<br class="">
@@ -121,7 +121,7 @@ void test_copy_assignment_Weak(Weak *d,<br class="">
// ARM64: %[[V8:.*]] = bitcast i8** %[[V1]] to i8*<br class="">
// ARM64: %[[V9:.*]] = getelementptr inbounds i8, i8* %[[V8]], i64 8<br class="">
// ARM64: %[[V10:.*]] = bitcast i8* %[[V9]] to i8**<br class="">
-// ARM64: call void @objc_moveWeak(i8** %[[V7]], i8** %[[V10]])<br class="">
+// ARM64: call void @llvm.objc.moveWeak(i8** %[[V7]], i8** %[[V10]])<br class="">
<br class="">
void test_move_constructor_Weak(void) {<br class="">
__block Weak t;<br class="">
@@ -148,10 +148,10 @@ void test_move_constructor_Weak(void) {<br class="">
// ARM64: %[[V8:.*]] = bitcast i8** %[[V1]] to i8*<br class="">
// ARM64: %[[V9:.*]] = getelementptr inbounds i8, i8* %[[V8]], i64 8<br class="">
// ARM64: %[[V10:.*]] = bitcast i8* %[[V9]] to i8**<br class="">
-// ARM64: %[[V11:.*]] = call i8* @objc_loadWeakRetained(i8** %[[V10]])<br class="">
-// ARM64: %[[V12:.*]] = call i8* @objc_storeWeak(i8** %[[V7]], i8* %[[V11]])<br class="">
-// ARM64: call void @objc_destroyWeak(i8** %[[V10]])<br class="">
-// ARM64: call void @objc_release(i8* %[[V11]])<br class="">
+// ARM64: %[[V11:.*]] = call i8* @llvm.objc.loadWeakRetained(i8** %[[V10]])<br class="">
+// ARM64: %[[V12:.*]] = call i8* @llvm.objc.storeWeak(i8** %[[V7]], i8* %[[V11]])<br class="">
+// ARM64: call void @llvm.objc.destroyWeak(i8** %[[V10]])<br class="">
+// ARM64: call void @llvm.objc.release(i8* %[[V11]])<br class="">
<br class="">
void test_move_assignment_Weak(Weak *p) {<br class="">
*p = getWeak();<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-attrs.mm/" rel="noreferrer" target="_blank" class="">arc-attrs.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-attrs.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-attrs.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-attrs.mm/" rel="noreferrer" target="_blank" class="">arc-attrs.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-attrs.mm/" rel="noreferrer" target="_blank" class="">arc-attrs.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -15,7 +15,7 @@ void sanityTest() {<br class="">
// CHECK-NEXT: call void @_Z13releaseObjectP11objc_object(i8* [[OBJ2]])<br class="">
releaseObject(makeObject2());<br class="">
<br class="">
- // CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+ // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -43,7 +43,7 @@ void templateTest() {<br class="">
// CHECK-NEXT: call void @_Z14releaseObjectTIU8__strongP11objc_objectEvT_(i8* [[OBJ3]])<br class="">
releaseObjectT(makeObject1());<br class="">
<br class="">
- // CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+ // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
<br class="">
@@ -58,7 +58,7 @@ ForwardConsumed::ForwardConsumed(__attri<br class="">
// CHECK-NOT: objc_retain<br class="">
// CHECK: store i8* {{.*}}, i8** [[X:%.*]],<br class="">
// CHECK-NOT: [[X]]<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
<br class="">
// CHECK: define void @_ZN15ForwardConsumedC1EP11objc_object(<br class="">
// CHECK-NOT: objc_retain<br class="">
@@ -66,4 +66,4 @@ ForwardConsumed::ForwardConsumed(__attri<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[X]],<br class="">
// CHECK-NEXT: store i8* null, i8** [[X]],<br class="">
// CHECK-NEXT: call void @_ZN15ForwardConsumedC2EP11objc_object({{.*}}, i8* [[T0]])<br class="">
-// CHECK: call void @objc_storeStrong(i8** [[X]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** [[X]], i8* null)<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-blocks.mm/" rel="noreferrer" target="_blank" class="">arc-blocks.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-blocks.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-blocks.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-blocks.mm/" rel="noreferrer" target="_blank" class="">arc-blocks.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-blocks.mm/" rel="noreferrer" target="_blank" class="">arc-blocks.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -72,7 +72,7 @@ namespace test1 {<br class="">
// CHECK: %[[V10:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 5<br class="">
// CHECK: %[[BLOCKCOPY_SRC2:.*]] = load i8*, i8** %[[V9]], align 8<br class="">
// CHECK: store i8* null, i8** %[[V10]], align 8<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V10]], i8* %[[BLOCKCOPY_SRC2]])<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V10]], i8* %[[BLOCKCOPY_SRC2]])<br class="">
<br class="">
// CHECK: %[[V4:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_SOURCE]], i32 0, i32 6<br class="">
// CHECK: %[[V5:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 6<br class="">
@@ -82,7 +82,7 @@ namespace test1 {<br class="">
<br class="">
// CHECK: %[[V7:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_SOURCE]], i32 0, i32 7<br class="">
// CHECK: %[[V8:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 7<br class="">
-// CHECK: call void @objc_copyWeak(i8** %[[V8]], i8** %[[V7]])<br class="">
+// CHECK: call void @llvm.objc.copyWeak(i8** %[[V8]], i8** %[[V7]])<br class="">
<br class="">
// CHECK: %[[V11:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_SOURCE]], i32 0, i32 8<br class="">
// CHECK: %[[V12:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8*, %[[STRUCT_TEST1_S0]], %[[STRUCT_TEST1_S0]], %[[STRUCT_TRIVIAL_INTERNAL]] }>* %[[BLOCK_DEST]], i32 0, i32 8<br class="">
@@ -109,10 +109,10 @@ namespace test1 {<br class="">
// CHECK: br label %[[EHCLEANUP]]<br class="">
<br class="">
// CHECK: [[EHCLEANUP]]:<br class="">
-// CHECK: call void @objc_destroyWeak(i8** %[[V8]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** %[[V8]])<br class="">
// CHECK: %[[V21:.*]] = load i8*, i8** %[[V5]], align 8<br class="">
// CHECK: call void @_Block_object_dispose(i8* %[[V21]], i32 8)<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V10]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V10]], i8* null)<br class="">
// CHECK: br label %[[EH_RESUME:.*]]<br class="">
<br class="">
// CHECK: [[EH_RESUME]]:<br class="">
@@ -122,7 +122,7 @@ namespace test1 {<br class="">
// CHECK: call void @__clang_call_terminate(<br class="">
<br class="">
// CHECK-O1-LABEL: define linkonce_odr hidden void @__copy_helper_block_ea8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E(<br class="">
-// CHECK-O1: tail call void @objc_release({{.*}}) {{.*}} !clang.imprecise_release<br class="">
+// CHECK-O1: tail call void @llvm.objc.release({{.*}}) {{.*}} !clang.imprecise_release<br class="">
// CHECK-NOEXCP: define linkonce_odr hidden void @__copy_helper_block_8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E(<br class="">
<br class="">
// CHECK: define linkonce_odr hidden void @__destroy_helper_block_ea8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E(<br class="">
@@ -140,10 +140,10 @@ namespace test1 {<br class="">
// CHECK: to label %[[INVOKE_CONT2:.*]] unwind label %[[LPAD1:.*]]<br class="">
<br class="">
// CHECK: [[INVOKE_CONT2]]:<br class="">
-// CHECK: call void @objc_destroyWeak(i8** %[[V3]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** %[[V3]])<br class="">
// CHECK: %[[V7:.*]] = load i8*, i8** %[[V2]], align 8<br class="">
// CHECK: call void @_Block_object_dispose(i8* %[[V7]], i32 8)<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V4]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* null)<br class="">
// CHECK: ret void<br class="">
<br class="">
// CHECK: [[LPAD]]:<br class="">
@@ -157,10 +157,10 @@ namespace test1 {<br class="">
// CHECK: br label %[[EHCLEANUP]]<br class="">
<br class="">
// CHECK: [[EHCLEANUP]]:<br class="">
-// CHECK: call void @objc_destroyWeak(i8** %[[V3]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** %[[V3]])<br class="">
// CHECK: %[[V14:.*]] = load i8*, i8** %[[V2]], align 8<br class="">
// CHECK: call void @_Block_object_dispose(i8* %[[V14]], i32 8)<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V4]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* null)<br class="">
// CHECK: br label %[[EH_RESUME:.*]]<br class="">
<br class="">
// CHECK: [[EH_RESUME]]:<br class="">
@@ -170,8 +170,8 @@ namespace test1 {<br class="">
// CHECK: call void @__clang_call_terminate(<br class="">
<br class="">
// CHECK-O1-LABEL: define linkonce_odr hidden void @__destroy_helper_block_ea8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E(<br class="">
-// CHECK-O1: tail call void @objc_release({{.*}}) {{.*}} !clang.imprecise_release<br class="">
-// CHECK-O1: tail call void @objc_release({{.*}}) {{.*}} !clang.imprecise_release<br class="">
+// CHECK-O1: tail call void @llvm.objc.release({{.*}}) {{.*}} !clang.imprecise_release<br class="">
+// CHECK-O1: tail call void @llvm.objc.release({{.*}}) {{.*}} !clang.imprecise_release<br class="">
// CHECK-NOEXCP: define linkonce_odr hidden void @__destroy_helper_block_8_32s40r48w56c15_ZTSN5test12S0E60c15_ZTSN5test12S0E(<br class="">
<br class="">
namespace {<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-constexpr.mm/" rel="noreferrer" target="_blank" class="">arc-constexpr.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-constexpr.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-constexpr.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-constexpr.mm/" rel="noreferrer" target="_blank" class="">arc-constexpr.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-constexpr.mm/" rel="noreferrer" target="_blank" class="">arc-constexpr.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -6,11 +6,11 @@<br class="">
<br class="">
// CHECK-LABEL: define void @_Z5test1v<br class="">
// CHECK: %[[ALLOCA:[A-Z]+]] = alloca %[[TYPE]]*<br class="">
-// CHECK: %[[V0:[0-9]+]] = call i8* @objc_retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
+// CHECK: %[[V0:[0-9]+]] = call i8* @llvm.objc.retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
// CHECK: %[[V1:[0-9]+]] = bitcast i8* %[[V0]] to %[[TYPE]]*<br class="">
// CHECK: store %[[TYPE]]* %[[V1]], %[[TYPE]]** %[[ALLOCA]]<br class="">
// CHECK: %[[V2:[0-9]+]] = bitcast %[[TYPE]]** %[[ALLOCA]]<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V2]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V2]], i8* null)<br class="">
void test1() {<br class="">
constexpr NSString *S = @"abc";<br class="">
}<br class="">
@@ -18,16 +18,16 @@ void test1() {<br class="">
// CHECK-LABEL: define void @_Z5test2v<br class="">
// CHECK: %[[CONST:[a-zA-Z]+]] = alloca %[[TYPE]]*<br class="">
// CHECK: %[[REF_CONST:[a-zA-Z]+]] = alloca %[[TYPE]]*<br class="">
-// CHECK: %[[V0:[0-9]+]] = call i8* @objc_retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
+// CHECK: %[[V0:[0-9]+]] = call i8* @llvm.objc.retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
// CHECK-NEXT: %[[V1:[0-9]+]] = bitcast i8* %[[V0]] to %[[TYPE]]*<br class="">
// CHECK-NEXT: store %[[TYPE]]* %[[V1]], %[[TYPE]]** %[[CONST]]<br class="">
-// CHECK: %[[V2:[0-9]+]] = call i8* @objc_retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
+// CHECK: %[[V2:[0-9]+]] = call i8* @llvm.objc.retain(i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
// CHECK-NEXT: %[[V3:[0-9]+]] = bitcast i8* %[[V2]] to %[[TYPE]]*<br class="">
// CHECK-NEXT: store %[[TYPE]]* %[[V3]], %[[TYPE]]** %[[REF_CONST]]<br class="">
// CHECK: %[[V4:[0-9]+]] = bitcast %[[TYPE]]** %[[REF_CONST]]<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** %[[V4]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** %[[V4]], i8* null)<br class="">
// CHECK: %[[V5:[0-9]+]] = bitcast %[[TYPE]]** %[[CONST]]<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** %[[V5]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** %[[V5]], i8* null)<br class="">
void test2() {<br class="">
constexpr NSString *Const = @"abc";<br class="">
// In IR RefConst should be initialized with Const initializer instead of<br class="">
@@ -39,12 +39,12 @@ void test2() {<br class="">
// CHECK: %[[WEAK_CONST:[a-zA-Z]+]] = alloca %[[TYPE]]*<br class="">
// CHECK: %[[REF_WEAK_CONST:[a-zA-Z]+]] = alloca %[[TYPE]]*<br class="">
// CHECK: %[[V0:[0-9]+]] = bitcast %[[TYPE]]** %[[WEAK_CONST]]<br class="">
-// CHECK-NEXT: %[[V1:[0-9]+]] = call i8* @objc_initWeak(i8** %[[V0]], i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
+// CHECK-NEXT: %[[V1:[0-9]+]] = call i8* @llvm.objc.initWeak(i8** %[[V0]], i8* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]]<br class="">
// CHECK: store %[[TYPE]]* bitcast (%struct.__NSConstantString_tag* @[[CFSTRING]] to %[[TYPE]]*), %[[TYPE]]** %[[REF_WEAK_CONST]]<br class="">
// CHECK: %[[V2:[0-9]+]] = bitcast %[[TYPE]]** %[[REF_WEAK_CONST]]<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** %[[V2]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** %[[V2]], i8* null)<br class="">
// CHECK: %[[V3:[0-9]+]] = bitcast %[[TYPE]]** %[[WEAK_CONST]]<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** %[[V3]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** %[[V3]])<br class="">
void test3() {<br class="">
__weak constexpr NSString *WeakConst = @"abc";<br class="">
NSString* RefWeakConst = WeakConst;<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-cxx11-init-list.mm/" rel="noreferrer" target="_blank" class="">arc-cxx11-init-list.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-cxx11-init-list.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-cxx11-init-list.mm/" rel="noreferrer" target="_blank" class="">arc-cxx11-init-list.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-cxx11-init-list.mm/" rel="noreferrer" target="_blank" class="">arc-cxx11-init-list.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -29,14 +29,14 @@ extern "C" void single() { function({ [I<br class="">
// CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}})<br class="">
// CHECK-NEXT: [[CAST:%.*]] = bitcast [{{[0-9]+}} x %0*]* %{{.*}} to i8**<br class="">
// CHECK-NEXT: store i8* [[INSTANCE]], i8** [[CAST]],<br class="">
-// CHECK: call void @objc_release(i8* {{.*}})<br class="">
+// CHECK: call void @llvm.objc.release(i8* {{.*}})<br class="">
<br class="">
extern "C" void multiple() { function({ [I new], [I new] }); }<br class="">
<br class="">
// CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}})<br class="">
// CHECK-NEXT: [[CAST:%.*]] = bitcast [{{[0-9]+}} x %0*]* %{{.*}} to i8**<br class="">
// CHECK-NEXT: store i8* [[INSTANCE]], i8** [[CAST]],<br class="">
-// CHECK: call void @objc_release(i8* {{.*}})<br class="">
+// CHECK: call void @llvm.objc.release(i8* {{.*}})<br class="">
<br class="">
std::initializer_list<id> foo1() {<br class="">
return {@"str0", @"str1"};<br class="">
@@ -58,11 +58,11 @@ extern "C" void extended() {<br class="">
<br class="">
// CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}})<br class="">
// CHECK: {{.*}} call void @_Z8externalv()<br class="">
-// CHECK: {{.*}} call void @objc_release(i8* {{.*}})<br class="">
+// CHECK: {{.*}} call void @llvm.objc.release(i8* {{.*}})<br class="">
<br class="">
std::initializer_list<I *> il = { [I new] };<br class="">
<br class="">
-// CHECK: [[POOL:%.*]] = {{.*}} call i8* @objc_autoreleasePoolPush()<br class="">
+// CHECK: [[POOL:%.*]] = {{.*}} call i8* @llvm.objc.autoreleasePoolPush()<br class="">
// CHECK: [[INSTANCE:%.*]] = {{.*}} call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* {{.*}}, i8* {{.*}})<br class="">
// CHECK-NEXT: store i8* [[INSTANCE]], i8** bitcast ([1 x %0*]* @_ZGR2il_ to i8**)<br class="">
-// CHECK: {{.*}} call void @objc_autoreleasePoolPop(i8* [[POOL]])<br class="">
+// CHECK: {{.*}} call void @llvm.objc.autoreleasePoolPop(i8* [[POOL]])<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-exceptions.mm/" rel="noreferrer" target="_blank" class="">arc-exceptions.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-exceptions.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-exceptions.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-exceptions.mm/" rel="noreferrer" target="_blank" class="">arc-exceptions.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-exceptions.mm/" rel="noreferrer" target="_blank" class="">arc-exceptions.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -17,11 +17,11 @@ void test0(void) {<br class="">
// CHECK: [[T0:%.*]] = call i8* @objc_begin_catch(<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW:#[0-9]+]]<br class="">
+// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retain(i8* [[T2]]) [[NUW:#[0-9]+]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]*<br class="">
// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: call void @objc_end_catch() [[NUW]]<br class="">
<br class="">
void test1_helper(void);<br class="">
@@ -38,9 +38,9 @@ void test1(void) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: call void @objc_end_catch() [[NUW]]<br class="">
<br class="">
void test2_helper(void);<br class="">
@@ -56,11 +56,11 @@ void test2(void) {<br class="">
// CHECK: [[T0:%.*]] = call i8* @__cxa_begin_catch(<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retain(i8* [[T2]]) [[NUW]]<br class="">
+// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retain(i8* [[T2]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to [[ETY]]*<br class="">
// CHECK-NEXT: store [[ETY]]* [[T4]], [[ETY]]** [[E]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[T0]], i8* null) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[T0]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: call void @__cxa_end_catch() [[NUW]]<br class="">
<br class="">
void test3_helper(void);<br class="">
@@ -77,9 +77,9 @@ void test3(void) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[ETY]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[ETY]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]]) [[NUW]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[ETY]]** [[E]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]]) [[NUW]]<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]]) [[NUW]]<br class="">
// CHECK-NEXT: call void @__cxa_end_catch() [[NUW]]<br class="">
<br class="">
namespace test4 {<br class="">
@@ -112,11 +112,11 @@ namespace test4 {<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: [[AFTER:%.*]] = phi i8** [ [[ARRAYEND]], {{%.*}} ], [ [[ELT:%.*]], {{%.*}} ]<br class="">
// CHECK-NEXT: [[ELT]] = getelementptr inbounds i8*, i8** [[AFTER]], i64 -1<br class="">
- // CHECK-NEXT: call void @objc_storeStrong(i8** [[ELT]], i8* null) [[NUW]]<br class="">
+ // CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[ELT]], i8* null) [[NUW]]<br class="">
// CHECK-NEXT: [[DONE:%.*]] = icmp eq i8** [[ELT]], [[ARRAYBEGIN]]<br class="">
// CHECK-NEXT: br i1 [[DONE]],<br class="">
// - Next, destroy single.<br class="">
- // CHECK: call void @objc_storeStrong(i8** [[SINGLE]], i8* null) [[NUW]]<br class="">
+ // CHECK: call void @llvm.objc.storeStrong(i8** [[SINGLE]], i8* null) [[NUW]]<br class="">
// CHECK: br label<br class="">
// CHECK: resume<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-forwarded-lambda-call.mm/" rel="noreferrer" target="_blank" class="">arc-forwarded-lambda-call.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-forwarded-lambda-call.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-forwarded-lambda-call.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-forwarded-lambda-call.mm/" rel="noreferrer" target="_blank" class="">arc-forwarded-lambda-call.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-forwarded-lambda-call.mm/" rel="noreferrer" target="_blank" class="">arc-forwarded-lambda-call.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -5,8 +5,8 @@ void test0(id x) {<br class="">
test0_helper([=]() { return x; });<br class="">
// CHECK-LABEL: define internal i8* @___Z5test0P11objc_object_block_invoke<br class="">
// CHECK: [[T0:%.*]] = call i8* @"_ZZ5test0P11objc_objectENK3$_0clEv"<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
- // CHECK-NEXT: [[T2:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: ret i8* [[T2]]<br class="">
}<br class="">
<br class="">
@@ -28,8 +28,8 @@ void test1() {<br class="">
test1_helper([](){ return test1_rv; });<br class="">
// CHECK-LABEL: define internal i8* @"_ZZ5test1vEN3$_18__invokeEv"<br class="">
// CHECK: [[T0:%.*]] = call i8* @"_ZZ5test1vENK3$_1clEv"<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
- // CHECK-NEXT: [[T2:%.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T2:%.*]] = tail call i8* @llvm.objc.autoreleaseReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: ret i8* [[T2]]<br class="">
}<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-globals.mm/" rel="noreferrer" target="_blank" class="">arc-globals.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-globals.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-globals.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-globals.mm/" rel="noreferrer" target="_blank" class="">arc-globals.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-globals.mm/" rel="noreferrer" target="_blank" class="">arc-globals.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -7,21 +7,21 @@ id getObject();<br class="">
<br class="">
// CHECK-LABEL: define internal void @__cxx_global_var_init<br class="">
// CHECK: call i8* @_Z9getObjectv<br class="">
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
// CHECK-NEXT: {{store i8*.*@global_obj}}<br class="">
// CHECK-NEXT: ret void<br class="">
id global_obj = getObject();<br class="">
<br class="">
// CHECK-LABEL: define internal void @__cxx_global_var_init<br class="">
// CHECK: call i8* @_Z9getObjectv<br class="">
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
// CHECK-NEXT: {{store i8*.*@global_obj2}}<br class="">
// CHECK-NEXT: ret void<br class="">
id global_obj2 = getObject();<br class="">
<br class="">
// CHECK-LABEL: define internal void @_GLOBAL__sub_I_arc_globals.mm<br class="">
-// CHECK: call i8* @objc_autoreleasePoolPush()<br class="">
+// CHECK: call i8* @llvm.objc.autoreleasePoolPush()<br class="">
// CHECK-NEXT: call void @__cxx_global_var_init<br class="">
// CHECK-NEXT: call void @__cxx_global_var_init.1<br class="">
-// CHECK-NEXT: call void @objc_autoreleasePoolPop(<br class="">
+// CHECK-NEXT: call void @llvm.objc.autoreleasePoolPop(<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-indirect.mm/" rel="noreferrer" target="_blank" class="">arc-indirect.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-indirect.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-indirect.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-indirect.mm/" rel="noreferrer" target="_blank" class="">arc-indirect.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-indirect.mm/" rel="noreferrer" target="_blank" class="">arc-indirect.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -19,4 +19,4 @@ struct S {<br class="">
// CHECK-DARWIN: define internal void @"\01-[C object:struct:]"(<{ %0*, i8*, i8*, %struct.S, [3 x i8] }>* inalloca)<br class="">
// CHECK: %obj = getelementptr inbounds <{ %0*, i8*, i8*, %struct.S, [3 x i8] }>, <{ %0*, i8*, i8*, %struct.S, [3 x i8] }>* %0, i32 0, i32 2<br class="">
// CHECK: %[[INSTANCE:[0-9]+]] = load i8*, i8** %obj, align 4<br class="">
-// CHECK: call void @objc_storeStrong(i8** %obj, i8* %[[INSTANCE]])<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %obj, i8* %[[INSTANCE]])<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-move.mm/" rel="noreferrer" target="_blank" class="">arc-move.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-move.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-move.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-move.mm/" rel="noreferrer" target="_blank" class="">arc-move.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-move.mm/" rel="noreferrer" target="_blank" class="">arc-move.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -6,7 +6,7 @@ void simple_move(__strong id &x, __stron<br class="">
// CHECK: store i8* null<br class="">
// CHECK: = load i8*, i8**<br class="">
// CHECK: store i8*<br class="">
- // CHECK-NEXT: call void @objc_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release<br class="">
x = static_cast<__strong id&&>(y);<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
@@ -39,7 +39,7 @@ void library_move(__strong id &x, __stro<br class="">
// CHECK: load i8**, i8***<br class="">
// CHECK-NEXT: load i8*, i8**<br class="">
// CHECK-NEXT: store i8*<br class="">
- // CHECK-NEXT: call void @objc_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
x = move(y);<br class="">
}<br class="">
@@ -66,7 +66,7 @@ void library_move(__strong id &y) {<br class="">
// CHECK-NEXT: [[IPTR2:%.*]] = bitcast i32* [[I]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 4, i8* [[IPTR2]])<br class="">
// CHECK-NEXT: [[OBJ:%[a-zA-Z0-9]+]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[OBJ]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[OBJ]])<br class="">
// CHECK-NEXT: [[XPTR2:%.*]] = bitcast i8** [[X]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[XPTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -77,9 +77,9 @@ void const_move(const __strong id &x) {<br class="">
// CHECK: [[Y:%.*]] = alloca i8*,<br class="">
// CHECK: [[X:%.*]] = call dereferenceable({{[0-9]+}}) i8** @_Z4moveIRU8__strongKP11objc_objectEON16remove_referenceIT_E4typeEOS5_(<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[X]]<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[Y]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
id y = move(x);<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-new-delete.mm/" rel="noreferrer" target="_blank" class="">arc-new-delete.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-new-delete.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-new-delete.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-new-delete.mm/" rel="noreferrer" target="_blank" class="">arc-new-delete.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-new-delete.mm/" rel="noreferrer" target="_blank" class="">arc-new-delete.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -8,8 +8,8 @@ typedef __weak id weak_id;<br class="">
void test_new(id invalue) {<br class="">
// CHECK: [[INVALUEADDR:%.*]] = alloca i8*<br class="">
// UNOPT-NEXT: store i8* null, i8** [[INVALUEADDR]]<br class="">
- // UNOPT-NEXT: call void @objc_storeStrong(i8** [[INVALUEADDR]], i8* [[INVALUE:%.*]])<br class="">
- // OPT-NEXT: [[T0:%.*]] = call i8* @objc_retain(i8* [[INVALUE:%.*]])<br class="">
+ // UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[INVALUEADDR]], i8* [[INVALUE:%.*]])<br class="">
+ // OPT-NEXT: [[T0:%.*]] = call i8* @llvm.objc.retain(i8* [[INVALUE:%.*]])<br class="">
// OPT-NEXT: store i8* [[T0]], i8** [[INVALUEADDR]]<br class="">
<br class="">
// CHECK: call i8* @_Znwm<br class="">
@@ -19,7 +19,7 @@ void test_new(id invalue) {<br class="">
// CHECK: call i8* @_Znwm<br class="">
// CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}}<br class="">
// UNOPT-NEXT: store i8* null, i8**<br class="">
- // OPT-NEXT: call i8* @objc_initWeak(i8** {{.*}}, i8* null)<br class="">
+ // OPT-NEXT: call i8* @llvm.objc.initWeak(i8** {{.*}}, i8* null)<br class="">
new weak_id;<br class="">
<br class="">
// CHECK: call i8* @_Znwm<br class="">
@@ -29,20 +29,20 @@ void test_new(id invalue) {<br class="">
// CHECK: call i8* @_Znwm<br class="">
// CHECK-NEXT: {{bitcast i8\*.*to i8\*\*}}<br class="">
// UNOPT-NEXT: store i8* null, i8**<br class="">
- // OPT-NEXT: call i8* @objc_initWeak(i8** {{.*}}, i8* null)<br class="">
+ // OPT-NEXT: call i8* @llvm.objc.initWeak(i8** {{.*}}, i8* null)<br class="">
new __weak id;<br class="">
<br class="">
// CHECK: call i8* @_Znwm<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
// CHECK: store i8*<br class="">
new __strong id(invalue);<br class="">
<br class="">
// CHECK: call i8* @_Znwm<br class="">
- // CHECK: call i8* @objc_initWeak<br class="">
+ // CHECK: call i8* @llvm.objc.initWeak<br class="">
new __weak id(invalue);<br class="">
<br class="">
- // UNOPT: call void @objc_storeStrong<br class="">
- // OPT: call void @objc_release<br class="">
+ // UNOPT: call void @llvm.objc.storeStrong<br class="">
+ // OPT: call void @llvm.objc.release<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -63,13 +63,13 @@ void test_array_new() {<br class="">
// CHECK-LABEL: define void @_Z11test_deletePU8__strongP11objc_objectPU6__weakS0_<br class="">
void test_delete(__strong id *sptr, __weak id *wptr) {<br class="">
// CHECK: br i1<br class="">
- // UNOPT: call void @objc_storeStrong(i8** {{.*}}, i8* null)<br class="">
+ // UNOPT: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null)<br class="">
// OPT: load i8*, i8**<br class="">
- // OPT-NEXT: call void @objc_release<br class="">
+ // OPT-NEXT: call void @llvm.objc.release<br class="">
// CHECK: call void @_ZdlPv<br class="">
delete sptr;<br class="">
<br class="">
- // CHECK: call void @objc_destroyWeak<br class="">
+ // CHECK: call void @llvm.objc.destroyWeak<br class="">
// CHECK: call void @_ZdlPv<br class="">
delete wptr;<br class="">
<br class="">
@@ -84,9 +84,9 @@ void test_array_delete(__strong id *sptr<br class="">
// CHECK-NEXT: icmp eq i8** [[BEGIN]], [[END]]<br class="">
// CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]],<br class="">
// CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1<br class="">
- // UNOPT-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null)<br class="">
+ // UNOPT-NEXT: call void @llvm.objc.storeStrong(i8** [[CUR]], i8* null)<br class="">
// OPT-NEXT: [[T0:%.*]] = load i8*, i8** [[CUR]]<br class="">
- // OPT-NEXT: objc_release(i8* [[T0]])<br class="">
+ // OPT-NEXT: llvm.objc.release(i8* [[T0]])<br class="">
// CHECK-NEXT: icmp eq i8** [[CUR]], [[BEGIN]]<br class="">
// CHECK: call void @_ZdaPv<br class="">
delete [] sptr;<br class="">
@@ -97,7 +97,7 @@ void test_array_delete(__strong id *sptr<br class="">
// CHECK-NEXT: icmp eq i8** [[BEGIN]], [[END]]<br class="">
// CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]],<br class="">
// CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak(i8** [[CUR]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[CUR]])<br class="">
// CHECK-NEXT: icmp eq i8** [[CUR]], [[BEGIN]]<br class="">
// CHECK: call void @_ZdaPv<br class="">
delete [] wptr;<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-pseudo-destructors.mm/" rel="noreferrer" target="_blank" class="">arc-pseudo-destructors.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-pseudo-destructors.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-pseudo-destructors.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-pseudo-destructors.mm/" rel="noreferrer" target="_blank" class="">arc-pseudo-destructors.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-pseudo-destructors.mm/" rel="noreferrer" target="_blank" class="">arc-pseudo-destructors.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -4,18 +4,18 @@<br class="">
void test_objc_object_pseudo_dtor(__strong id *ptr, __weak id *wptr) {<br class="">
// CHECK: load i8**, i8***<br class="">
// CHECK-NEXT: load i8*, i8**<br class="">
- // CHECK-NEXT: call void @objc_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release<br class="">
ptr->~id();<br class="">
<br class="">
- // CHECK: call void @objc_destroyWeak(i8** {{%.*}})<br class="">
+ // CHECK: call void @llvm.objc.destroyWeak(i8** {{%.*}})<br class="">
wptr->~id();<br class="">
<br class="">
// CHECK: load i8**, i8***<br class="">
// CHECK-NEXT: load i8*, i8**<br class="">
- // CHECK-NEXT: call void @objc_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release<br class="">
(*ptr).~id();<br class="">
<br class="">
- // CHECK: call void @objc_destroyWeak(i8** {{%.*}})<br class="">
+ // CHECK: call void @llvm.objc.destroyWeak(i8** {{%.*}})<br class="">
(*wptr).~id();<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-references.mm/" rel="noreferrer" target="_blank" class="">arc-references.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-references.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-references.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-references.mm/" rel="noreferrer" target="_blank" class="">arc-references.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-references.mm/" rel="noreferrer" target="_blank" class="">arc-references.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -10,17 +10,17 @@ void callee();<br class="">
// CHECK-LABEL: define void @_Z5test0v()<br class="">
void test0() {<br class="">
// CHECK: call i8* @_Z9getObjectv<br class="">
- // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
const __strong id &ref1 = getObject();<br class="">
// CHECK: call void @_Z6calleev<br class="">
callee();<br class="">
// CHECK: call i8* @_Z9getObjectv<br class="">
- // CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
- // CHECK-NEXT: call i8* @objc_autorelease<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.autorelease<br class="">
const __autoreleasing id &ref2 = getObject();<br class="">
// CHECK: call void @_Z6calleev<br class="">
callee();<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: ret<br class="">
}<br class="">
<br class="">
@@ -39,12 +39,12 @@ typedef __strong id strong_id;<br class="">
//CHECK: define void @_Z5test3v<br class="">
void test3() {<br class="">
// CHECK: [[REF:%.*]] = alloca i8**, align 8<br class="">
- // CHECK: call i8* @objc_initWeak<br class="">
+ // CHECK: call i8* @llvm.objc.initWeak<br class="">
// CHECK-NEXT: store i8**<br class="">
const __weak id &ref = strong_id();<br class="">
// CHECK-NEXT: call void @_Z6calleev()<br class="">
callee();<br class="">
- // CHECK-NEXT: call void @objc_destroyWeak<br class="">
+ // CHECK-NEXT: call void @llvm.objc.destroyWeak<br class="">
// CHECK-NEXT: [[PTR:%.*]] = bitcast i8*** [[REF]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR]])<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -52,11 +52,11 @@ void test3() {<br class="">
<br class="">
// CHECK-LABEL: define void @_Z5test4RU8__strongP11objc_object<br class="">
void test4(__strong id &x) {<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
__strong A* const &ar = x;<br class="">
// CHECK: store i32 17, i32*<br class="">
int i = 17;<br class="">
- // CHECK: call void @objc_release(<br class="">
+ // CHECK: call void @llvm.objc.release(<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -66,14 +66,14 @@ void sink(__strong A* &&);<br class="">
void test5(__strong id &x) {<br class="">
// CHECK: [[REFTMP:%.*]] = alloca {{%.*}}*, align 8<br class="">
// CHECK: [[I:%.*]] = alloca i32, align 4<br class="">
- // CHECK: [[OBJ_ID:%.*]] = call i8* @objc_retain(<br class="">
+ // CHECK: [[OBJ_ID:%.*]] = call i8* @llvm.objc.retain(<br class="">
// CHECK-NEXT: [[OBJ_A:%.*]] = bitcast i8* [[OBJ_ID]] to [[A:%[a-zA-Z0-9]+]]*<br class="">
// CHECK-NEXT: store [[A]]* [[OBJ_A]], [[A]]** [[REFTMP:%[a-zA-Z0-9]+]]<br class="">
// CHECK-NEXT: call void @_Z4sinkOU8__strongP1A<br class="">
sink(x); <br class="">
// CHECK-NEXT: [[OBJ_A:%[a-zA-Z0-9]+]] = load [[A]]*, [[A]]** [[REFTMP]]<br class="">
// CHECK-NEXT: [[OBJ_ID:%[a-zA-Z0-9]+]] = bitcast [[A]]* [[OBJ_A]] to i8*<br class="">
- // CHECK-NEXT: call void @objc_release<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release<br class="">
// CHECK-NEXT: [[IPTR1:%.*]] = bitcast i32* [[I]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 4, i8* [[IPTR1]])<br class="">
// CHECK-NEXT: store i32 17, i32<br class="">
@@ -85,7 +85,7 @@ void test5(__strong id &x) {<br class="">
<br class="">
// CHECK-LABEL: define internal void @__cxx_global_var_init(<br class="">
// CHECK: call i8* @_Z9getObjectv<br class="">
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
const __strong id &global_ref = getObject();<br class="">
<br class="">
// Note: we intentionally don't release the object.<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-returns-inner-reference-ptr.mm/" rel="noreferrer" target="_blank" class="">arc-returns-inner-reference-ptr.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-returns-inner-reference-ptr.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-returns-inner-reference-ptr.mm/" rel="noreferrer" target="_blank" class="">arc-returns-inner-reference-ptr.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-returns-inner-reference-ptr.mm/" rel="noreferrer" target="_blank" class="">arc-returns-inner-reference-ptr.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -15,8 +15,8 @@ void foo() {<br class="">
<br class="">
// CHECK: [[T0:%.*]] = load {{%.*}} {{%.*}}, align 8<br class="">
// CHECK: [[T1:%.*]] = bitcast {{%.*}} [[T0]] to i8*<br class="">
-// call i8* @objc_retainAutorelease(i8* [[T1]]) nounwind<br class="">
+// call i8* @llvm.objc.retainAutorelease(i8* [[T1]]) nounwind<br class="">
// CHECK: [[T2:%.*]] = load {{%.*}} {{%.*}}, align 8<br class="">
// CHECK: [[T3:%.*]] = bitcast {{%.*}} [[T2]] to i8*<br class="">
-// call i8* @objc_retainAutorelease(i8* [[T3]]) nounwind<br class="">
+// call i8* @llvm.objc.retainAutorelease(i8* [[T3]]) nounwind<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-special-member-functions.mm/" rel="noreferrer" target="_blank" class="">arc-special-member-functions.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-special-member-functions.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-special-member-functions.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-special-member-functions.mm/" rel="noreferrer" target="_blank" class="">arc-special-member-functions.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-special-member-functions.mm/" rel="noreferrer" target="_blank" class="">arc-special-member-functions.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -91,7 +91,7 @@ void test_ObjCMember_copy_assign(ObjCMem<br class="">
<br class="">
// Implicitly-generated copy assignment operator for ObjCMember<br class="">
// CHECK: {{define linkonce_odr.*@_ZN10ObjCMemberaSERKS_}}<br class="">
-// CHECK: call void @objc_storeStrong<br class="">
+// CHECK: call void @llvm.objc.storeStrong<br class="">
// CHECK: ret<br class="">
<br class="">
// CHECK-LABEL: define void @_Z47test_ObjCArrayMember_default_construct_destructv<br class="">
@@ -120,7 +120,7 @@ void test_ObjCArrayMember_copy_assign(Ob<br class="">
<br class="">
// Implicitly-generated copy assignment operator for ObjCArrayMember<br class="">
// CHECK: {{define linkonce_odr.*@_ZN15ObjCArrayMemberaSERKS_}}<br class="">
-// CHECK: call void @objc_storeStrong<br class="">
+// CHECK: call void @llvm.objc.storeStrong<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: ret<br class="">
<br class="">
@@ -155,13 +155,13 @@ void test_ObjCBlockMember_copy_assign(Ob<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[T:%.*]], [[T:%.*]]* {{%.*}}, i32 0, i32 0<br class="">
// CHECK-NEXT: [[T1:%.*]] = load i32 (i32)*, i32 (i32)** [[T0]], align 8<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast i32 (i32)* [[T1]] to i8*<br class="">
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_retainBlock(i8* [[T2]])<br class="">
+// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.retainBlock(i8* [[T2]])<br class="">
// CHECK-NEXT: [[T4:%.*]] = bitcast i8* [[T3]] to i32 (i32)*<br class="">
// CHECK-NEXT: [[T5:%.*]] = getelementptr inbounds [[T]], [[T]]* {{%.*}}, i32 0, i32 0<br class="">
// CHECK-NEXT: [[T6:%.*]] = load i32 (i32)*, i32 (i32)** [[T5]], align 8<br class="">
// CHECK-NEXT: store i32 (i32)* [[T4]], i32 (i32)** [[T5]]<br class="">
// CHECK-NEXT: [[T7:%.*]] = bitcast i32 (i32)* [[T6]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T7]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T7]])<br class="">
// CHECK-NEXT: ret<br class="">
<br class="">
// Check that the Weak object passed to this constructor is not destructed after<br class="">
@@ -179,13 +179,13 @@ void test_ObjCBlockMember_copy_assign(Ob<br class="">
<br class="">
// Implicitly-generated destructor for ObjCMember<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN10ObjCMemberD2Ev<br class="">
-// CHECK: call void @objc_storeStrong<br class="">
+// CHECK: call void @llvm.objc.storeStrong<br class="">
// CHECK: ret void<br class="">
<br class="">
// Implicitly-generated copy constructor for ObjCMember<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN10ObjCMemberC2ERKS_<br class="">
// CHECK-NOT: objc_release<br class="">
-// CHECK: call i8* @objc_retain<br class="">
+// CHECK: call i8* @llvm.objc.retain<br class="">
// CHECK-NEXT: store i8*<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -201,14 +201,14 @@ void test_ObjCBlockMember_copy_assign(Ob<br class="">
// CHECK-NEXT: br label<br class="">
// CHECK: [[PAST:%.*]] = phi i8** [ [[END]], {{%.*}} ], [ [[CUR:%.*]], {{%.*}} ]<br class="">
// CHECK-NEXT: [[CUR]] = getelementptr inbounds i8*, i8** [[PAST]], i64 -1<br class="">
-// CHECK-NEXT: call void @objc_storeStrong(i8** [[CUR]], i8* null)<br class="">
+// CHECK-NEXT: call void @llvm.objc.storeStrong(i8** [[CUR]], i8* null)<br class="">
// CHECK-NEXT: [[T1:%.*]] = icmp eq i8** [[CUR]], [[BEGIN]]<br class="">
// CHECK-NEXT: br i1 [[T1]],<br class="">
// CHECK: ret void<br class="">
<br class="">
// Implicitly-generated copy constructor for ObjCArrayMember<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN15ObjCArrayMemberC2ERKS_<br class="">
-// CHECK: call i8* @objc_retain<br class="">
+// CHECK: call i8* @llvm.objc.retain<br class="">
// CHECK-NEXT: store i8*<br class="">
// CHECK: br i1<br class="">
// CHECK: ret<br class="">
@@ -220,11 +220,11 @@ void test_ObjCBlockMember_copy_assign(Ob<br class="">
<br class="">
// Implicitly-generated destructor for ObjCBlockMember<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN15ObjCBlockMemberD2Ev<br class="">
-// CHECK: call void @objc_storeStrong(i8*<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8*<br class="">
// CHECK: ret<br class="">
<br class="">
// Implicitly-generated copy constructor for ObjCBlockMember<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN15ObjCBlockMemberC2ERKS_<br class="">
-// CHECK: call i8* @objc_retainBlock<br class="">
+// CHECK: call i8* @llvm.objc.retainBlock<br class="">
// CHECK: ret<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-weak.mm/" rel="noreferrer" target="_blank" class="">arc-weak.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-weak.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc-weak.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-weak.mm/" rel="noreferrer" target="_blank" class="">arc-weak.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc-weak.mm/" rel="noreferrer" target="_blank" class="">arc-weak.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -15,9 +15,9 @@ void test0(__weak B **src) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]** [[T0]] to [[A]]**<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[A]]** [[DEST]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[A]]** [[T1]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_copyWeak(i8** [[T2]], i8** [[T3]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.copyWeak(i8** [[T2]], i8** [[T3]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]** [[DEST]] to i8**<br class="">
-// CHECK: call void @objc_destroyWeak(i8** [[T0]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** [[T0]])<br class="">
<br class="">
void test1(__weak B **src) {<br class="">
__weak A *dest = static_cast<__weak B*&&>(*src);<br class="">
@@ -29,6 +29,6 @@ void test1(__weak B **src) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[B]]** [[T0]] to [[A]]**<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[A]]** [[DEST]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[A]]** [[T1]] to i8**<br class="">
-// CHECK-NEXT: call void @objc_moveWeak(i8** [[T2]], i8** [[T3]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[T2]], i8** [[T3]])<br class="">
// CHECK-NEXT: [[T0:%.*]] = bitcast [[A]]** [[DEST]] to i8**<br class="">
-// CHECK: call void @objc_destroyWeak(i8** [[T0]])<br class="">
+// CHECK: call void @llvm.objc.destroyWeak(i8** [[T0]])<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://arc.mm/" rel="noreferrer" target="_blank" class="">arc.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/arc.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://arc.mm/" rel="noreferrer" target="_blank" class="">arc.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://arc.mm/" rel="noreferrer" target="_blank" class="">arc.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -20,21 +20,21 @@ void test0(__weak id *wp, __weak volatil<br class="">
// TODO: in the non-volatile case, we do not need to be reloading.<br class="">
<br class="">
// CHECK: [[T0:%.*]] = call i8* @_Z12test0_helperv()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8**, i8*** {{%.*}}, align 8<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_retain(i8* [[T3]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.retain(i8* [[T3]])<br class="">
// CHECK-NEXT: store i8* [[T4]], i8**<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
id x = *wp = test0_helper();<br class="">
<br class="">
// CHECK: [[T0:%.*]] = call i8* @_Z12test0_helperv()<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8**, i8*** {{%.*}}, align 8<br class="">
- // CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
- // CHECK-NEXT: [[T4:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T2]])<br class="">
+ // CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
+ // CHECK-NEXT: [[T4:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T2]])<br class="">
// CHECK-NEXT: store i8* [[T4]], i8**<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T1]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T1]])<br class="">
id y = *wvp = test0_helper();<br class="">
}<br class="">
<br class="">
@@ -69,7 +69,7 @@ void test34(int cond) {<br class="">
// CHECK-NEXT: store i8* null, i8** [[STRONG]]<br class="">
// CHECK-NEXT: [[WEAKP:%.*]] = bitcast i8** [[WEAK]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 8, i8* [[WEAKP]])<br class="">
- // CHECK-NEXT: call i8* @objc_initWeak(i8** [[WEAK]], i8* null)<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[WEAK]], i8* null)<br class="">
<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i32, i32* [[COND]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = icmp ne i32 [[T0]], 0<br class="">
@@ -85,11 +85,11 @@ void test34(int cond) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[TEMP1]]<br class="">
- // CHECK-NEXT: [[T1:%.*]] = call i8* @objc_retain(i8* [[T0]])<br class="">
+ // CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
// CHECK-NEXT: call void (...) @clang.arc.use(i8* [[W0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = load i8*, i8** [[ARG]]<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[ARG]]<br class="">
- // CHECK-NEXT: call void @objc_release(i8* [[T2]])<br class="">
+ // CHECK-NEXT: call void @llvm.objc.release(i8* [[T2]])<br class="">
// CHECK-NEXT: br label<br class="">
<br class="">
// CHECK: [[T0:%.*]] = load i32, i32* [[COND]]<br class="">
@@ -99,7 +99,7 @@ void test34(int cond) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = select i1 [[T0]], i8** null, i8** [[TEMP2]]<br class="">
// CHECK-NEXT: store i1 false, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
- // CHECK: [[T0:%.*]] = call i8* @objc_loadWeakRetained(i8** [[ARG]])<br class="">
+ // CHECK: [[T0:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[ARG]])<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[CONDCLEANUPSAVE]]<br class="">
// CHECK-NEXT: store i1 true, i1* [[CONDCLEANUP]]<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[TEMP2]]<br class="">
@@ -108,10 +108,10 @@ void test34(int cond) {<br class="">
// CHECK-NEXT: [[T0:%.*]] = icmp eq i8** [[ARG]], null<br class="">
// CHECK-NEXT: br i1 [[T0]],<br class="">
// CHECK: [[T0:%.*]] = load i8*, i8** [[TEMP2]]<br class="">
- // CHECK-NEXT: call i8* @objc_storeWeak(i8** [[ARG]], i8* [[T0]])<br class="">
+ // CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[ARG]], i8* [[T0]])<br class="">
// CHECK-NEXT: br label<br class="">
<br class="">
- // CHECK: call void @objc_destroyWeak(i8** [[WEAK]])<br class="">
+ // CHECK: call void @llvm.objc.destroyWeak(i8** [[WEAK]])<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
@@ -126,36 +126,36 @@ struct Test35_Helper {<br class="">
void test35(Test35_Helper x0, Test35_Helper *x0p) {<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* @_ZN13Test35_Helper11makeObject1Ev<br class="">
- // CHECK-NOT: call i8* @objc_retain<br class="">
+ // CHECK-NOT: call i8* @llvm.objc.retain<br class="">
id obj1 = Test35_Helper::makeObject1();<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* @_ZN13Test35_Helper11makeObject2Ev<br class="">
- // CHECK-NOT: call i8* @objc_retain<br class="">
+ // CHECK-NOT: call i8* @llvm.objc.retain<br class="">
id obj2 = x0.makeObject2();<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* @_ZN13Test35_Helper11makeObject2Ev<br class="">
- // CHECK-NOT: call i8* @objc_retain<br class="">
+ // CHECK-NOT: call i8* @llvm.objc.retain<br class="">
id obj3 = x0p->makeObject2();<br class="">
id (Test35_Helper::*pmf)() __attribute__((ns_returns_retained))<br class="">
= &Test35_Helper::makeObject2;<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* %<br class="">
- // CHECK-NOT: call i8* @objc_retain<br class="">
+ // CHECK-NOT: call i8* @llvm.objc.retain<br class="">
id obj4 = (x0.*pmf)();<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* %<br class="">
- // CHECK-NOT: call i8* @objc_retain<br class="">
+ // CHECK-NOT: call i8* @llvm.objc.retain<br class="">
id obj5 = (x0p->*pmf)();<br class="">
<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
@@ -164,36 +164,36 @@ void test35(Test35_Helper x0, Test35_Hel<br class="">
void test35b(Test35_Helper x0, Test35_Helper *x0p) {<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* @_ZN13Test35_Helper11makeObject3Ev<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id obj1 = Test35_Helper::makeObject3();<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* @_ZN13Test35_Helper11makeObject4Ev<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id obj2 = x0.makeObject4();<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* @_ZN13Test35_Helper11makeObject4Ev<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id obj3 = x0p->makeObject4();<br class="">
id (Test35_Helper::*pmf)() = &Test35_Helper::makeObject4;<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* %<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id obj4 = (x0.*pmf)();<br class="">
// CHECK: call void @llvm.lifetime.start<br class="">
// CHECK: call i8* %<br class="">
- // CHECK: call i8* @objc_retain<br class="">
+ // CHECK: call i8* @llvm.objc.retain<br class="">
id obj5 = (x0p->*pmf)();<br class="">
<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK: call void @llvm.lifetime.end<br class="">
// CHECK-NEXT: ret void<br class="">
}<br class="">
@@ -201,10 +201,10 @@ void test35b(Test35_Helper x0, Test35_He<br class="">
// <a href="rdar://problem/9603128" class="">rdar://problem/9603128</a><br class="">
// CHECK-LABEL: define i8* @_Z6test36P11objc_object(<br class="">
id test36(id z) {<br class="">
- // CHECK: objc_retain<br class="">
- // CHECK: objc_retain<br class="">
- // CHECK: objc_release<br class="">
- // CHECK: objc_autoreleaseReturnValue<br class="">
+ // CHECK: llvm.objc.retain<br class="">
+ // CHECK: llvm.objc.retain<br class="">
+ // CHECK: llvm.objc.release<br class="">
+ // CHECK: llvm.objc.autoreleaseReturnValue<br class="">
return z;<br class="">
}<br class="">
<br class="">
@@ -224,7 +224,7 @@ template void test37<Test37>(Test37 *a);<br class="">
// CHECK-LABEL: define weak_odr void @_Z6test37I6Test37EvPT_(<br class="">
// CHECK: [[T0:%.*]] = call [[NSARRAY]]* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to [[NSARRAY]]* (i8*, i8*)*)(<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[NSARRAY]]* [[T0]] to i8*<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[T1]])<br class="">
// CHECK-NEXT: [[COLL:%.*]] = bitcast i8* [[T2]] to [[NSARRAY]]*<br class="">
<br class="">
// Make sure it's not immediately released before starting the iteration.<br class="">
@@ -242,7 +242,7 @@ template void test37<Test37>(Test37 *a);<br class="">
<br class="">
// This bitcast is for the final release.<br class="">
// CHECK: [[T0:%.*]] = bitcast [[NSARRAY]]* [[COLL]] to i8*<br class="">
-// CHECK-NEXT: call void @objc_release(i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.release(i8* [[T0]])<br class="">
<br class="">
template<typename T><br class="">
void send_release() {<br class="">
@@ -252,10 +252,10 @@ void send_release() {<br class="">
// CHECK-LABEL: define weak_odr void @_Z12send_releaseIiEvv(<br class="">
// CHECK: call %0* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
// CHECK-NEXT: bitcast<br class="">
-// CHECK-NEXT: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
// CHECK-NEXT: bitcast<br class="">
// CHECK-NEXT: bitcast<br class="">
-// CHECK-NEXT: call void @objc_release<br class="">
+// CHECK-NEXT: call void @llvm.objc.release<br class="">
// CHECK-NEXT: ret void<br class="">
template void send_release<int>();<br class="">
<br class="">
@@ -268,9 +268,9 @@ Test37 *instantiate_init() {<br class="">
// CHECK-LABEL: define weak_odr %2* @_Z16instantiate_initIiEP6Test37v<br class="">
// CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
// CHECK: call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend<br class="">
-// CHECK: call i8* @objc_retain<br class="">
-// CHECK: call void @objc_release<br class="">
-// CHECK: call i8* @objc_autoreleaseReturnValue<br class="">
+// CHECK: call i8* @llvm.objc.retain<br class="">
+// CHECK: call void @llvm.objc.release<br class="">
+// CHECK: call i8* @llvm.objc.autoreleaseReturnValue<br class="">
template Test37* instantiate_init<int>();<br class="">
<br class="">
// Just make sure that the AST invariants hold properly here,<br class="">
@@ -322,7 +322,7 @@ template void test40_helper<int>();<br class="">
// CHECK-NEXT: store i8* [[T0]], i8** [[TEMP]]<br class="">
// CHECK: @objc_msgSend<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[TEMP]]<br class="">
-// CHECK-NEXT: call i8* @objc_retain(i8* [[T0]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.retain(i8* [[T0]])<br class="">
<br class="">
// Check that moves out of __weak variables are compiled to use objc_moveWeak.<br class="">
void test41(__weak id &&x) {<br class="">
@@ -332,5 +332,5 @@ void test41(__weak id &&x) {<br class="">
// CHECK: [[X:%.*]] = alloca i8**<br class="">
// CHECK: [[Y:%.*]] = alloca i8*<br class="">
// CHECK: [[T0:%.*]] = load i8**, i8*** [[X]]<br class="">
-// CHECK-NEXT: call void @objc_moveWeak(i8** [[Y]], i8** [[T0]])<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Y]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[Y]], i8** [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Y]])<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://block-nested-in-lambda.mm/" rel="noreferrer" target="_blank" class="">block-nested-in-lambda.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/block-nested-in-lambda.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/block-nested-in-lambda.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://block-nested-in-lambda.mm/" rel="noreferrer" target="_blank" class="">block-nested-in-lambda.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://block-nested-in-lambda.mm/" rel="noreferrer" target="_blank" class="">block-nested-in-lambda.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -51,27 +51,27 @@ void test0() {<br class="">
// CHECK: store %[[STRUCT_BLOCK_DESCRIPTOR]]* bitcast ({ i64, i64, i8*, i8*, i8*, i64 }* @"__block_descriptor_56_8_32s40s_e5_v8@?0l" to %[[STRUCT_BLOCK_DESCRIPTOR]]*), %[[STRUCT_BLOCK_DESCRIPTOR]]** %[[BLOCK_DESCRIPTOR]], align 8<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block_8_32s40s(<br class="">
-// CHECK-NOT: call void @objc_storeStrong(<br class="">
+// CHECK-NOT: call void @llvm.objc.storeStrong(<br class="">
// CHECK: %[[V4:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 5<br class="">
// CHECK: %[[V5:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 5<br class="">
// CHECK: %[[BLOCKCOPY_SRC:.*]] = load i8*, i8** %[[V4]], align 8<br class="">
// CHECK: store i8* null, i8** %[[V5]], align 8<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V5]], i8* %[[BLOCKCOPY_SRC]])<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V5]], i8* %[[BLOCKCOPY_SRC]])<br class="">
// CHECK: %[[V6:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 6<br class="">
// CHECK: %[[V7:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 6<br class="">
// CHECK: %[[BLOCKCOPY_SRC2:.*]] = load i8*, i8** %[[V6]], align 8<br class="">
// CHECK: store i8* null, i8** %[[V7]], align 8<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V7]], i8* %[[BLOCKCOPY_SRC2]])<br class="">
-// CHECK-NOT: call void @objc_storeStrong(<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V7]], i8* %[[BLOCKCOPY_SRC2]])<br class="">
+// CHECK-NOT: call void @llvm.objc.storeStrong(<br class="">
// CHECK: ret void<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block_8_32s40s(<br class="">
// CHECK: %[[V2:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 5<br class="">
// CHECK: %[[V3:.*]] = getelementptr inbounds <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>, <{ i8*, i32, i32, i8*, %[[STRUCT_BLOCK_DESCRIPTOR]]*, i8*, i8*, i8** }>* %{{.*}}, i32 0, i32 6<br class="">
-// CHECK-NOT: call void @objc_storeStrong(<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V3]], i8* null)<br class="">
-// CHECK: call void @objc_storeStrong(i8** %[[V2]], i8* null)<br class="">
-// CHECK-NOT: call void @objc_storeStrong(<br class="">
+// CHECK-NOT: call void @llvm.objc.storeStrong(<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V3]], i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** %[[V2]], i8* null)<br class="">
+// CHECK-NOT: call void @llvm.objc.storeStrong(<br class="">
// CHECK: ret void<br class="">
<br class="">
void test1() {<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://destroy.mm/" rel="noreferrer" target="_blank" class="">destroy.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/destroy.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/destroy.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://destroy.mm/" rel="noreferrer" target="_blank" class="">destroy.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://destroy.mm/" rel="noreferrer" target="_blank" class="">destroy.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -44,7 +44,7 @@ void test4() {<br class="">
// CHECK: call void @_ZN8tderivedIiED1Ev<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN7derivedD2Ev<br class="">
-// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null)<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN8tderivedIiED2Ev<br class="">
-// CHECK: call void @objc_storeStrong(i8** {{.*}}, i8* null)<br class="">
+// CHECK: call void @llvm.objc.storeStrong(i8** {{.*}}, i8* null)<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://lambda-expressions.mm/" rel="noreferrer" target="_blank" class="">lambda-expressions.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/lambda-expressions.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/lambda-expressions.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://lambda-expressions.mm/" rel="noreferrer" target="_blank" class="">lambda-expressions.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://lambda-expressions.mm/" rel="noreferrer" target="_blank" class="">lambda-expressions.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -20,8 +20,8 @@ fp f() { auto x = []{ return 3; }; retur<br class="">
// ARC-LABEL: define internal i32 ()* @"_ZZ1fvENK3$_0cvU13block_pointerFivEEv"<br class="">
// ARC: store i8* bitcast (i8** @_NSConcreteStackBlock to i8*)<br class="">
// ARC: store i8* bitcast (i32 (i8*)* @"___ZZ1fvENK3$_0cvU13block_pointerFivEEv_block_invoke" to i8*)<br class="">
-// ARC: call i8* @objc_retainBlock<br class="">
-// ARC: call i8* @objc_autoreleaseReturnValue<br class="">
+// ARC: call i8* @llvm.objc.retainBlock<br class="">
+// ARC: call i8* @llvm.objc.autoreleaseReturnValue<br class="">
<br class="">
typedef int (^fp)();<br class="">
fp global;<br class="">
@@ -35,8 +35,8 @@ void f2() { global = []{ return 3; }; }<br class="">
<br class="">
// ARC: define void @_Z2f2v() [[NUW:#[0-9]+]] {<br class="">
// ARC: store i8* bitcast (i32 (i8*)* @___Z2f2v_block_invoke to i8*),<br class="">
-// ARC: call i8* @objc_retainBlock<br class="">
-// ARC: call void @objc_release<br class="">
+// ARC: call i8* @llvm.objc.retainBlock<br class="">
+// ARC: call void @llvm.objc.release<br class="">
// ARC-LABEL: define internal i32 @___Z2f2v_block_invoke<br class="">
// ARC: call i32 @"_ZZ2f2vENK3$_1clEv<br class="">
<br class="">
@@ -72,7 +72,7 @@ void take_block(void (^block)()) { block<br class="">
// ARC: store i32 %{{.*}}, i32* %[[CAPTURE1]]<br class="">
<br class="">
// ARC-LABEL: define internal void @"_ZZ10-[Foo foo]ENK3$_4clEv"(<br class="">
-// ARC-NOT: @objc_storeStrong(<br class="">
+// ARC-NOT: @llvm.objc.storeStrong(<br class="">
// ARC: ret void<br class="">
<br class="">
// ARC: define internal void @"___ZZN13LambdaCapture4foo1ERiENK3$_3clEv_block_invoke"<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://literals.mm/" rel="noreferrer" target="_blank" class="">literals.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/literals.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/literals.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://literals.mm/" rel="noreferrer" target="_blank" class="">literals.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://literals.mm/" rel="noreferrer" target="_blank" class="">literals.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -29,7 +29,7 @@ void test_array() {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 1, i8* [[TMP_CAST]])<br class="">
// CHECK-NEXT: call void @_ZN1XC1Ev({{.*}} [[TMPX]])<br class="">
// CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1XcvP11objc_objectEv<br class="">
- // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT0]])<br class="">
+ // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT0]])<br class="">
// CHECK: store i8* [[RET0]], i8** [[ELEMENT0]]<br class="">
<br class="">
// Initializing the second element<br class="">
@@ -38,36 +38,36 @@ void test_array() {<br class="">
// CHECK-NEXT: call void @llvm.lifetime.start.p0i8(i64 1, i8* [[TMP_CAST]])<br class="">
// CHECK-NEXT: invoke void @_ZN1YC1Ev({{.*}} [[TMPY]])<br class="">
// CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1YcvP11objc_objectEv<br class="">
- // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT1]])<br class="">
+ // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT1]])<br class="">
// CHECK: store i8* [[RET1]], i8** [[ELEMENT1]]<br class="">
<br class="">
// Build the array<br class="">
// CHECK: {{invoke.*@objc_msgSend}}<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
id arr = @[ X(), Y() ];<br class="">
<br class="">
// Destroy temporaries<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NOT: ret void<br class="">
// CHECK: invoke void @_ZN1YD1Ev<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: call void @_ZN1XD1Ev<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: [[PTR2:%.*]] = bitcast i8** [[ARR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// Check cleanups<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK-NOT: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK-NOT: call void @llvm.objc.release<br class="">
// CHECK: invoke void @_ZN1YD1Ev<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK-NOT: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK-NOT: call void @llvm.objc.release<br class="">
// CHECK: invoke void @_ZN1XD1Ev<br class="">
- // CHECK-NOT: call void @objc_release<br class="">
+ // CHECK-NOT: call void @llvm.objc.release<br class="">
// CHECK: unreachable<br class="">
}<br class="">
<br class="">
@@ -83,43 +83,43 @@ void test_array_instantiation() {<br class="">
// CHECK: [[ELEMENT0:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[OBJECTS]], i64 0, i64 0<br class="">
// CHECK: call void @_ZN1XC1Ev<br class="">
// CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1XcvP11objc_objectEv<br class="">
- // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT0]])<br class="">
+ // CHECK: [[RET0:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT0]])<br class="">
// CHECK: store i8* [[RET0]], i8** [[ELEMENT0]]<br class="">
<br class="">
// Initializing the second element<br class="">
// CHECK: [[ELEMENT1:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x i8*], [2 x i8*]* [[OBJECTS]], i64 0, i64 1<br class="">
// CHECK: invoke void @_ZN1YC1Ev<br class="">
// CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke i8* @_ZNK1YcvP11objc_objectEv<br class="">
- // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @objc_retainAutoreleasedReturnValue(i8* [[OBJECT1]])<br class="">
+ // CHECK: [[RET1:%[a-zA-Z0-9.]+]] = call i8* @llvm.objc.retainAutoreleasedReturnValue(i8* [[OBJECT1]])<br class="">
// CHECK: store i8* [[RET1]], i8** [[ELEMENT1]]<br class="">
<br class="">
// Build the array<br class="">
// CHECK: {{invoke.*@objc_msgSend}}<br class="">
- // CHECK: call i8* @objc_retainAutoreleasedReturnValue<br class="">
+ // CHECK: call i8* @llvm.objc.retainAutoreleasedReturnValue<br class="">
id arr = @[ X(), Y() ];<br class="">
<br class="">
// Destroy temporaries<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NOT: ret void<br class="">
// CHECK: invoke void @_ZN1YD1Ev<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: call void @_ZN1XD1Ev<br class="">
// CHECK-NOT: ret void<br class="">
- // CHECK: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
// CHECK-NEXT: [[PTR2]] = bitcast i8** [[ARR]] to i8*<br class="">
// CHECK-NEXT: call void @llvm.lifetime.end.p0i8(i64 8, i8* [[PTR2]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
// Check cleanups<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK-NOT: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK-NOT: call void @llvm.objc.release<br class="">
// CHECK: invoke void @_ZN1YD1Ev<br class="">
- // CHECK: call void @objc_release<br class="">
- // CHECK-NOT: call void @objc_release<br class="">
+ // CHECK: call void @llvm.objc.release<br class="">
+ // CHECK-NOT: call void @llvm.objc.release<br class="">
// CHECK: invoke void @_ZN1XD1Ev<br class="">
- // CHECK-NOT: call void @objc_release<br class="">
+ // CHECK-NOT: call void @llvm.objc.release<br class="">
// CHECK: unreachable<br class="">
}<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://microsoft-abi-arc-param-order.mm/" rel="noreferrer" target="_blank" class="">microsoft-abi-arc-param-order.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/microsoft-abi-arc-param-order.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://microsoft-abi-arc-param-order.mm/" rel="noreferrer" target="_blank" class="">microsoft-abi-arc-param-order.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://microsoft-abi-arc-param-order.mm/" rel="noreferrer" target="_blank" class="">microsoft-abi-arc-param-order.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -13,8 +13,8 @@ struct A {<br class="">
// CHECK: (<{ %struct.A, i8*, %struct.A, i8* }>* inalloca)<br class="">
void test_arc_order(A a, id __attribute__((ns_consumed)) b , A c, id __attribute__((ns_consumed)) d) {<br class="">
// CHECK: call x86_thiscallcc void @"??1A@@QAE@XZ"(%struct.A* %{{.*}})<br class="">
- // CHECK: call void @objc_storeStrong(i8** %{{.*}}, i8* null)<br class="">
+ // CHECK: call void @llvm.objc.storeStrong(i8** %{{.*}}, i8* null)<br class="">
// CHECK: call x86_thiscallcc void @"??1A@@QAE@XZ"(%struct.A* %{{.*}})<br class="">
- // CHECK: call void @objc_storeStrong(i8** %{{.*}}, i8* null)<br class="">
+ // CHECK: call void @llvm.objc.storeStrong(i8** %{{.*}}, i8* null)<br class="">
// CHECK: ret void<br class="">
}<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://mrc-weak.mm/" rel="noreferrer" target="_blank" class="">mrc-weak.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/mrc-weak.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/mrc-weak.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://mrc-weak.mm/" rel="noreferrer" target="_blank" class="">mrc-weak.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://mrc-weak.mm/" rel="noreferrer" target="_blank" class="">mrc-weak.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -26,15 +26,15 @@<br class="">
<br class="">
@implementation Foo<br class="">
// CHECK-LABEL: define internal void @"\01-[Foo .cxx_destruct]"<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
@end<br class="">
<br class="">
<br class="">
void test1(__weak id x) {}<br class="">
// CHECK-LABEL: define void @_Z5test1P11objc_object(<br class="">
// CHECK: [[X:%.*]] = alloca i8*,<br class="">
-// CHECK-NEXT: objc_initWeak<br class="">
-// CHECK-NEXT: objc_destroyWeak<br class="">
+// CHECK-NEXT: llvm.objc.initWeak<br class="">
+// CHECK-NEXT: llvm.objc.destroyWeak<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
void test2(id y) {<br class="">
@@ -45,8 +45,8 @@ void test2(id y) {<br class="">
// CHECK-NEXT: [[Z:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[Z]], i8* [[T0]])<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Z]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[Z]], i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Z]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
void test3(id y) {<br class="">
@@ -59,8 +59,8 @@ void test3(id y) {<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: store i8* null, i8** [[Z]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8*, i8** [[Y]]<br class="">
-// CHECK-NEXT: call i8* @objc_storeWeak(i8** [[Z]], i8* [[T0]])<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[Z]])<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.storeWeak(i8** [[Z]], i8* [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[Z]])<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
void test4(__weak id *p) {<br class="">
@@ -71,7 +71,7 @@ void test4(__weak id *p) {<br class="">
// CHECK-NEXT: [[Y:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8**, i8*** [[P]]<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[Y]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -83,7 +83,7 @@ void test5(__weak id *p) {<br class="">
// CHECK-NEXT: [[Y:%.*]] = alloca i8*,<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load i8**, i8*** [[P]]<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T0]])<br class="">
// CHECK-NEXT: store i8* [[T1]], i8** [[Y]]<br class="">
// CHECK-NEXT: ret void<br class="">
<br class="">
@@ -96,7 +96,7 @@ void test6(__weak Foo **p) {<br class="">
// CHECK-NEXT: store<br class="">
// CHECK-NEXT: [[T0:%.*]] = load [[FOO]]**, [[FOO]]*** [[P]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast [[FOO]]** [[T0]] to i8**<br class="">
-// CHECK-NEXT: [[T2:%.*]] = call i8* @objc_loadWeakRetained(i8** [[T1]])<br class="">
+// CHECK-NEXT: [[T2:%.*]] = call i8* @llvm.objc.loadWeakRetained(i8** [[T1]])<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast i8* [[T2]] to [[FOO]]*<br class="">
// CHECK-NEXT: store [[FOO]]* [[T3]], [[FOO]]** [[Y]]<br class="">
// CHECK-NEXT: ret void<br class="">
@@ -114,32 +114,32 @@ void test7(void) {<br class="">
// CHECK-NEXT: [[T1:%.*]] = bitcast i8* [[T0]] to [[FOO]]*<br class="">
// CHECK-NEXT: [[T2:%.*]] = bitcast [[FOO]]** [[P]] to i8**<br class="">
// CHECK-NEXT: [[T3:%.*]] = bitcast [[FOO]]* [[T1]] to i8*<br class="">
-// CHECK-NEXT: call i8* @objc_initWeak(i8** [[T2]], i8* [[T3]])<br class="">
-// CHECK: call void @objc_copyWeak<br class="">
+// CHECK-NEXT: call i8* @llvm.objc.initWeak(i8** [[T2]], i8* [[T3]])<br class="">
+// CHECK: call void @llvm.objc.copyWeak<br class="">
// CHECK: call void @use_block<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__copy_helper_block<br class="">
-// CHECK: @objc_copyWeak<br class="">
+// CHECK: @llvm.objc.copyWeak<br class="">
<br class="">
// CHECK-LABEL: define linkonce_odr hidden void @__destroy_helper_block<br class="">
-// CHECK: @objc_destroyWeak<br class="">
+// CHECK: @llvm.objc.destroyWeak<br class="">
<br class="">
void test8(void) {<br class="">
__block __weak Foo *p = get_object();<br class="">
use_block(^{ [p run ]; });<br class="">
}<br class="">
// CHECK-LABEL: define void @_Z5test8v<br class="">
-// CHECK: call i8* @objc_initWeak<br class="">
-// CHECK-NOT: call void @objc_copyWeak<br class="">
+// CHECK: call i8* @llvm.objc.initWeak<br class="">
+// CHECK-NOT: call void @llvm.objc.copyWeak<br class="">
// CHECK: call void @use_block<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_copy<br class="">
-// CHECK: call void @objc_moveWeak<br class="">
+// CHECK: call void @llvm.objc.moveWeak<br class="">
<br class="">
// CHECK-LABEL: define internal void @__Block_byref_object_dispose<br class="">
-// CHECK: call void @objc_destroyWeak<br class="">
+// CHECK: call void @llvm.objc.destroyWeak<br class="">
<br class="">
// CHECK-LABEL: define void @_Z14test9_baselinev()<br class="">
// CHECK: define linkonce_odr hidden void @__copy_helper<br class="">
<br class="">
Modified: cfe/trunk/test/CodeGenObjCXX/<a href="http://objc-weak.mm/" rel="noreferrer" target="_blank" class="">objc-weak.mm</a><br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/objc-weak.mm?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenObjCXX/objc-weak.mm?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/CodeGenObjCXX/<a href="http://objc-weak.mm/" rel="noreferrer" target="_blank" class="">objc-weak.mm</a> (original)<br class="">
+++ cfe/trunk/test/CodeGenObjCXX/<a href="http://objc-weak.mm/" rel="noreferrer" target="_blank" class="">objc-weak.mm</a> Tue Dec 18 12:33:00 2018<br class="">
@@ -18,9 +18,9 @@ id test0() {<br class="">
// CHECK: [[THIS:%this.*]] = load [[A]]*, [[A]]** [[THISADDR]]<br class="">
// CHECK: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]]<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0<br class="">
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
<br class="">
// Move Assignment Operator<br class="">
// CHECK-LABEL: define linkonce_odr dereferenceable({{[0-9]+}}) %struct.A* @_ZN1AaSEOS_(<br class="">
@@ -29,9 +29,9 @@ id test0() {<br class="">
// CHECK: [[THIS:%this.*]] = load [[A]]*, [[A]]** [[THISADDR]]<br class="">
// CHECK: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]]<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0<br class="">
-// CHECK-NEXT: [[T1:%.*]] = call i8* @objc_loadWeak(i8** [[T0]])<br class="">
+// CHECK-NEXT: [[T1:%.*]] = call i8* @llvm.objc.loadWeak(i8** [[T0]])<br class="">
// CHECK-NEXT: [[T2:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0<br class="">
-// CHECK-NEXT: [[T3:%.*]] = call i8* @objc_storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
+// CHECK-NEXT: [[T3:%.*]] = call i8* @llvm.objc.storeWeak(i8** [[T2]], i8* [[T1]])<br class="">
<br class="">
// Default Constructor<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN1AC2Ev(<br class="">
@@ -48,7 +48,7 @@ id test0() {<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0<br class="">
// CHECK-NEXT: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0<br class="">
-// CHECK-NEXT: call void @objc_copyWeak(i8** [[T0]], i8** [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.copyWeak(i8** [[T0]], i8** [[T1]])<br class="">
<br class="">
// Move Constructor<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN1AC2EOS_(<br class="">
@@ -58,12 +58,12 @@ id test0() {<br class="">
// CHECK: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0<br class="">
// CHECK-NEXT: [[OBJECT:%.*]] = load [[A]]*, [[A]]** [[OBJECTADDR]]<br class="">
// CHECK-NEXT: [[T1:%.*]] = getelementptr inbounds [[A]], [[A]]* [[OBJECT]], i32 0, i32 0<br class="">
-// CHECK-NEXT: call void @objc_moveWeak(i8** [[T0]], i8** [[T1]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.moveWeak(i8** [[T0]], i8** [[T1]])<br class="">
<br class="">
// Destructor<br class="">
// CHECK-LABEL: define linkonce_odr void @_ZN1AD2Ev(<br class="">
// CHECK: [[THISADDR:%this.*]] = alloca [[A:.*]]*<br class="">
// CHECK: [[THIS:%this.*]] = load [[A]]*, [[A]]** [[THISADDR]]<br class="">
// CHECK-NEXT: [[T0:%.*]] = getelementptr inbounds [[A]], [[A]]* [[THIS]], i32 0, i32 0<br class="">
-// CHECK-NEXT: call void @objc_destroyWeak(i8** [[T0]])<br class="">
+// CHECK-NEXT: call void @llvm.objc.destroyWeak(i8** [[T0]])<br class="">
<br class="">
<br class="">
Modified: cfe/trunk/test/SemaObjC/arc-objc-lifetime-conflict.m<br class="">
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/arc-objc-lifetime-conflict.m?rev=349535&r1=349534&r2=349535&view=diff" rel="noreferrer" target="_blank" class="">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaObjC/arc-objc-lifetime-conflict.m?rev=349535&r1=349534&r2=349535&view=diff</a><br class="">
==============================================================================<br class="">
--- cfe/trunk/test/SemaObjC/arc-objc-lifetime-conflict.m (original)<br class="">
+++ cfe/trunk/test/SemaObjC/arc-objc-lifetime-conflict.m Tue Dec 18 12:33:00 2018<br class="">
@@ -1,19 +1,19 @@<br class="">
// RUN: %clang_cc1 -triple x86_64-apple-darwin11 -fobjc-arc -fobjc-runtime-has-weak %s -emit-llvm -o - | FileCheck %s<br class="">
<br class="">
// CHECK: bitcast {{.*}} %self_weak_s_w_s<br class="">
-// CHECK-NEXT: objc_destroyWeak<br class="">
+// CHECK-NEXT: llvm.objc.destroyWeak<br class="">
// CHECK-NEXT: bitcast {{.*}} %self_strong_w_s<br class="">
-// CHECK-NEXT: objc_storeStrong<br class="">
+// CHECK-NEXT: llvm.objc.storeStrong<br class="">
// CHECK-NEXT: bitcast {{.*}} %self_weak_s<br class="">
-// CHECK-NEXT: objc_destroyWeak<br class="">
+// CHECK-NEXT: llvm.objc.destroyWeak<br class="">
// CHECK-NEXT: bitcast {{.*}} %self_weak_s3<br class="">
-// CHECK-NEXT: objc_destroyWeak<br class="">
+// CHECK-NEXT: llvm.objc.destroyWeak<br class="">
// CHECK-NEXT: bitcast {{.*}} %self_strong3<br class="">
-// CHECK-NEXT: objc_storeStrong<br class="">
+// CHECK-NEXT: llvm.objc.storeStrong<br class="">
// CHECK-NEXT: bitcast {{.*}} %self_strong2<br class="">
-// CHECK-NEXT: objc_storeStrong<br class="">
+// CHECK-NEXT: llvm.objc.storeStrong<br class="">
// CHECK-NEXT: bitcast {{.*}} %self_strong<br class="">
-// CHECK-NEXT: objc_storeStrong<br class="">
+// CHECK-NEXT: llvm.objc.storeStrong<br class="">
@interface NSObject<br class="">
@end<br class="">
@interface A : NSObject<br class="">
<br class="">
<br class="">
_______________________________________________<br class="">
cfe-commits mailing list<br class="">
<a href="mailto:cfe-commits@lists.llvm.org" target="_blank" class="">cfe-commits@lists.llvm.org</a><br class="">
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br class="">
</blockquote></div>
</div></blockquote></div><br class=""></div></div>_______________________________________________<br class="">cfe-commits mailing list<br class=""><a href="mailto:cfe-commits@lists.llvm.org" class="">cfe-commits@lists.llvm.org</a><br class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits<br class=""></div></blockquote></div><br class=""></div></body></html>