[Bug target/77822] [6 Regression] arm64 Error: immediate value out of range 0 to 63 at operand 3
krebbel at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Dec 2 08:31:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77822
--- Comment #33 from Andreas Krebbel <krebbel at gcc dot gnu.org> ---
Author: krebbel
Date: Fri Dec 2 08:30:16 2016
New Revision: 243160
URL: https://gcc.gnu.org/viewcvs?rev=243160&root=gcc&view=rev
Log:
PR target/77822: S390: Validate argument range of {zero,sign}_extract.
With some undefined code, combine generates patterns where the arguments to
*_extract are out of range, e.b. a negative bit position. If the s390 backend
accepts these, they lead to not just undefined behaviour but invalid assembly
instructions (argument out of the allowed range). So this patch makes sure
that the rtl expressions with out of range arguments are rejected.
gcc/ChangeLog:
2016-12-02 Dominik Vogt <vogt@linux.vnet.ibm.com>
PR target/77822
* config/s390/s390.md ("extzv")
("*extzv<mode><clobbercc_or_nocc>")
("*extzvdi<clobbercc_or_nocc>_lshiftrt")
("*<risbg_n>_ior_and_sr_ze")
("*extract1bitdi<clobbercc_or_nocc>")
("*insv<mode><clobbercc_or_nocc>", "*insv_rnsbg_noshift")
("*insv_rnsbg_srl", "*insv<mode>_mem_reg")
("*insvdi_mem_reghigh", "*insvdi_reg_imm"): Use EXTRACT_ARGS_IN_RANGE
to validate the arguments of zero_extract and sign_extract.
gcc/testsuite/ChangeLog:
2016-12-02 Dominik Vogt <vogt@linux.vnet.ibm.com>
PR target/77822
* gcc.target/s390/s390.exp: Support .C tests.
* gcc.target/s390/pr77822-2.c: New test.
* gcc.target/s390/pr77822-1.C: New test.
Added:
trunk/gcc/testsuite/gcc.target/s390/pr77822-1.C
trunk/gcc/testsuite/gcc.target/s390/pr77822-2.c
Modified:
trunk/gcc/ChangeLog
trunk/gcc/config/s390/s390.md
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.target/s390/s390.exp
More information about the Gcc-bugs
mailing list