From: Martin Liska Date: Fri, 8 Jul 2016 20:22:22 +0000 (+0200) Subject: Do not consider COMPLEX_TYPE as fold_convertible_p X-Git-Tag: releases/gcc-4.9.4~80 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ad0f3a38621f6211ba3368494e5c9e0459e7ae7b;p=thirdparty%2Fgcc.git Do not consider COMPLEX_TYPE as fold_convertible_p Backported from mainline 2016-07-08 Martin Liska PR middle-end/71606 * fold-const.c (fold_convertible_p): As COMPLEX_TYPE folding produces SAVE_EXPRs, thus return false for the type. Backported from mainline 2016-07-08 Martin Liska * gcc.dg/torture/pr71606.c: New test. From-SVN: r238174 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ef4bc992e3e2..683efeb1a2ef 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2016-07-08 Martin Liska + + Backported from mainline + 2016-07-08 Martin Liska + + PR middle-end/71606 + * fold-const.c (fold_convertible_p): As COMPLEX_TYPE + folding produces SAVE_EXPRs, thus return false for the type. + 2016-07-07 Jakub Jelinek Backported from mainline diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 61bbf82e169c..f6d92abd2504 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -1933,7 +1933,6 @@ fold_convertible_p (const_tree type, const_tree arg) case REAL_TYPE: case FIXED_POINT_TYPE: - case COMPLEX_TYPE: case VECTOR_TYPE: case VOID_TYPE: return TREE_CODE (type) == TREE_CODE (orig); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 6949e8f23fd9..38717717b77f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2016-07-08 Martin Liska + + Backported from mainline + 2016-07-08 Martin Liska + + * gcc.dg/torture/pr71606.c: New test. + 2016-07-07 Jakub Jelinek Backported from mainline diff --git a/gcc/testsuite/gcc.dg/torture/pr71606.c b/gcc/testsuite/gcc.dg/torture/pr71606.c new file mode 100644 index 000000000000..b0cc26ac7715 --- /dev/null +++ b/gcc/testsuite/gcc.dg/torture/pr71606.c @@ -0,0 +1,11 @@ +_Complex a; +void fn1 (); + +int main () { + fn1 (a); + return 0; +} + +void fn1 (__complex__ long double p1) { + __imag__ p1 = 6.0L; +}