[llvm-commits] Fixing Bug 13662: paired register for inline asm with 64-bit data on ARM

Jakob Stoklund Olesen stoklund at 2pi.dk
Thu Jan 3 12:57:51 PST 2013


On Jan 3, 2013, at 12:03 PM, Weiming Zhao <weimingz at codeaurora.org> wrote:

> Yes, I tried to use CopyToReg/CopyFromReg to enforce the order. The issue is “Untyped” data type.
> The REG_SEQUENCE and EXTRACT_SUBREG has to use “Untyped” data type. However, CopyToReg/CopyFromReg doesn’t support such data type.

Why not?

>  And I explicitly add a glue edge between the Extract_subreg and inline asm:
> SDValue E0 = SDValue(CurDAG->getMachineNode(TargetOpcode::EXTRACT_SUBREG,
>                            dl, MVT::i32, MVT::Glue, PairedReg,
>                            CurDAG->getTargetConstant(ARM::gsub_0, MVT::i32),
>                            Chain.getValue(1) è Guarantees that this node is emitted after the linlineasm
>                           ), 0);
>  
> In other words, this node has the same effect as CopyFromReg.

Your DAG may work, but your changes still allow bad DAGs to be emitted. Plus, as I said, it's not necessary.

/jakob
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20130103/d2e97c5d/attachment.html>


More information about the llvm-commits mailing list