[PATCH] D66459: Make ShrinkWrap more consistent.

zuojian lin via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Sep 15 18:27:39 PDT 2019


linzj added a comment.

You need to clone https://github.com/linzj/llvm-toy, then checkout the branch named arm-tf-6_9_427_23. Then apply the patch llvm-patch-by-far.patch to llvm 8.0. So that you can compile the test case as follow. Because of a new calling convention v8cc.
the test case:

  ; ModuleID = 'main'
  source_filename = "main"
  target triple = "armv7-unknown-unknown-v8"
  
  %TaggedStruct = type opaque
  
  define v8cc %TaggedStruct addrspace(1)* @ArrayPrototypePop(i32, %TaggedStruct addrspace(1)**, %TaggedStruct addrspace(1)*, %TaggedStruct addrspace(1)*, %TaggedStruct addrspace(1)*, %TaggedStruct addrspace(1)*, %TaggedStruct addrspace(1)*, %TaggedStruct addrspace(1)*, %TaggedStruct addrspace(1)*, i8*, %TaggedStruct addrspace(1)**, i8**) #0 gc "coreclr" {
  entry:
    %ptr0 = bitcast %TaggedStruct addrspace(1)** %1 to i8*
    %ptr1 = getelementptr i8, i8* %ptr0 , i32 -1147
    store i8 0, i8* %ptr1
    %cmp0 = icmp eq i32 %0, 0
    br i1 %cmp0, label %exit, label %call_function
  exit:
    ret %TaggedStruct addrspace(1)* null
  call_function:
    %call_result = call v8cc %TaggedStruct addrspace(1)* @bar(%TaggedStruct addrspace(1)** %1)
    ret %TaggedStruct addrspace(1)* %call_result
  }
  
  declare %TaggedStruct addrspace(1)* @bar(%TaggedStruct addrspace(1)**)
  attributes #0 = { "js-function-call" "no-jump-tables"="true" "target-features"="+armv7-a,+dsp,+neon,+vfp3,-crypto,-d16,-fp-armv8,-fp-only-sp,-fp16,-thumb-mode,-vfp4" }

Without the patch this review mentioned, the entry of the function uses the r1, r0, wihout saving the csrs.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D66459/new/

https://reviews.llvm.org/D66459





More information about the llvm-commits mailing list