mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 04:30:23 +00:00
Add clang.arc.used to ModuleHasARC so ARC always runs if said call is present in a module.
clang.arc.used is an interesting call for ARC since ObjCARCContract needs to run to remove said intrinsic to avoid a linker error (since the call does not exist). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178369 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2a88555e0d
commit
3e9f3a0389
@ -64,7 +64,8 @@ static inline bool ModuleHasARC(const Module &M) {
|
||||
M.getNamedValue("objc_copyWeak") ||
|
||||
M.getNamedValue("objc_retainedObject") ||
|
||||
M.getNamedValue("objc_unretainedObject") ||
|
||||
M.getNamedValue("objc_unretainedPointer");
|
||||
M.getNamedValue("objc_unretainedPointer") ||
|
||||
M.getNamedValue("clang.arc.use");
|
||||
}
|
||||
|
||||
/// \enum InstructionClass
|
||||
|
@ -0,0 +1,16 @@
|
||||
; RUN: opt -objc-arc-contract -S < %s | FileCheck %s
|
||||
|
||||
; This file makes sure that clang.arc.used is removed even if no other ARC
|
||||
; interesting calls are in the module.
|
||||
|
||||
declare void @clang.arc.use(...) nounwind
|
||||
|
||||
; Kill calls to @clang.arc.use(...)
|
||||
; CHECK: define void @test0(
|
||||
; CHECK-NOT: clang.arc.use
|
||||
; CHECK: }
|
||||
define void @test0(i8* %a, i8* %b) {
|
||||
call void (...)* @clang.arc.use(i8* %a, i8* %b) nounwind
|
||||
ret void
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user