[PATCH] D22103: [ARM] Skip inline asm memory operands in DAGToDAGISel

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 18 12:02:20 PDT 2016


The patch is probably causing
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/12458

FAIL: LLVM :: CodeGen/ARM/inlineasm3.ll (4451 of 17333)
******************** TEST 'LLVM :: CodeGen/ARM/inlineasm3.ll' FAILED
********************
Script:
--
/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/./bin/llc
-mtriple=arm-eabi -float-abi=soft -mattr=+neon,+v6t2 -no-integrated-as
/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/ARM/inlineasm3.ll
-o -   | /mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm_build_msan/./bin/FileCheck
/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/ARM/inlineasm3.ll
--
Exit Code: 1

Command Output (stderr):
--
/mnt/b/sanitizer-buildbot2/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/ARM/inlineasm3.ll:10:10:
error: expected string not found in input
; CHECK: vmov.I64 q15, #0
         ^
<stdin>:1:4: note: scanning from here
 .text
   ^
<stdin>:8:8: note: possible intended match here
 .eabi_attribute 17, 1 @ Tag_ABI_PCS_GOT_use
       ^

--



On Mon, Jul 18, 2016 at 12:42 AM Diana Picus via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> This revision was automatically updated to reflect the committed changes.
> Closed by commit rL275776: [ARM] Skip inline asm memory operands in
> DAGToDAGISel (authored by rovka).
>
> Changed prior to commit:
>   https://reviews.llvm.org/D22103?vs=63102&id=64281#toc
>
> Repository:
>   rL LLVM
>
> https://reviews.llvm.org/D22103
>
> Files:
>   llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
>   llvm/trunk/test/CodeGen/ARM/inlineasm3.ll
>
> Index: llvm/trunk/test/CodeGen/ARM/inlineasm3.ll
> ===================================================================
> --- llvm/trunk/test/CodeGen/ARM/inlineasm3.ll
> +++ llvm/trunk/test/CodeGen/ARM/inlineasm3.ll
> @@ -121,3 +121,14 @@
>    %0 = tail call <4 x i32> asm "vld1.s32 {${0:e}[], ${0:f}[]}, [$1]",
> "=w,r"(i32* %p) nounwind
>    ret <4 x i32> %0
>  }
> +
> +; Bugzilla PR26038
> +
> +define i32 @fn1() local_unnamed_addr nounwind {
> +; CHECK-LABEL: fn1
> +entry:
> +; CHECK: mov [[addr:r[0-9]+]], #5
> +; CHECK: ldrh {{.*}}[[addr]]
> +  %0 = tail call i32 asm "ldrh  $0, $1", "=r,*Q"(i8* inttoptr (i32 5 to
> i8*)) nounwind
> +  ret i32 %0
> +}
> Index: llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
> ===================================================================
> --- llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
> +++ llvm/trunk/lib/Target/ARM/ARMISelDAGToDAG.cpp
> @@ -4264,6 +4264,17 @@
>      if (Changed && InlineAsm::isUseOperandTiedToDef(Flag, DefIdx))
>        IsTiedToChangedOp = OpChanged[DefIdx];
>
> +    // Memory operands to inline asm in the SelectionDAG are modeled with
> two
> +    // operands: a constant of value InlineAsm::Kind_Mem followed by the
> input
> +    // operand. If we get here and we have a Kind_Mem, skip the next
> operand (so
> +    // it doesn't get misinterpreted), and continue. We do this here
> because
> +    // it's important to update the OpChanged array correctly before
> moving on.
> +    if (Kind == InlineAsm::Kind_Mem) {
> +      SDValue op = N->getOperand(++i);
> +      AsmNodeOperands.push_back(op);
> +      continue;
> +    }
> +
>      if (Kind != InlineAsm::Kind_RegUse && Kind != InlineAsm::Kind_RegDef
>          && Kind != InlineAsm::Kind_RegDefEarlyClobber)
>        continue;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160718/4578235b/attachment.html>


More information about the llvm-commits mailing list