https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106933

Roger Sayle <roger at nextmovesoftware dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |roger at nextmovesoftware dot 
com

--- Comment #2 from Roger Sayle <roger at nextmovesoftware dot com> ---
Something very odd is going on.  foo.simdclone.2 contains a *cmpti_doubleword
instruction, that is defined using define_insn_and_split to be split
pre-reload.
For some reason, this isn't getting split during the split1 pass, but continues
through reload until things finally fail in cprop_hardreg.  Interestingly the
corresponding instruction is correctly split in simdclone.0 and simdclone.1.

The .293e.split1 file contains (much redacted)...

;; Function foo.simdclone.0
Splitting with gen_split_2 (i386.md:1511)
deleting insn with uid = 16.

;; Function foo.simdclone.1
Splitting with gen_split_2 (i386.md:1511)
deleting insn with uid = 22.

;; Function foo.simdclone.2

i.e. no splits are performed on foo.simdclone.2, but they are on simdclone.0
and simdclone.1.  Perhaps an off-by-one error?  I'll investigate further, but I
doubt this is an issue in the i386.md machine description; the ((simd))
attribute is interacting strangely with the split pass.

Reply via email to