This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
Hello! As explained in the PR [1], the pattern that implements MINUS overflow checks is wrong. The combine pass is able to create *subsi3_cconly_overflow pattern, but since the functionality of the pattern depends on inverted conditions in put_condition_mode, the final jump in the combined sequence gets the inverted condition. The attached patch removes wrong definitions. 2013-10-22 Uros Bizjak <ubizjak@gmail.com> PR target/58779 * config/i386/i386.c (put_condition_code) <case GTU, case LEU>: Remove CCCmode handling. <case LTU>: Return 'c' suffix for CCCmode. <case GEU>: Return 'nc' suffix for CCCmode. (ix86_cc_mode) <case GTU, case LEU>: Do not generate overflow checks. * config/i386/i386.md (*sub<mode>3_cconly_overflow): Remove. (*sub<mode>3_cc_overflow): Ditto. (*subsi3_zext_cc_overflow): Ditto. testsuite/ChangeLog: 2013-10-22 Uros Bizjak <ubizjak@gmail.com> PR target/58779 * gcc.target/i386/pr30315.c: Remove MINUSCC, DECCC, MINUSCCONLY and MINUSCCZEXT defines. Update scan-assembler dg directive. * gcc.dg/torture/pr58779.c: New test. Patch was bootstrapped and regression tested on x86_64-pc-linux-gnu {,-m32} for all default languages plus obj-c++ and go. Patch was committed to mainline SVN and will be committed to release branches in a couple of days. [1] http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58779#c5 Uros.
Attachment:
p.diff.txt
Description: Text document
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |