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! Attached patch fixes PR64882, where special predicate address_no_seg_operand allowed operands in DImode, as well as SImode. This resulted in invalid RTX, produced by *lea<mode>: (insn 60 59 61 3 (set (reg:SI 2 cx [orig:103 D.1909 ] [103]) (plus:DI (reg:DI 0 ax [106]) (reg:DI 1 dx [orig:104 D.1912 ] [104]))) pr64882.c:27 213 {*leasi} (nil)) The patch tightens the predicate to account for non-VOID modes, while still allowing VOIDmode CONST_INTs. Additionally, the patch clears a mess around the mode of the address_operand (luckily, x86 ignores this mode, see ix86_legitimate_address_p) and changes all uses to explicitly pass VOIDmode. Please note that the mode of address_operand predicate means the mode at the pointed location, not the mode of the operand itself. 2015-01-31 Uros Bizjak <ubizjak@gmail.com> PR target/64882 * config/i386/predicates.md (address_no_seg_operand): Reject non-CONST_INT_P operands in invalid mode. 2015-01-31 Uros Bizjak <ubizjak@gmail.com> * config/i386/i386.md (*prefetch_prefetchw1): Remove mode of address_operand 0. Rename from *prefetch_prefetchwt1_<mode>. * config/i386/predicates.md (address_no_seg_operand): Call address_operand with VOIDmode. (vsib_address_operand): Ditto. (address_mpx_no_base_operand): Ditto. (address_mpx_no_index_operand): Ditto. testsuite/ChangeLog: 2015-01-31 Uros Bizjak <ubizjak@gmail.com> PR target/64882 * gcc.dg/torture/pr64882.c: New test. Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}. Patch was committed to mainline SVN, and will be backported to other release branches. 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] |