From: Jakub Jelinek Date: Thu, 7 Apr 2011 18:25:50 +0000 (+0200) Subject: backport: re PR c/47809 (ICE in gimplify_expr, at gimplify.c:7291) X-Git-Tag: releases/gcc-4.5.3~93 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b748529647205ff2a3bf1f39f570c6ed8c572219;p=thirdparty%2Fgcc.git backport: re PR c/47809 (ICE in gimplify_expr, at gimplify.c:7291) Backported from mainline 2011-02-19 Jakub Jelinek PR c/47809 * c-common.c (c_fully_fold_internal): Handle VIEW_CONVERT_EXPR. * gcc.target/i386/pr47809.c: New test. From-SVN: r172114 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index d619992113a2..8ebce09925b2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,6 +1,11 @@ 2011-04-07 Jakub Jelinek Backported from mainline + 2011-02-19 Jakub Jelinek + + PR c/47809 + * c-common.c (c_fully_fold_internal): Handle VIEW_CONVERT_EXPR. + 2011-01-26 Jakub Jelinek PR c/47473 diff --git a/gcc/c-common.c b/gcc/c-common.c index 03e56d282145..72ea40427fe9 100644 --- a/gcc/c-common.c +++ b/gcc/c-common.c @@ -1352,6 +1352,7 @@ c_fully_fold_internal (tree expr, bool in_init, bool *maybe_const_operands, case FIX_TRUNC_EXPR: case FLOAT_EXPR: CASE_CONVERT: + case VIEW_CONVERT_EXPR: case NON_LVALUE_EXPR: case NEGATE_EXPR: case BIT_NOT_EXPR: diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 48f03430af48..7a09f9f627c2 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,6 +1,11 @@ 2011-04-07 Jakub Jelinek Backported from mainline + 2011-02-19 Jakub Jelinek + + PR c/47809 + * gcc.target/i386/pr47809.c: New test. + 2011-01-26 Jakub Jelinek PR c/47473 diff --git a/gcc/testsuite/gcc.target/i386/pr47809.c b/gcc/testsuite/gcc.target/i386/pr47809.c new file mode 100644 index 000000000000..5832a65d8d8f --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr47809.c @@ -0,0 +1,13 @@ +/* PR c/47809 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse2" } */ + +#include +double bar (double, double); + +__m128d +foo (__m128d x) +{ + x *= (__m128d) { bar (1.0, 1.0), 0.0 }; + return (__m128d) ((__m128i) x ^ (__m128i) { 0, 0}); +}