]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Do not consider COMPLEX_TYPE as fold_convertible_p
authorMartin Liska <mliska@suse.cz>
Fri, 8 Jul 2016 20:21:02 +0000 (22:21 +0200)
committerMartin Liska <marxin@gcc.gnu.org>
Fri, 8 Jul 2016 20:21:02 +0000 (20:21 +0000)
Backported from mainline
2016-07-08  Martin Liska  <mliska@suse.cz>

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  <mliska@suse.cz>

* gcc.dg/torture/pr71606.c: New test.

From-SVN: r238173

gcc/ChangeLog
gcc/fold-const.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/torture/pr71606.c [new file with mode: 0644]

index efcbe0a07ff84dd04e2b1ecd485f9655625d386c..755d94362157ebf5566c2f52e5164799659c2070 100644 (file)
@@ -1,3 +1,12 @@
+2016-07-08  Martin Liska  <mliska@suse.cz>
+
+       Backported from mainline
+       2016-07-08  Martin Liska  <mliska@suse.cz>
+
+       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  <jakub@redhat.com>
 
        Backported from mainline
index 5ff927cdaea69a9415692273a4121d5a9dbb0833..fa58a5a6aab6ce2bfe1acf9891d9ae6d3da03923 100644 (file)
@@ -2204,7 +2204,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);
index 2162b5448adb80a87bd34643f1fb21be9b349ba5..d1a89f7cbae2e8f7337d303dfc90bd2505345475 100644 (file)
@@ -1,3 +1,10 @@
+2016-07-08  Martin Liska  <mliska@suse.cz>
+
+       Backported from mainline
+       2016-07-08  Martin Liska  <mliska@suse.cz>
+
+       * gcc.dg/torture/pr71606.c: New test.
+
 2016-07-07  Segher Boessenkool  <segher@kernel.crashing.org>
 
        PR target/69019
diff --git a/gcc/testsuite/gcc.dg/torture/pr71606.c b/gcc/testsuite/gcc.dg/torture/pr71606.c
new file mode 100644 (file)
index 0000000..b0cc26a
--- /dev/null
@@ -0,0 +1,11 @@
+_Complex a;
+void fn1 ();
+
+int main () {
+  fn1 (a);
+  return 0;
+}
+
+void fn1 (__complex__ long double p1) {
+  __imag__ p1 = 6.0L;
+}