aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000
diff options
context:
space:
mode:
authorSegher Boessenkool <segher@kernel.crashing.org>2016-01-27 20:44:31 +0100
committerSegher Boessenkool <segher@gcc.gnu.org>2016-01-27 20:44:31 +0100
commitac22318350b43bf7a4d72ed620365652cf222e9e (patch)
tree8547d02c08e40dc86a41ba381b260aa739b2bb95 /gcc/config/rs6000
parentcbdd8ae08c2cec98ed063a0ef2c237e80539e597 (diff)
downloadgcc-ac22318350b43bf7a4d72ed620365652cf222e9e.zip
gcc-ac22318350b43bf7a4d72ed620365652cf222e9e.tar.gz
gcc-ac22318350b43bf7a4d72ed620365652cf222e9e.tar.bz2
rs6000: Put back the 's' output modifier
It turns out the 's' output modifier is used in some glibc math code, and is in an installed header even. So let's put it back, it is much less of a burden supporting it a bit longer than to deal with the fallout. (It is also being fixed for glibc.) * config/rs6000/rs6000.c (print_operand): Rollback 's' removal. From-SVN: r232900
Diffstat (limited to 'gcc/config/rs6000')
-rw-r--r--gcc/config/rs6000/rs6000.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index 7b9201a..e9e12f5 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -19949,6 +19949,14 @@ print_operand (FILE *file, rtx x, int code)
fprintf (file, "%d", 128 >> (REGNO (x) - CR0_REGNO));
return;
+ case 's':
+ /* Low 5 bits of 32 - value */
+ if (! INT_P (x))
+ output_operand_lossage ("invalid %%s value");
+ else
+ fprintf (file, HOST_WIDE_INT_PRINT_DEC, (32 - INTVAL (x)) & 31);
+ return;
+
case 't':
/* Like 'J' but get to the OVERFLOW/UNORDERED bit. */
gcc_assert (REG_P (x) && GET_MODE (x) == CCmode);