GPRPair issue on LLVMLinux side

Tinti viniciustinti at gmail.com
Thu Aug 15 03:36:48 PDT 2013


Hi,

I have been facing some issues on LLVMLinux project side that is definitely
related to this commit:

    Bug 13662: Enable GPRPair for all i64 operands of inline asm on ARM
>
>     This patch assigns paired GPRs  for inline asm with
>     64-bit data on ARM. It's enabled for both ARM and Thumb to support
> modifiers
>     like %H, %Q, %R.
>
>     git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185169
>  91177308-0d34-0410-b5e6-96231b3b80d8


After this commit, we notice that vexpress started to have a runtime error.
By reverting this patch and three other minor patches, the problem is gone
and all start to work again. At compile time there was no error before and
after this patch (at least on vexpress target). This commit was made mainly
to solve problems with paired registers for strex/ldrex and strexd/ldrexd
instructions when using INLINE ASM.

Unfortunately I was not able to get the root cause of the error and it is
being quite difficult to find it. Specially because Linux kernel code is
huge. Besides it uses a lot of low-level optimizations that probably will
not appear in any other code base.

Hence I would like to ask for help or rather that patch be reviewed because
it may have issues. Do you have any other suggestions? If is there any data
that I could provide please ask me.

List of reverted patches to make vexpress work:

    Add a comment to this change, requested by Eric Christopher.
>
>     git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185853
>  91177308-0d34-0410-b5e6-96231b3b80d8
>     PR16490: fix a crash in ARMDAGToDAGISel::SelectInlineAsm.
>
>     In the SelectionDAG immediate operands to inline asm are constructed as
>     two separate operands. The first is a constant of value
> InlineAsm::Kind_Imm
>     and the second is a constant with the value of the immediate.
>
>     In ARMDAGToDAGISel::SelectInlineAsm, if we reach an operand of
> Kind_Imm we
>     should skip over the next operand too.
>
>     git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185688
>  91177308-0d34-0410-b5e6-96231b3b80d8
>     Remove unused variables.
>
>     git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185180
>  91177308-0d34-0410-b5e6-96231b3b80d8
>     Bug 13662: Enable GPRPair for all i64 operands of inline asm on ARM
>
>     This patch assigns paired GPRs  for inline asm with
>     64-bit data on ARM. It's enabled for both ARM and Thumb to support
> modifiers
>     like %H, %Q, %R.
>
>     git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@185169
>  91177308-0d34-0410-b5e6-96231b3b80d8


Best regards,
Tinti

-- 
Simplicity is the ultimate sophistication
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130815/ae5c868c/attachment.html>


More information about the llvm-commits mailing list