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