RTL representation of i386 shrdl instruction is incorrect?
Marc Glisse
marc.glisse@inria.fr
Thu Jun 5 20:47:00 GMT 2014
On Thu, 5 Jun 2014, Niranjan Hasabnis wrote:
> Thanks for your reply. I looked into some of the details of how that
> particular RTL template is used. It seems to me that the particular
> RTL template is used only when shifting 64-bit data type on a 32-bit
> machine. This is the underlying assumption encoded in i386.c file
> which generates that particular RTL only when instruction mode is
> DImode. If that is the case, then it won't matter whether one uses
> arithmetic shift or logical shift to right shift lower 4-bytes of a 8-byte
> value. In other words, the mapping between RTL template and shrdl
> is incorrect, but the underlying assumption in i386.c guards the bug.
This is still a bug, please file a PR. The use of (match_dup 0) apparently
prevents combine from matching the insn (that's just a guess from my notes
in PR 55583, I don't have access to my gcc machine right now to check),
but that doesn't mean we shouldn't fix things.
--
Marc Glisse
More information about the Gcc
mailing list