aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-04-26 12:54:55 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-04-26 05:54:55 -0700
commit72fcb5d12bd7c7682bc91f187d7be596ba55bf9b (patch)
tree14c00f1c8d4db2b77deb207f31ffb5007574eb34
parent35b7fa6a40c32d4f36cddcd69d9014b53a02ae0d (diff)
downloadgcc-72fcb5d12bd7c7682bc91f187d7be596ba55bf9b.zip
gcc-72fcb5d12bd7c7682bc91f187d7be596ba55bf9b.tar.gz
gcc-72fcb5d12bd7c7682bc91f187d7be596ba55bf9b.tar.bz2
re PR c++/15119 (internal compiler error: in substitute_placeholder_in_expr, at tree.c:2155)
2004-04-26 Andrew Pinski <pinskia@physics.uc.edu> PR c++/15119 * g++.dg/other/vararg-1.C: New test. PR c++/4794 * g++.dg/eh/cleanup3.C: New test. From-SVN: r81188
-rw-r--r--gcc/testsuite/ChangeLog8
-rw-r--r--gcc/testsuite/g++.dg/eh/cleanup3.C20
-rw-r--r--gcc/testsuite/g++.dg/other/vararg-1.C20
3 files changed, 48 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index c7267d8..8760c5f 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2004-04-26 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR c++/15119
+ * g++.dg/other/vararg-1.C: New test.
+
+ PR c++/4794
+ * g++.dg/eh/cleanup3.C: New test.
+
2004-04-24 Laurent GUERBY <laurent@guerby.net>
* ada/acats/run_all.sh: Handle cd2a83c, cd2a91c (target_bit)
diff --git a/gcc/testsuite/g++.dg/eh/cleanup3.C b/gcc/testsuite/g++.dg/eh/cleanup3.C
new file mode 100644
index 0000000..79935de
--- /dev/null
+++ b/gcc/testsuite/g++.dg/eh/cleanup3.C
@@ -0,0 +1,20 @@
+// C++/4794
+// This test used to hang in has_cleanups
+// Contributed by: <fritz@intrinsity.com>
+/* { dg-do compile } */
+
+void foo (int a,int b,int c,int d,int e,int f,int g,int h,int i,int j,int k,
+ int l,int m,int n,int o,int p,int q,int r,int s,int t,int u,int v,int w,
+ int x,int y,int z,int aa,int ab,int ac)
+{
+if (!((((ac != 0) + (d != 0) + (c != 0) + (f != 0) + (x != 0) + (y != 0) +
+ (z != 0) + (aa != 0) + (ab != 0) + (g != 0) + (b != 0) + (a != 0) +
+ (h != 0) + (e != 0) + (p != 0) + (q != 0) + (n != 0) + (r != 0) +
+ (o != 0) + (v != 0) + (w != 0) + (t != 0) + (u != 0) + (s != 0) +
+ (k != 0) + (l != 0) + (m != 0) + (i != 0) + (j != 0)) <= 1)))
+ {
+ return;
+ }
+}
+
+
diff --git a/gcc/testsuite/g++.dg/other/vararg-1.C b/gcc/testsuite/g++.dg/other/vararg-1.C
new file mode 100644
index 0000000..f25606e
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/vararg-1.C
@@ -0,0 +1,20 @@
+// C++/15119
+// This ICEd in substitute_placeholder_in_expr because it did not
+// implement the 4 element trees.
+// Orginal test by: <wanderer@rsu.ru>
+// Reduced by: <bangerth@dealii.org>
+/* { dg-do compile } */
+
+template<typename T>
+const T& xmin(const T& a, const T& b);
+
+void bar (char *, ...);
+
+char const* descs[4];
+
+int main() {
+ int t = 1;
+ char buf[100];
+ bar( buf, descs[ xmin(t-1,4) ], 0 );
+ return 0;
+}