diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-08-25 19:49:26 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-08-25 19:49:26 +0200 |
commit | 932c9bffa0224eb16e061da1802f6f95fb23e7d3 (patch) | |
tree | 8a8acf4b9ce8ddbeb52fe565d42d09aae104ca03 /gcc/combine.c | |
parent | d8099dd8599b3fb226b451a1d421046ace4c6307 (diff) | |
download | gcc-932c9bffa0224eb16e061da1802f6f95fb23e7d3.zip gcc-932c9bffa0224eb16e061da1802f6f95fb23e7d3.tar.gz gcc-932c9bffa0224eb16e061da1802f6f95fb23e7d3.tar.bz2 |
re PR rtl-optimization/45400 (XBMC AudioEngine Compilation C++ Internal Compiler Error /w Optimization)
PR rtl-optimization/45400
* combine.c (simplify_shift_const_1) <case SUBREG>: Only use
SUBREG_REG if both modes are of MODE_INT class.
* g++.dg/other/i386-8.C: New test.
From-SVN: r163551
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 94e6839..acff541 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -9858,7 +9858,9 @@ simplify_shift_const_1 (enum rtx_code code, enum machine_mode result_mode, > GET_MODE_SIZE (GET_MODE (varop))) && (unsigned int) ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (varop))) + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD) - == mode_words) + == mode_words + && GET_MODE_CLASS (GET_MODE (varop)) == MODE_INT + && GET_MODE_CLASS (GET_MODE (SUBREG_REG (varop))) == MODE_INT) { varop = SUBREG_REG (varop); if (GET_MODE_SIZE (GET_MODE (varop)) > GET_MODE_SIZE (mode)) |