aboutsummaryrefslogtreecommitdiff
path: root/gcc/sreal.c
diff options
context:
space:
mode:
authorDominik Vogt <vogt@linux.vnet.ibm.com>2016-12-02 08:30:16 +0000
committerAndreas Krebbel <krebbel@gcc.gnu.org>2016-12-02 08:30:16 +0000
commit0f6f72e80525f14e91d4d1ee6d3bd91fd7c96859 (patch)
tree8f6736b8478f662ac5b9ec7843dbc636b64598e5 /gcc/sreal.c
parent8f61415f1f776d35f0d616bd662019a659a6e536 (diff)
downloadgcc-0f6f72e80525f14e91d4d1ee6d3bd91fd7c96859.zip
gcc-0f6f72e80525f14e91d4d1ee6d3bd91fd7c96859.tar.gz
gcc-0f6f72e80525f14e91d4d1ee6d3bd91fd7c96859.tar.bz2
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. From-SVN: r243160
Diffstat (limited to 'gcc/sreal.c')
0 files changed, 0 insertions, 0 deletions