[PATCH] D103062: [ObjC][ARC] Ignore operand bundle "clang.arc.attachedcall" on a call if the call's return type is void
    Akira Hatanaka via Phabricator via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Mon May 24 20:03:40 PDT 2021
    
    
  
ahatanak added a comment.
Without this patch, the verifier fails when the following code is compiled:
$ cat test.ll
  declare i8* @foo0()
  define internal i8* @foo1() #0 {
    %v1 = call i8 * @foo0()
    ret i8* %v1
  }
  
  define void @test() {
  entry:
    %call1 = call i8* @foo1() #0 [ "clang.arc.attachedcall"(i64 0) ]
    call void (...) @llvm.objc.clang.arc.noop.use(i8* %call1)
    ret void
  }
  
  declare i8* @llvm.objc.retain(i8*)
  declare void @llvm.objc.clang.arc.noop.use(...)
  
  attributes #0 = { noreturn }
  
  !0 = !{i32 1, !"clang.arc.retainAutoreleasedReturnValueMarker", !"mov\09fp, fp\09\09// marker for objc_retainAutoreleaseReturnValue"}
$ opt -S -o - -simplifycfg -deadargelim test.ll
Repository:
  rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D103062/new/
https://reviews.llvm.org/D103062
    
    
More information about the llvm-commits
mailing list