On Tue, May 3, 2011 at 2:39 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Tue, May 03, 2011 at 10:26:50AM +0200, Uros Bizjak wrote: >> On Mon, May 2, 2011 at 10:16 PM, Jakub Jelinek <ja...@redhat.com> wrote: >> IMO, this problem arises due to wrong fix for PR target/37184 [1] that >> added CCA, CCC, CCO, CCS mode bypasses to ix86_match_ccmode. > > Yeah, ix86_match_ccmode was the first place I was looking at and > it surprised me it allowed all those modes for CCNOmode req_mode. > Thought there was a reason why it is done that way, but if there is not, > even better. CC{A,O,S,Z}mode seem to be apparently only used for SSE > intrinsics and CCCmode just for bt and adc/sbb etc.
Heh, there was no reason that these modes were added that way... just to bypass gcc_unreachable (), see referred PR. >> Jakub, can you please check the patch, I'm not able to test it >> properly until tonight. > > Yeah, following patch passed bootstrap/regtest on x86_64-linux and > i686-linux. Ok for trunk/4.6 (and perhaps later on 4.5/4.4)? > > 2011-05-03 Uros Bizjak <ubiz...@gmail.com> > Jakub Jelinek <ja...@redhat.com> > > PR target/48774 > * config/i386/i386.c (ix86_match_ccmode): For CC{A,C,O,S}mode > only succeed if req_mode is the same as set_mode. > > * gcc.dg/pr48774.c: New test. This is OK everywhere, it was a thinko after all. Thanks, Uros.