From 807a0f51d7c247cf33ee81536346ea4b9026bdde Mon Sep 17 00:00:00 2001 From: segher Date: Wed, 27 Jan 2016 19:44:31 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232900 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 4 ++++ gcc/config/rs6000/rs6000.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 76c7af2e6ef3..fecbc49c2edd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2016-01-27 Segher Boessenkool + + * config/rs6000/rs6000.c (print_operand): Rollback 's' removal. + 2016-01-27 Jeff Law PR tree-optimization/68398 diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c index 7b9201a80d46..e9e12f530206 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); -- 2.47.3