aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog126
-rw-r--r--gcc/testsuite/g++.dg/abi/mangle6.C18
-rw-r--r--gcc/testsuite/g++.dg/debug/debug4.C17
-rw-r--r--gcc/testsuite/g++.dg/opt/dtor1.C27
-rw-r--r--gcc/testsuite/g++.dg/opt/vtgc1.C29
-rw-r--r--gcc/testsuite/g++.dg/other/access1.C26
-rw-r--r--gcc/testsuite/g++.dg/other/classkey1.C17
-rw-r--r--gcc/testsuite/g++.dg/overload/pmf1.C21
-rw-r--r--gcc/testsuite/g++.dg/warn/Wunused-1.C15
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/crash25.C2
-rw-r--r--gcc/testsuite/g++.old-deja/g++.other/friend9.C6
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb42.C19
-rw-r--r--gcc/testsuite/g++.old-deja/g++.robertl/eb56.C2
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020304-1.c777
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020304-2.c10
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020309-1.c14
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020309-2.c16
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020312-1.c19
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/20020315-1.c34
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/920625-1.x25
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/981223-1.x20
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20020227-1.c30
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20020307-1.c69
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20020307-2.c55
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20020314-1.c36
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/va-arg-22.c78
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c16
-rw-r--r--gcc/testsuite/gcc.dg/20020103-1.c4
-rw-r--r--gcc/testsuite/gcc.dg/20020304-1.c37
-rw-r--r--gcc/testsuite/gcc.dg/20020310-1.c54
-rw-r--r--gcc/testsuite/gcc.dg/20020312-1.c10
-rw-r--r--gcc/testsuite/gcc.dg/20020312-2.c139
-rw-r--r--gcc/testsuite/gcc.dg/20020313-1.c70
-rw-r--r--gcc/testsuite/gcc.dg/debug/20020224-1.c60
-rw-r--r--gcc/testsuite/gcc.dg/weak-1.c51
35 files changed, 1906 insertions, 43 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d0790f59710..92ad43cf238 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,123 @@
+2002-03-17 Richard Earnshaw <rearnsha@arm.com>
+
+ * gcc.dg/weak-1.c: Fix scan tests.
+
+2002-03-15 Mark Mitchell <mark@codesourcery.com>
+
+ * g++.dg/opt/dtor1.C: New test.
+
+2002-03-15 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/compile/20020315-1.c: New test.
+
+2002-03-14 Richard Earnshaw <rearnsha@arm.com>
+
+ * gcc.c-torture/execute/20020314-1.c: New test.
+
+2002-03-14 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/warn/Wunused-1.C: New test.
+
+2002-02-13 Richard Sandiford <rsandifo@redhat.com>
+
+ * g++.dg/abi/mangle6.C: New test.
+
+2002-03-13 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/compile/20020309-2.c: New test.
+
+ * gcc.c-torture/compile/20020312-1.c: New test.
+
+2002-03-12 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/other/access1.C: New test.
+
+2002-03-12 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/wchar_t-1.c: New test.
+
+2002-03-12 David Edelsohn <edelsohn@gnu.org>
+
+ * gcc.dg/20020103-1.c: Add rs6000 target and macro.
+
+2002-03-12 Aldy Hernandez <aldyh@redhat.com>
+
+ * gcc.dg/20020103-1.c: Add other -D ppc variants.
+
+2002-03-12 Kazu Hirata <kazu@hxi.com>
+
+ * gcc.c-torture/execute/20020307-1.c: Use long.
+
+2002-03-12 Roger Sayle <roger@eyesopen.com>
+
+ * gcc.dg/20020312-1.c: New test case.
+
+2002-03-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * testsuite/g++.old-deja/g++.other/friend9.C: Revert DR 209 changes.
+ * testsuite/g++.old-deja/g++.robertl/eb56.C: Likewise.
+
+2002-03-11 Nathan Sidwell <nathan@codesourcery.com>
+
+ * testsuite/g++.dg/overload/pmf1.C: New test.
+
+2002-03-11 Jakub Jelinek <jakub@redhat.com>
+
+ PR optimization/5844
+ * gcc.dg/20020310-1.c: New test.
+
+2002-03-11 Hans-Peter Nilsson <hp@bitrange.com>
+
+ * gcc.c-torture/execute/20020227-1.c: New test.
+
+2002-03-09 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/va-arg-22.c: New test.
+
+Sat Mar 9 07:30:53 2002 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
+
+ * gcc.c-torture/compile/20020309-1.c: New test.
+
+2002-03-08 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.c-torture/execute/20020307-2.c: New test.
+
+2002-03-08 Richard Earnshaw <rearnsha@arm.com>
+
+ * gcc.c-torture/execute/20020307-1.c: New test.
+
+2002-03-05 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc.dg/20020304-1.c: New test.
+
+ * gcc.c-torture/compile/20020304-2.c: New test.
+
+2002-03-04 Zack Weinberg <zack@codesourcery.com>
+
+ * gcc.c-torture/compile/20020304-1.c: New test case
+ (from PR c/5830).
+
+2002-03-02 Nathan Sidwell <nathan@codesourcery.com>
+
+ * g++.dg/other/classkey1.C: New test.
+
+2002-03-01 Richard Henderson <rth@redhat.com>
+
+ * gcc.c-torture/compile/981223-1.x: New.
+ * gcc.c-torture/compile/920625-1.x: New.
+
+2002-02-28 Richard Henderson <rth@redhat.com>
+
+ * g++.dg/opt/vtgc1.C: Adjust patterns for ia64.
+
+2002-02-26 Alexandre Oliva <aoliva@redhat.com>
+
+ * gcc.dg/debug/20020224-1.c: New.
+
+2002-02-26 Jakub Jelinek <jakub@redhat.com>
+
+ * g++.dg/debug/debug4.C: New test.
+
2002-02-25 Kazu Hirata <kazu@hxi.com>
* gcc.c-torture/execute/960416-1.x: New.
@@ -126,7 +246,7 @@
2002-02-12 David Billinghurst <David.Billinghurst@riotinto.com>
- * gcc.dg/c99-flex-array-2.c: Add -std=iso9899:1999
+ * gcc.dg/c99-flex-array-2.c: Add -std=iso9899:1999
2002-02-10 Kazu Hirata <kazu@hxi.com>
@@ -171,7 +291,7 @@
2002-02-07 David Billinghurst <David.Billinghurst@riotinto.com>
PR fortran/5473
- * g77.dg/pr5473.f: Now dg-error. Add additional cases.
+ * g77.dg/pr5473.f: Now dg-error. Add additional cases.
2002-02-07 Richard Henderson <rth@redhat.com>
@@ -368,7 +488,7 @@
* gcc.c-torture/execute/20020127-1.c: New test.
2002-01-27 David Billinghurst <David.Billinghurst@riotinto.com>
-
+
* g77.dg/f77-edit-i-in.f: New test
* g77.dg/f77-edit-i-out.f: New test
diff --git a/gcc/testsuite/g++.dg/abi/mangle6.C b/gcc/testsuite/g++.dg/abi/mangle6.C
new file mode 100644
index 00000000000..e17ee7e653b
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/mangle6.C
@@ -0,0 +1,18 @@
+/* Check that __int128 types are mangled. */
+/* { dg-do compile { target mips64*-*-* } } */
+
+typedef int int128 __attribute__ ((mode(TI)));
+typedef unsigned int uint128 __attribute__ ((mode(TI)));
+
+struct S
+{
+ int128 i;
+ int128 func1 (int128) const { return i; }
+ uint128 func2 (uint128) const { return i; }
+};
+
+int128 (S::*ptr1) (int128) const = &S::func1;
+uint128 (S::*ptr2) (uint128) const = &S::func2;
+
+/* { dg-final { scan-assembler _ZNK1S5func1En } } */
+/* { dg-final { scan-assembler _ZNK1S5func2Eo } } */
diff --git a/gcc/testsuite/g++.dg/debug/debug4.C b/gcc/testsuite/g++.dg/debug/debug4.C
new file mode 100644
index 00000000000..8dceb0875bf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/debug/debug4.C
@@ -0,0 +1,17 @@
+/* PR debug/5770
+ This testcase failed at -O -g because the following constants
+ were optimized away since they were never referenced, but
+ since they are variables with initializers, rtl_for_decl_location
+ run expand_expr on their initializers and returned it.
+ This lead to references to constants which were deferred and thus
+ never emitted. */
+/* { dg-do link } */
+
+static const char foo[] = "foo string";
+static const char bar[30] = "bar string";
+static const wchar_t baz[] = L"baz string";
+
+int
+main ()
+{
+}
diff --git a/gcc/testsuite/g++.dg/opt/dtor1.C b/gcc/testsuite/g++.dg/opt/dtor1.C
new file mode 100644
index 00000000000..0352676c5f7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/dtor1.C
@@ -0,0 +1,27 @@
+// { dg-do run }
+// { dg-options "-O2" }
+
+int i;
+
+struct S {
+ S ();
+ S (const S&);
+ ~S ();
+};
+
+S::S () { ++i; }
+S::S (const S&) { ++i; }
+S::~S () { --i; }
+
+inline void f (S) {
+}
+
+int main () {
+ {
+ S s;
+ f (s);
+ }
+
+ return i;
+}
+
diff --git a/gcc/testsuite/g++.dg/opt/vtgc1.C b/gcc/testsuite/g++.dg/opt/vtgc1.C
index c50855529bb..511d45b36e7 100644
--- a/gcc/testsuite/g++.dg/opt/vtgc1.C
+++ b/gcc/testsuite/g++.dg/opt/vtgc1.C
@@ -118,16 +118,19 @@ void x3 (Multivs1 *ii) { ii->f2();}
void x4 (Multiss2 *ii) { ii->f2();}
void x5 (Multivv3 *ii) { ii->f2();}
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multivv3, 0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for Multivv3, 0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multiss2, vtable for Base2" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multivs1, vtable for Base2" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for Multivs1, vtable for Base2" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multisv0, vtable for Side0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for Multisv0, vtable for Side0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Side0, 0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for VbasedA, 0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for VbasedA, 0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Base2, vtable for Base1" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Base1, vtable for Base0" } }
-// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Base0, 0" } }
+// Use .* because of ia64's convention of marking symbols with "#", which
+// makes it through the c++filt.
+
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multivv3.*0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for Multivv3.*0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multiss2.*vtable for Base2" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multivs1.*vtable for Base2" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for Multivs1.*vtable for Base2" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Multisv0.*vtable for Side0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for Multisv0.*vtable for Side0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Side0.*0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for VbasedA.*0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*VTT for VbasedA.*0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Base2.*vtable for Base1" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Base1.*vtable for Base0" } }
+// { dg-final { scan-assembler-dem "\.vtable_inherit\[ \t\]*vtable for Base0.*0" } }
diff --git a/gcc/testsuite/g++.dg/other/access1.C b/gcc/testsuite/g++.dg/other/access1.C
new file mode 100644
index 00000000000..ee3239b93f2
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/access1.C
@@ -0,0 +1,26 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 12 Mar 2002 <nathan@codesourcery.com>
+
+// PR c++/5659. Failed to notice default accessed changed
+
+class Foo;
+struct Foo
+{
+ static int m;
+};
+
+class Outer {
+ private:
+ class Inner;
+ Inner *i;
+ public:
+ void pub();
+};
+
+struct Outer::Inner {
+ Inner(int i);
+};
+
+void Outer::pub() { i = new Inner(Foo::m); }
diff --git a/gcc/testsuite/g++.dg/other/classkey1.C b/gcc/testsuite/g++.dg/other/classkey1.C
new file mode 100644
index 00000000000..17fb54065d0
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/classkey1.C
@@ -0,0 +1,17 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 28 Feb 2002 <nathan@codesourcery.com>
+
+// PR 775. Some mismatches which were broken.
+
+template <class T> struct A {};
+union A<int> a; // { dg-error "`union' tag" "" }
+
+template <> union A<float> {}; // { dg-error "`union' tag" "" }
+
+struct B {};
+union B b; // { dg-error "`union' tag" "" }
+
+union C {};
+class C c; // { dg-error "`class' tag" "" }
diff --git a/gcc/testsuite/g++.dg/overload/pmf1.C b/gcc/testsuite/g++.dg/overload/pmf1.C
new file mode 100644
index 00000000000..772cb530529
--- /dev/null
+++ b/gcc/testsuite/g++.dg/overload/pmf1.C
@@ -0,0 +1,21 @@
+// { dg-do compile }
+
+// Copyright (C) 2002 Free Software Foundation, Inc.
+// Contributed by Nathan Sidwell 04 Mar 2002 <nathan@codesourcery.com>
+// Jason Merrill <jason@redhat.com>
+
+struct A { int i; };
+struct B: private A {};
+struct C {
+ C (int A::*);
+};
+
+int A::*aip = &A::i;
+
+void f (int B::*) {} // should choose this, even though it's ill-formed
+void f (C) {} // even though this would be well-formed
+
+int main ()
+{
+ f (aip); // { dg-error "`A' is an inaccessible base of `B'" "" }
+}
diff --git a/gcc/testsuite/g++.dg/warn/Wunused-1.C b/gcc/testsuite/g++.dg/warn/Wunused-1.C
new file mode 100644
index 00000000000..60ceb4f076d
--- /dev/null
+++ b/gcc/testsuite/g++.dg/warn/Wunused-1.C
@@ -0,0 +1,15 @@
+// Test whether -Wunused handles empty classes the same as non-empty.
+// { dg-do compile }
+// { dg-options "-Wunused" }
+
+struct A {};
+struct B { char c; };
+
+void foo ()
+{
+ struct A a0, a1;
+ struct B b0, b1 = { 25 };
+
+ a0 = a1; // { dg-bogus "value computed is not used" }
+ b0 = b1;
+}
diff --git a/gcc/testsuite/g++.old-deja/g++.other/crash25.C b/gcc/testsuite/g++.old-deja/g++.other/crash25.C
index 0c39be8b0bd..2f471fb866f 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/crash25.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/crash25.C
@@ -9,7 +9,7 @@ public:
X::x()
{ // ERROR -
-} // WARNING - no return
+}
X::~x()
{ // ERROR -
diff --git a/gcc/testsuite/g++.old-deja/g++.other/friend9.C b/gcc/testsuite/g++.old-deja/g++.other/friend9.C
index e51b0274c66..442d9899e3a 100644
--- a/gcc/testsuite/g++.old-deja/g++.other/friend9.C
+++ b/gcc/testsuite/g++.old-deja/g++.other/friend9.C
@@ -5,16 +5,14 @@
// Bug 853: We reported the wrong line no for a friend access violation
-// Since DR 209, friend declaration access is not checked.
-
class F
{
- class Internal;
+ class Internal; // ERROR - is private
};
class C
{
- friend class F::Internal;
+ friend class F::Internal; // ERROR - in this context
public:
typedef enum { A, B } e;
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C
deleted file mode 100644
index c27aa8d2df7..00000000000
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb42.C
+++ /dev/null
@@ -1,19 +0,0 @@
-//Build don't link:
-#include <vector>
-#include <algorithm>
-
-template <class T> class Expr
-{
-public :
-Expr(){};
-Expr(const T&){};
-};
-
-template <class T >
-inline bool compare(const Expr<T> a, const Expr<T> b){ return true; };
-
-int main()
-{
- std::vector<int> a(3);
- std::sort( a.begin(), a.end(), compare ); // ERROR - no matching function
-}
diff --git a/gcc/testsuite/g++.old-deja/g++.robertl/eb56.C b/gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
index 2249a40b24c..0b4bb7dbe39 100644
--- a/gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
+++ b/gcc/testsuite/g++.old-deja/g++.robertl/eb56.C
@@ -3,7 +3,7 @@
class foo {
public:
- typedef int sometype;
+ typedef int sometype;
};
struct die : public foo::sometype { // ERROR - invalid base type
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020304-1.c b/gcc/testsuite/gcc.c-torture/compile/20020304-1.c
new file mode 100644
index 00000000000..3940d5ffd2e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20020304-1.c
@@ -0,0 +1,777 @@
+/* In 3.0, this test case (extracted from Bigloo) crashes the compiler in
+ bb-reorder.c. This is a regression from 2.95, already fixed in 3.1.
+
+ Original bug report is c/5830 by Manuel Serrano <Manuel.Serrano@inria.fr>.
+ */
+
+typedef union scmobj {
+ struct pair {
+ union scmobj *car;
+ union scmobj *cdr;
+ } pair_t;
+ struct vector {
+ long header;
+ int length;
+ union scmobj *obj0;
+ } vector_t;
+} *obj_t;
+
+extern obj_t create_vector (int);
+extern obj_t make_pair (obj_t, obj_t);
+extern long bgl_list_length (obj_t);
+extern int BGl_equalzf3zf3zz__r4_equivalence_6_2z00 (obj_t, obj_t);
+extern obj_t BGl_evcompilezd2lambdazd2zz__evcompilez00 (obj_t
+ BgL_formalsz00_39,
+ obj_t BgL_bodyz00_40,
+ obj_t BgL_wherez00_41,
+ obj_t
+ BgL_namedzf3zf3_42,
+ obj_t BgL_locz00_43);
+
+obj_t
+BGl_evcompilezd2lambdazd2zz__evcompilez00 (obj_t BgL_formalsz00_39,
+ obj_t BgL_bodyz00_40,
+ obj_t BgL_wherez00_41,
+ obj_t BgL_namedzf3zf3_42,
+ obj_t BgL_locz00_43)
+{
+ if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00
+ (BgL_formalsz00_39,
+ ((obj_t) (obj_t) ((long) (((long) (0) << 2) | 2))))) {
+ BgL_tagzd21966zd2_943:
+ if ((BgL_namedzf3zf3_42 !=
+ ((obj_t) (obj_t) ((long) (((long) (1) << 2) | 2))))) {
+ obj_t BgL_v1042z00_998;
+ {
+ int BgL_auxz00_4066;
+ BgL_auxz00_4066 = (int) (((long) 3));
+ BgL_v1042z00_998 = create_vector (BgL_auxz00_4066);
+ }
+ {
+ obj_t BgL_arg1586z00_1000;
+ BgL_arg1586z00_1000 = make_pair (BgL_wherez00_41, BgL_bodyz00_40);
+ {
+ int BgL_auxz00_4070;
+ BgL_auxz00_4070 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1042z00_998))->vector_t.obj0))[BgL_auxz00_4070] =
+ BgL_arg1586z00_1000,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4073;
+ BgL_auxz00_4073 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1042z00_998))->vector_t.obj0))[BgL_auxz00_4073] =
+ BgL_locz00_43, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4078;
+ int BgL_auxz00_4076;
+ {
+ long BgL_auxz00_4079;
+ {
+ long BgL_auxz00_4080;
+ BgL_auxz00_4080 = bgl_list_length (BgL_formalsz00_39);
+ BgL_auxz00_4079 = (BgL_auxz00_4080 + ((long) 37));
+ }
+ BgL_auxz00_4078 =
+ (obj_t) ((long) (((long) (BgL_auxz00_4079) << 2) | 1));
+ }
+ BgL_auxz00_4076 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1042z00_998))->vector_t.obj0))[BgL_auxz00_4076] =
+ BgL_auxz00_4078, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1042z00_998;
+ } else {
+ obj_t BgL_v1043z00_1005;
+ {
+ int BgL_auxz00_4085;
+ BgL_auxz00_4085 = (int) (((long) 3));
+ BgL_v1043z00_1005 = create_vector (BgL_auxz00_4085);
+ }
+ {
+ int BgL_auxz00_4088;
+ BgL_auxz00_4088 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1043z00_1005))->vector_t.obj0))[BgL_auxz00_4088] =
+ BgL_bodyz00_40, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4091;
+ BgL_auxz00_4091 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1043z00_1005))->vector_t.obj0))[BgL_auxz00_4091] =
+ BgL_locz00_43, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4096;
+ int BgL_auxz00_4094;
+ {
+ long BgL_auxz00_4097;
+ {
+ long BgL_auxz00_4098;
+ BgL_auxz00_4098 = bgl_list_length (BgL_formalsz00_39);
+ BgL_auxz00_4097 = (BgL_auxz00_4098 + ((long) 42));
+ }
+ BgL_auxz00_4096 =
+ (obj_t) ((long) (((long) (BgL_auxz00_4097) << 2) | 1));
+ }
+ BgL_auxz00_4094 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1043z00_1005))->vector_t.obj0))[BgL_auxz00_4094] =
+ BgL_auxz00_4096, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1043z00_1005;
+ }
+ } else {
+ if (((((long) BgL_formalsz00_39) & ((1 << 2) - 1)) == 3)) {
+ if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00
+ (((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).cdr),
+ ((obj_t) (obj_t) ((long) (((long) (0) << 2) | 2))))) {
+ goto BgL_tagzd21966zd2_943;
+ } else {
+ obj_t BgL_cdrzd21979zd2_953;
+ BgL_cdrzd21979zd2_953 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).cdr);
+ if (((((long) BgL_cdrzd21979zd2_953) & ((1 << 2) - 1)) == 3)) {
+ if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00
+ (((((obj_t) ((long) BgL_cdrzd21979zd2_953 - 3))->pair_t).cdr),
+ ((obj_t) (obj_t) ((long) (((long) (0) << 2) | 2))))) {
+ goto BgL_tagzd21966zd2_943;
+ } else {
+ obj_t BgL_cdrzd21986zd2_956;
+ BgL_cdrzd21986zd2_956 =
+ ((((obj_t) ((long) BgL_cdrzd21979zd2_953 - 3))->pair_t).cdr);
+ if (((((long) BgL_cdrzd21986zd2_956) & ((1 << 2) - 1)) == 3)) {
+ if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00
+ (((((obj_t) ((long) BgL_cdrzd21986zd2_956 - 3))->pair_t).
+ cdr),
+ ((obj_t) (obj_t) ((long) (((long) (0) << 2) | 2))))) {
+ goto BgL_tagzd21966zd2_943;
+ } else {
+ obj_t BgL_cdrzd21994zd2_959;
+ {
+ obj_t BgL_auxz00_4120;
+ BgL_auxz00_4120 =
+ ((((obj_t) ((long) BgL_cdrzd21979zd2_953 - 3))->pair_t).
+ cdr);
+ BgL_cdrzd21994zd2_959 =
+ ((((obj_t) ((long) BgL_auxz00_4120 - 3))->pair_t).cdr);
+ }
+ if (((((long) BgL_cdrzd21994zd2_959) & ((1 << 2) - 1)) == 3)) {
+ if (BGl_equalzf3zf3zz__r4_equivalence_6_2z00
+ (((((obj_t) ((long) BgL_cdrzd21994zd2_959 - 3))->
+ pair_t).cdr),
+ ((obj_t) (obj_t) ((long) (((long) (0) << 2) | 2))))) {
+ goto BgL_tagzd21966zd2_943;
+ } else {
+ int BgL_testz00_4128;
+ {
+ obj_t BgL_auxz00_4129;
+ BgL_auxz00_4129 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).
+ car);
+ BgL_testz00_4128 =
+ ((((long) BgL_auxz00_4129) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4128) {
+ BgL_tagzd21971zd2_948:
+ if ((BgL_namedzf3zf3_42 !=
+ ((obj_t) (obj_t)
+ ((long) (((long) (1) << 2) | 2))))) {
+ obj_t BgL_v1052z00_1026;
+ {
+ int BgL_auxz00_4134;
+ BgL_auxz00_4134 = (int) (((long) 3));
+ BgL_v1052z00_1026 = create_vector (BgL_auxz00_4134);
+ }
+ {
+ obj_t BgL_arg1606z00_1028;
+ {
+ obj_t BgL_v1053z00_1029;
+ {
+ int BgL_auxz00_4137;
+ BgL_auxz00_4137 = (int) (((long) 3));
+ BgL_v1053z00_1029 =
+ create_vector (BgL_auxz00_4137);
+ }
+ {
+ int BgL_auxz00_4140;
+ BgL_auxz00_4140 = (int) (((long) 2));
+ ((&
+ (((obj_t) (BgL_v1053z00_1029))->vector_t.
+ obj0))[BgL_auxz00_4140] =
+ BgL_formalsz00_39,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4143;
+ BgL_auxz00_4143 = (int) (((long) 1));
+ ((&
+ (((obj_t) (BgL_v1053z00_1029))->vector_t.
+ obj0))[BgL_auxz00_4143] =
+ BgL_bodyz00_40,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4146;
+ BgL_auxz00_4146 = (int) (((long) 0));
+ ((&
+ (((obj_t) (BgL_v1053z00_1029))->vector_t.
+ obj0))[BgL_auxz00_4146] =
+ BgL_wherez00_41,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ BgL_arg1606z00_1028 = BgL_v1053z00_1029;
+ }
+ {
+ int BgL_auxz00_4149;
+ BgL_auxz00_4149 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1052z00_1026))->vector_t.obj0))
+ [BgL_auxz00_4149] =
+ BgL_arg1606z00_1028,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4152;
+ BgL_auxz00_4152 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1052z00_1026))->vector_t.obj0))
+ [BgL_auxz00_4152] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4157;
+ int BgL_auxz00_4155;
+ BgL_auxz00_4157 =
+ (obj_t) ((long)
+ (((long) (((long) 55)) << 2) | 1));
+ BgL_auxz00_4155 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1052z00_1026))->vector_t.obj0))
+ [BgL_auxz00_4155] =
+ BgL_auxz00_4157,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1052z00_1026;
+ } else {
+ obj_t BgL_v1054z00_1030;
+ {
+ int BgL_auxz00_4160;
+ BgL_auxz00_4160 = (int) (((long) 3));
+ BgL_v1054z00_1030 = create_vector (BgL_auxz00_4160);
+ }
+ {
+ obj_t BgL_arg1608z00_1032;
+ BgL_arg1608z00_1032 =
+ make_pair (BgL_bodyz00_40, BgL_formalsz00_39);
+ {
+ int BgL_auxz00_4164;
+ BgL_auxz00_4164 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1054z00_1030))->vector_t.obj0))
+ [BgL_auxz00_4164] =
+ BgL_arg1608z00_1032,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4167;
+ BgL_auxz00_4167 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1054z00_1030))->vector_t.obj0))
+ [BgL_auxz00_4167] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4172;
+ int BgL_auxz00_4170;
+ BgL_auxz00_4172 =
+ (obj_t) ((long)
+ (((long) (((long) 56)) << 2) | 1));
+ BgL_auxz00_4170 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1054z00_1030))->vector_t.obj0))
+ [BgL_auxz00_4170] =
+ BgL_auxz00_4172,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1054z00_1030;
+ }
+ } else {
+ int BgL_testz00_4175;
+ {
+ obj_t BgL_auxz00_4176;
+ {
+ obj_t BgL_auxz00_4177;
+ BgL_auxz00_4177 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->
+ pair_t).cdr);
+ BgL_auxz00_4176 =
+ ((((obj_t) ((long) BgL_auxz00_4177 - 3))->pair_t).
+ car);
+ }
+ BgL_testz00_4175 =
+ ((((long) BgL_auxz00_4176) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4175) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ int BgL_testz00_4181;
+ {
+ obj_t BgL_auxz00_4182;
+ {
+ obj_t BgL_auxz00_4183;
+ {
+ obj_t BgL_auxz00_4184;
+ BgL_auxz00_4184 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->
+ pair_t).cdr);
+ BgL_auxz00_4183 =
+ ((((obj_t) ((long) BgL_auxz00_4184 - 3))->
+ pair_t).cdr);
+ }
+ BgL_auxz00_4182 =
+ ((((obj_t) ((long) BgL_auxz00_4183 - 3))->
+ pair_t).car);
+ }
+ BgL_testz00_4181 =
+ ((((long) BgL_auxz00_4182) & ((1 << 2) - 1)) ==
+ 3);
+ }
+ if (BgL_testz00_4181) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ goto BgL_tagzd21971zd2_948;
+ }
+ }
+ }
+ }
+ } else {
+ int BgL_testz00_4189;
+ {
+ obj_t BgL_auxz00_4190;
+ BgL_auxz00_4190 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).
+ car);
+ BgL_testz00_4189 =
+ ((((long) BgL_auxz00_4190) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4189) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ int BgL_testz00_4193;
+ {
+ obj_t BgL_auxz00_4194;
+ {
+ obj_t BgL_auxz00_4195;
+ BgL_auxz00_4195 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).
+ cdr);
+ BgL_auxz00_4194 =
+ ((((obj_t) ((long) BgL_auxz00_4195 - 3))->pair_t).
+ car);
+ }
+ BgL_testz00_4193 =
+ ((((long) BgL_auxz00_4194) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4193) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ int BgL_testz00_4199;
+ {
+ obj_t BgL_auxz00_4200;
+ {
+ obj_t BgL_auxz00_4201;
+ {
+ obj_t BgL_auxz00_4202;
+ BgL_auxz00_4202 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->
+ pair_t).cdr);
+ BgL_auxz00_4201 =
+ ((((obj_t) ((long) BgL_auxz00_4202 - 3))->
+ pair_t).cdr);
+ }
+ BgL_auxz00_4200 =
+ ((((obj_t) ((long) BgL_auxz00_4201 - 3))->pair_t).
+ car);
+ }
+ BgL_testz00_4199 =
+ ((((long) BgL_auxz00_4200) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4199) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ if ((BgL_namedzf3zf3_42 !=
+ ((obj_t) (obj_t)
+ ((long) (((long) (1) << 2) | 2))))) {
+ obj_t BgL_v1050z00_1022;
+ {
+ int BgL_auxz00_4209;
+ BgL_auxz00_4209 = (int) (((long) 3));
+ BgL_v1050z00_1022 =
+ create_vector (BgL_auxz00_4209);
+ }
+ {
+ obj_t BgL_arg1604z00_1024;
+ BgL_arg1604z00_1024 =
+ make_pair (BgL_wherez00_41, BgL_bodyz00_40);
+ {
+ int BgL_auxz00_4213;
+ BgL_auxz00_4213 = (int) (((long) 2));
+ ((&
+ (((obj_t) (BgL_v1050z00_1022))->vector_t.
+ obj0))[BgL_auxz00_4213] =
+ BgL_arg1604z00_1024,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4216;
+ BgL_auxz00_4216 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1050z00_1022))->vector_t.obj0))
+ [BgL_auxz00_4216] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4221;
+ int BgL_auxz00_4219;
+ BgL_auxz00_4221 =
+ (obj_t) ((long)
+ (((long) (((long) 50)) << 2) | 1));
+ BgL_auxz00_4219 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1050z00_1022))->vector_t.obj0))
+ [BgL_auxz00_4219] =
+ BgL_auxz00_4221,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1050z00_1022;
+ } else {
+ obj_t BgL_v1051z00_1025;
+ {
+ int BgL_auxz00_4224;
+ BgL_auxz00_4224 = (int) (((long) 3));
+ BgL_v1051z00_1025 =
+ create_vector (BgL_auxz00_4224);
+ }
+ {
+ int BgL_auxz00_4227;
+ BgL_auxz00_4227 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1051z00_1025))->vector_t.obj0))
+ [BgL_auxz00_4227] =
+ BgL_bodyz00_40,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4230;
+ BgL_auxz00_4230 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1051z00_1025))->vector_t.obj0))
+ [BgL_auxz00_4230] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4235;
+ int BgL_auxz00_4233;
+ BgL_auxz00_4235 =
+ (obj_t) ((long)
+ (((long) (((long) 54)) << 2) | 1));
+ BgL_auxz00_4233 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1051z00_1025))->vector_t.obj0))
+ [BgL_auxz00_4233] =
+ BgL_auxz00_4235,
+ ((obj_t) (obj_t)
+ ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1051z00_1025;
+ }
+ }
+ }
+ }
+ }
+ }
+ } else {
+ int BgL_testz00_4238;
+ {
+ obj_t BgL_auxz00_4239;
+ BgL_auxz00_4239 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).car);
+ BgL_testz00_4238 =
+ ((((long) BgL_auxz00_4239) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4238) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ int BgL_testz00_4242;
+ {
+ obj_t BgL_auxz00_4243;
+ BgL_auxz00_4243 =
+ ((((obj_t) ((long) BgL_cdrzd21979zd2_953 - 3))->pair_t).
+ car);
+ BgL_testz00_4242 =
+ ((((long) BgL_auxz00_4243) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4242) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ if ((BgL_namedzf3zf3_42 !=
+ ((obj_t) (obj_t) ((long) (((long) (1) << 2) | 2))))) {
+ obj_t BgL_v1048z00_1018;
+ {
+ int BgL_auxz00_4248;
+ BgL_auxz00_4248 = (int) (((long) 3));
+ BgL_v1048z00_1018 = create_vector (BgL_auxz00_4248);
+ }
+ {
+ obj_t BgL_arg1602z00_1020;
+ BgL_arg1602z00_1020 =
+ make_pair (BgL_wherez00_41, BgL_bodyz00_40);
+ {
+ int BgL_auxz00_4252;
+ BgL_auxz00_4252 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1048z00_1018))->vector_t.obj0))
+ [BgL_auxz00_4252] =
+ BgL_arg1602z00_1020,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4255;
+ BgL_auxz00_4255 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1048z00_1018))->vector_t.obj0))
+ [BgL_auxz00_4255] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4260;
+ int BgL_auxz00_4258;
+ BgL_auxz00_4260 =
+ (obj_t) ((long) (((long) (((long) 49)) << 2) | 1));
+ BgL_auxz00_4258 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1048z00_1018))->vector_t.obj0))
+ [BgL_auxz00_4258] =
+ BgL_auxz00_4260,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1048z00_1018;
+ } else {
+ obj_t BgL_v1049z00_1021;
+ {
+ int BgL_auxz00_4263;
+ BgL_auxz00_4263 = (int) (((long) 3));
+ BgL_v1049z00_1021 = create_vector (BgL_auxz00_4263);
+ }
+ {
+ int BgL_auxz00_4266;
+ BgL_auxz00_4266 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1049z00_1021))->vector_t.obj0))
+ [BgL_auxz00_4266] =
+ BgL_bodyz00_40,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4269;
+ BgL_auxz00_4269 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1049z00_1021))->vector_t.obj0))
+ [BgL_auxz00_4269] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4274;
+ int BgL_auxz00_4272;
+ BgL_auxz00_4274 =
+ (obj_t) ((long) (((long) (((long) 53)) << 2) | 1));
+ BgL_auxz00_4272 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1049z00_1021))->vector_t.obj0))
+ [BgL_auxz00_4272] =
+ BgL_auxz00_4274,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1049z00_1021;
+ }
+ }
+ }
+ }
+ }
+ } else {
+ int BgL_testz00_4277;
+ {
+ obj_t BgL_auxz00_4278;
+ BgL_auxz00_4278 =
+ ((((obj_t) ((long) BgL_formalsz00_39 - 3))->pair_t).car);
+ BgL_testz00_4277 =
+ ((((long) BgL_auxz00_4278) & ((1 << 2) - 1)) == 3);
+ }
+ if (BgL_testz00_4277) {
+ goto BgL_tagzd21971zd2_948;
+ } else {
+ if ((BgL_namedzf3zf3_42 !=
+ ((obj_t) (obj_t) ((long) (((long) (1) << 2) | 2))))) {
+ obj_t BgL_v1046z00_1014;
+ {
+ int BgL_auxz00_4283;
+ BgL_auxz00_4283 = (int) (((long) 3));
+ BgL_v1046z00_1014 = create_vector (BgL_auxz00_4283);
+ }
+ {
+ obj_t BgL_arg1600z00_1016;
+ BgL_arg1600z00_1016 =
+ make_pair (BgL_wherez00_41, BgL_bodyz00_40);
+ {
+ int BgL_auxz00_4287;
+ BgL_auxz00_4287 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1046z00_1014))->vector_t.obj0))
+ [BgL_auxz00_4287] =
+ BgL_arg1600z00_1016,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4290;
+ BgL_auxz00_4290 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1046z00_1014))->vector_t.obj0))
+ [BgL_auxz00_4290] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4295;
+ int BgL_auxz00_4293;
+ BgL_auxz00_4295 =
+ (obj_t) ((long) (((long) (((long) 48)) << 2) | 1));
+ BgL_auxz00_4293 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1046z00_1014))->vector_t.obj0))
+ [BgL_auxz00_4293] =
+ BgL_auxz00_4295,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1046z00_1014;
+ } else {
+ obj_t BgL_v1047z00_1017;
+ {
+ int BgL_auxz00_4298;
+ BgL_auxz00_4298 = (int) (((long) 3));
+ BgL_v1047z00_1017 = create_vector (BgL_auxz00_4298);
+ }
+ {
+ int BgL_auxz00_4301;
+ BgL_auxz00_4301 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1047z00_1017))->vector_t.obj0))
+ [BgL_auxz00_4301] =
+ BgL_bodyz00_40,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4304;
+ BgL_auxz00_4304 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1047z00_1017))->vector_t.obj0))
+ [BgL_auxz00_4304] =
+ BgL_locz00_43,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4309;
+ int BgL_auxz00_4307;
+ BgL_auxz00_4309 =
+ (obj_t) ((long) (((long) (((long) 52)) << 2) | 1));
+ BgL_auxz00_4307 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1047z00_1017))->vector_t.obj0))
+ [BgL_auxz00_4307] =
+ BgL_auxz00_4309,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1047z00_1017;
+ }
+ }
+ }
+ }
+ } else {
+ if ((BgL_namedzf3zf3_42 !=
+ ((obj_t) (obj_t) ((long) (((long) (1) << 2) | 2))))) {
+ obj_t BgL_v1044z00_1010;
+ {
+ int BgL_auxz00_4314;
+ BgL_auxz00_4314 = (int) (((long) 3));
+ BgL_v1044z00_1010 = create_vector (BgL_auxz00_4314);
+ }
+ {
+ obj_t BgL_arg1598z00_1012;
+ BgL_arg1598z00_1012 = make_pair (BgL_wherez00_41, BgL_bodyz00_40);
+ {
+ int BgL_auxz00_4318;
+ BgL_auxz00_4318 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1044z00_1010))->vector_t.obj0))
+ [BgL_auxz00_4318] =
+ BgL_arg1598z00_1012,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ }
+ {
+ int BgL_auxz00_4321;
+ BgL_auxz00_4321 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1044z00_1010))->vector_t.obj0))[BgL_auxz00_4321]
+ =
+ BgL_locz00_43, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4326;
+ int BgL_auxz00_4324;
+ BgL_auxz00_4326 =
+ (obj_t) ((long) (((long) (((long) 47)) << 2) | 1));
+ BgL_auxz00_4324 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1044z00_1010))->vector_t.obj0))[BgL_auxz00_4324]
+ =
+ BgL_auxz00_4326,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1044z00_1010;
+ } else {
+ obj_t BgL_v1045z00_1013;
+ {
+ int BgL_auxz00_4329;
+ BgL_auxz00_4329 = (int) (((long) 3));
+ BgL_v1045z00_1013 = create_vector (BgL_auxz00_4329);
+ }
+ {
+ int BgL_auxz00_4332;
+ BgL_auxz00_4332 = (int) (((long) 2));
+ ((&(((obj_t) (BgL_v1045z00_1013))->vector_t.obj0))[BgL_auxz00_4332]
+ =
+ BgL_bodyz00_40,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ int BgL_auxz00_4335;
+ BgL_auxz00_4335 = (int) (((long) 1));
+ ((&(((obj_t) (BgL_v1045z00_1013))->vector_t.obj0))[BgL_auxz00_4335]
+ =
+ BgL_locz00_43, ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ {
+ obj_t BgL_auxz00_4340;
+ int BgL_auxz00_4338;
+ BgL_auxz00_4340 =
+ (obj_t) ((long) (((long) (((long) 51)) << 2) | 1));
+ BgL_auxz00_4338 = (int) (((long) 0));
+ ((&(((obj_t) (BgL_v1045z00_1013))->vector_t.obj0))[BgL_auxz00_4338]
+ =
+ BgL_auxz00_4340,
+ ((obj_t) (obj_t) ((long) (((long) (3) << 2) | 2))));
+ }
+ return BgL_v1045z00_1013;
+ }
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020304-2.c b/gcc/testsuite/gcc.c-torture/compile/20020304-2.c
new file mode 100644
index 00000000000..9a162d4935d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20020304-2.c
@@ -0,0 +1,10 @@
+/* This testcase ICEd because a SUBREG of MEM/v was never
+ simplified. */
+volatile unsigned long long *a;
+
+unsigned char
+foo (void)
+{
+ unsigned char b = (*a != 0);
+ return b;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020309-1.c b/gcc/testsuite/gcc.c-torture/compile/20020309-1.c
new file mode 100644
index 00000000000..b74061764de
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20020309-1.c
@@ -0,0 +1,14 @@
+int
+sub1 (char *p, int i)
+{
+ char j = p[i];
+
+ {
+ void
+ sub2 ()
+ {
+ i = 2;
+ p = p + 2;
+ }
+ }
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020309-2.c b/gcc/testsuite/gcc.c-torture/compile/20020309-2.c
new file mode 100644
index 00000000000..77699e43d3d
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20020309-2.c
@@ -0,0 +1,16 @@
+/* This testcase ICEd on IA-32 at -O2, because loop was calling convert_modes
+ between a MODE_FLOAT and MODE_INT class modes. */
+
+typedef union
+{
+ double d;
+ long long ll;
+} A;
+
+void
+foo (A x, A **y, A z)
+{
+ for (; *y; y++)
+ if (x.ll == 262 && (*y)->d == z.d)
+ break;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020312-1.c b/gcc/testsuite/gcc.c-torture/compile/20020312-1.c
new file mode 100644
index 00000000000..9f61dae64a5
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20020312-1.c
@@ -0,0 +1,19 @@
+/* PR optimization/5892 */
+typedef struct { unsigned long a; unsigned int b, c; } A;
+typedef struct { unsigned long a; A *b; int c; } B;
+
+static inline unsigned int
+bar (unsigned int x)
+{
+ unsigned long r;
+ asm ("" : "=r" (r) : "0" (x));
+ return r >> 31;
+}
+
+int foo (B *x)
+{
+ A *y;
+ y = x->b;
+ y->b = bar (x->c);
+ y->c = ({ unsigned int z = 1; (z << 24) | (z >> 24); });
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/20020315-1.c b/gcc/testsuite/gcc.c-torture/compile/20020315-1.c
new file mode 100644
index 00000000000..c6c9daa2f72
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/20020315-1.c
@@ -0,0 +1,34 @@
+/* PR bootstrap/4128 */
+
+extern int bar (char *, char *, int, int);
+extern long baz (char *, char *, int, int);
+
+int sgt (char *a, char *b, int c, int d)
+{
+ return bar (a, b, c, d) > 0;
+}
+
+long dgt (char *a, char *b, int c, int d)
+{
+ return baz (a, b, c, d) > 0;
+}
+
+int sne (char *a, char *b, int c, int d)
+{
+ return bar (a, b, c, d) != 0;
+}
+
+long dne (char *a, char *b, int c, int d)
+{
+ return baz (a, b, c, d) != 0;
+}
+
+int seq (char *a, char *b, int c, int d)
+{
+ return bar (a, b, c, d) == 0;
+}
+
+long deq (char *a, char *b, int c, int d)
+{
+ return baz (a, b, c, d) == 0;
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/920625-1.x b/gcc/testsuite/gcc.c-torture/compile/920625-1.x
new file mode 100644
index 00000000000..c88a02e9086
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/920625-1.x
@@ -0,0 +1,25 @@
+# The problem on IA-64 is that if-conversion creates a sequence
+#
+# (p17) cmp.geu p6, p7 = r48, r15
+# (p16) cmp.gtu p6, p7 = r48, r15
+#
+# where p16 and p17 are complemenary, but the assembler DV validation
+# code doesn't recognize that p6 and p7 are complimentary, and so
+# we end up warning for a later use
+#
+# (p6) addl r14 = 1, r0
+# (p7) mov r14 = r0
+#
+# that appears to be a WAW violation.
+
+set torture_eval_before_compile {
+
+ set compiler_conditional_xfail_data {
+ "missing .pred.rel.mutex directive" \
+ "ia64-*-*" \
+ { "-O2" "-O3" "-Os" } \
+ { "" }
+ }
+}
+
+return 0
diff --git a/gcc/testsuite/gcc.c-torture/compile/981223-1.x b/gcc/testsuite/gcc.c-torture/compile/981223-1.x
new file mode 100644
index 00000000000..f8d2aa6f938
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/981223-1.x
@@ -0,0 +1,20 @@
+# The problem on IA-64 is that the assembler emits
+#
+# Warning: Additional NOP may be necessary to workaround Itanium
+# processor A/B step errata
+#
+# This can be fixed by adding "-mb-step" to the command line, which
+# does in fact add the extra nop, if someone can tell me how to do
+# that for a c-torture compile test.
+
+set torture_eval_before_compile {
+
+ set compiler_conditional_xfail_data {
+ "need -mb-step" \
+ "ia64-*-*" \
+ { "-O2" "-O3" "-Os" } \
+ { "" }
+ }
+}
+
+return 0
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020227-1.c b/gcc/testsuite/gcc.c-torture/execute/20020227-1.c
new file mode 100644
index 00000000000..0f83088bff9
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20020227-1.c
@@ -0,0 +1,30 @@
+/* This testcase failed on mmix-knuth-mmixware. Problem was with storing
+ to an unaligned mem:SC, gcc tried doing it by parts from a (concat:SC
+ (reg:SF 293) (reg:SF 294)). */
+
+typedef __complex__ float cf;
+struct x { char c; cf f; } __attribute__ ((__packed__));
+extern void f2 (struct x*);
+extern void f1 (void);
+int
+main (void)
+{
+ f1 ();
+ exit (0);
+}
+
+void
+f1 (void)
+{
+ struct x s;
+ s.f = 1;
+ s.c = 42;
+ f2 (&s);
+}
+
+void
+f2 (struct x *y)
+{
+ if (y->f != 1 || y->c != 42)
+ abort ();
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020307-1.c b/gcc/testsuite/gcc.c-torture/execute/20020307-1.c
new file mode 100644
index 00000000000..c6379de3e8b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20020307-1.c
@@ -0,0 +1,69 @@
+#define MASK(N) ((1UL << (N)) - 1)
+#define BITS(N) ((1UL << ((N) - 1)) + 2)
+
+#define FUNC(N) void f##N(long j) { if ((j & MASK(N)) >= BITS(N)) abort();}
+
+FUNC(3)
+FUNC(4)
+FUNC(5)
+FUNC(6)
+FUNC(7)
+FUNC(8)
+FUNC(9)
+FUNC(10)
+FUNC(11)
+FUNC(12)
+FUNC(13)
+FUNC(14)
+FUNC(15)
+FUNC(16)
+FUNC(17)
+FUNC(18)
+FUNC(19)
+FUNC(20)
+FUNC(21)
+FUNC(22)
+FUNC(23)
+FUNC(24)
+FUNC(25)
+FUNC(26)
+FUNC(27)
+FUNC(28)
+FUNC(29)
+FUNC(30)
+FUNC(31)
+
+int main ()
+{
+ f3(0);
+ f4(0);
+ f5(0);
+ f6(0);
+ f7(0);
+ f8(0);
+ f9(0);
+ f10(0);
+ f11(0);
+ f12(0);
+ f13(0);
+ f14(0);
+ f15(0);
+ f16(0);
+ f17(0);
+ f18(0);
+ f19(0);
+ f20(0);
+ f21(0);
+ f22(0);
+ f23(0);
+ f24(0);
+ f25(0);
+ f26(0);
+ f27(0);
+ f28(0);
+ f29(0);
+ f30(0);
+ f31(0);
+
+ exit(0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020307-2.c b/gcc/testsuite/gcc.c-torture/execute/20020307-2.c
new file mode 100644
index 00000000000..0e67a2cf8c7
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20020307-2.c
@@ -0,0 +1,55 @@
+/* PR c/3711
+ This testcase ICEd on IA-32 at -O0 and was miscompiled otherwise,
+ because std_expand_builtin_va_arg didn't handle variable size types. */
+
+#include <stdarg.h>
+
+extern void abort (void);
+extern void exit (int);
+
+void bar (int c)
+{
+ static int d = '0';
+
+ if (c != d++)
+ abort ();
+ if (c < '0' || c > '9')
+ abort ();
+}
+
+void foo (int size, ...)
+{
+ struct
+ {
+ char x[size];
+ } d;
+ va_list ap;
+ int i;
+
+ va_start (ap, size);
+ d = va_arg (ap, typeof (d));
+ for (i = 0; i < size; i++)
+ bar (d.x[i]);
+ d = va_arg (ap, typeof (d));
+ for (i = 0; i < size; i++)
+ bar (d.x[i]);
+ va_end (ap);
+}
+
+int main (void)
+{
+ struct { char a[5]; } x, y;
+
+ x.a[0] = '0';
+ x.a[1] = '1';
+ x.a[2] = '2';
+ x.a[3] = '3';
+ x.a[4] = '4';
+ y.a[0] = '5';
+ y.a[1] = '6';
+ y.a[2] = '7';
+ y.a[3] = '8';
+ y.a[4] = '9';
+ foo (5, x, y);
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/20020314-1.c b/gcc/testsuite/gcc.c-torture/execute/20020314-1.c
new file mode 100644
index 00000000000..28288c82c8b
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20020314-1.c
@@ -0,0 +1,36 @@
+void f(void * a, double y)
+{
+}
+
+double g (double a, double b, double c, double d)
+{
+ double x, y, z;
+ void *p;
+
+ x = a + b;
+ y = c * d;
+
+ p = alloca (16);
+
+ f(p, y);
+ z = x * y * a;
+
+ return z + b;
+}
+
+main ()
+{
+ double a, b, c, d;
+ a = 1.0;
+ b = 0.0;
+ c = 10.0;
+ d = 0.0;
+
+ if (g (a, b, c, d) != 0.0)
+ abort ();
+
+ if (a != 1.0 || b != 0.0 || c != 10.0 || d != 0.0)
+ abort ();
+
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/va-arg-22.c b/gcc/testsuite/gcc.c-torture/execute/va-arg-22.c
new file mode 100644
index 00000000000..46b8dcbe825
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/va-arg-22.c
@@ -0,0 +1,78 @@
+#include <stdarg.h>
+
+extern void abort (void);
+extern void exit (int);
+
+void bar (int n, int c)
+{
+ static int lastn = -1, lastc = -1;
+
+ if (lastn != n)
+ {
+ if (lastc != lastn)
+ abort ();
+ lastc = 0;
+ lastn = n;
+ }
+
+ if (c != (char) (lastc ^ (n << 3)))
+ abort ();
+ lastc++;
+}
+
+#define D(N) typedef struct { char x[N]; } A##N;
+D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
+D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
+D(16) D(31) D(32) D(35) D(72)
+#undef D
+
+void foo (int size, ...)
+{
+#define D(N) A##N a##N;
+D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
+D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
+D(16) D(31) D(32) D(35) D(72)
+#undef D
+ va_list ap;
+ int i;
+
+ if (size != 21)
+ abort ();
+ va_start (ap, size);
+#define D(N) \
+ a##N = va_arg (ap, typeof (a##N)); \
+ for (i = 0; i < N; i++) \
+ bar (N, a##N.x[i]);
+D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
+D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
+D(16) D(31) D(32) D(35) D(72)
+#undef D
+ va_end (ap);
+}
+
+int main (void)
+{
+#define D(N) A##N a##N;
+D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
+D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
+D(16) D(31) D(32) D(35) D(72)
+#undef D
+ int i;
+
+#define D(N) \
+ for (i = 0; i < N; i++) \
+ a##N.x[i] = i ^ (N << 3);
+D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
+D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
+D(16) D(31) D(32) D(35) D(72)
+#undef D
+
+ foo (21
+#define D(N) , a##N
+D(0) D(1) D(2) D(3) D(4) D(5) D(6) D(7)
+D(8) D(9) D(10) D(11) D(12) D(13) D(14) D(15)
+D(16) D(31) D(32) D(35) D(72)
+#undef D
+ );
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c b/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
new file mode 100644
index 00000000000..51f91d6ad46
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/wchar_t-1.c
@@ -0,0 +1,16 @@
+typedef __WCHAR_TYPE__ wchar_t;
+wchar_t x[] = L"Ä";
+wchar_t y = L'Ä';
+extern void abort (void);
+extern void exit (int);
+
+int main (void)
+{
+ if (sizeof (x) / sizeof (wchar_t) != 2)
+ abort ();
+ if (x[0] != L'Ä' || x[1] != L'\0')
+ abort ();
+ if (y != L'Ä')
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/20020103-1.c b/gcc/testsuite/gcc.dg/20020103-1.c
index 1d94f7ebffc..7a5fdbe4b45 100644
--- a/gcc/testsuite/gcc.dg/20020103-1.c
+++ b/gcc/testsuite/gcc.dg/20020103-1.c
@@ -1,6 +1,6 @@
/* Verify that constant equivalences get reloaded properly, either by being
spilled to the stack, or regenerated, but not dropped to memory. */
-/* { dg-do compile { target i?86-*-* powerpc-*-* alpha*-*-* } } */
+/* { dg-do compile { target i?86-*-* powerpc-*-* rs6000-*-* alpha*-*-* } } */
/* { dg-options "-O2 -fpic -fno-omit-frame-pointer" } */
/* { dg-final { scan-assembler-not "LC" } } */
@@ -8,7 +8,7 @@
#if defined(__i386__)
#define clobber \
asm volatile("#asm" : : : "si", "di")
-#elif defined(__powerpc__) || defined(__PPC__)
+#elif defined(__powerpc__) || defined(__PPC__) || defined(__ppc__) || defined(__POWERPC__) || defined(PPC) || defined (_IBMR2)
#define clobber \
asm volatile("#asm" : : : "14", "15", "16", "17", "18", "19", "20", \
"21", "22", "23", "24", "25", "26", "27", "28", "29")
diff --git a/gcc/testsuite/gcc.dg/20020304-1.c b/gcc/testsuite/gcc.dg/20020304-1.c
new file mode 100644
index 00000000000..f6d6b4e49a7
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20020304-1.c
@@ -0,0 +1,37 @@
+/* { dg-do compile } */
+/* { dg-options "-O -fssa -fssa-ccp" } */
+
+double a[10][35], b[10][8];
+int c, c, d, e, f, g, h;
+
+int foo ()
+{
+ int i, j, k, l;
+
+ if (c > 10)
+ c = 10;
+
+ for (j = 0; j < c; j++)
+ {
+ k = 0;
+ for (l = 0; l < h; l++)
+ {
+ if (d != 5)
+ return -1;
+ k = l * g;
+ a[j][k] = (double) e; k++;
+ a[j][k] = (double) f; k++;
+ }
+ for (i = 0;i < 35; i++)
+ {
+ if (a[j][i] >= 0.9)
+ a[j][i] = 0.9;
+ if (a[j][i] <= 0.1)
+ a[j][i] = 0.1;
+ }
+ k = 0;
+ b[j][k] = (double) e; k++;
+ b[j][k] = (double) f; k++;
+ }
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/20020310-1.c b/gcc/testsuite/gcc.dg/20020310-1.c
new file mode 100644
index 00000000000..ec722ecc4aa
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20020310-1.c
@@ -0,0 +1,54 @@
+/* PR optimization/5844
+ This testcase was miscompiled because of an rtx sharing bug. */
+/* { dg-do run } */
+/* { dg-options "-O2" } */
+/* { dg-options "-O2 -mcpu=i586" { target i?86-*-* } } */
+
+struct A
+{
+ struct A *a;
+ int b;
+};
+
+struct B
+{
+ struct A *c;
+ unsigned int d;
+};
+
+struct A p = { &p, -1 };
+struct B q = { &p, 0 };
+
+extern void abort (void);
+extern void exit (int);
+
+struct B *
+foo (void)
+{
+ return &q;
+}
+
+void
+bar (void)
+{
+ struct B *e = foo ();
+ struct A *f = e->c;
+ int g = f->b;
+
+ if (++g == 0)
+ {
+ e->d++;
+ e->c = f->a;
+ }
+
+ f->b = g;
+}
+
+int
+main ()
+{
+ bar ();
+ if (p.b != 0 || q.d != 1 || q.c != &p)
+ abort ();
+ exit (0);
+}
diff --git a/gcc/testsuite/gcc.dg/20020312-1.c b/gcc/testsuite/gcc.dg/20020312-1.c
new file mode 100644
index 00000000000..978401862a4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20020312-1.c
@@ -0,0 +1,10 @@
+/* This testcase ICEd on alpha because of an unrecognized insn formed
+ by conditional move optimization using an incorrect mode. */
+/* { dg-do compile } */
+/* { dg-options "-O -ffast-math" } */
+
+char*
+barf (double x)
+{
+ return (x<0.0) ? "foo" : "bar";
+}
diff --git a/gcc/testsuite/gcc.dg/20020312-2.c b/gcc/testsuite/gcc.dg/20020312-2.c
new file mode 100644
index 00000000000..889e152be34
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20020312-2.c
@@ -0,0 +1,139 @@
+/* PR 5878.
+
+ We ICEd in verify_local_live_at_start because we incorrectly forced
+ the PIC register live between BAR and BAZ. We did this because the
+ definition of PIC_OFFSET_TABLE_REGNUM was incorrectly not INVALID_REGNUM
+ when !flag_pic for most targets. */
+
+/* { dg-do run } */
+/* { dg-options "-O -fno-pic" } */
+
+#if #cpu(a29k)
+/* No pic register. */
+#elif defined(__alpha__)
+/* PIC register is $29, but is used even without -fpic. */
+#elif defined(__arc__)
+# define PIC_REG "26"
+#elif defined(__arm__)
+# define PIC_REG "9"
+#elif defined(AVR)
+/* No pic register. */
+#elif defined(__clipper__)
+/* No pic register. */
+#elif defined(__convex__)
+/* No pic register. */
+#elif defined(__cris__)
+# define PIC_REG "0"
+#elif defined(__D30V__)
+/* No pic register. */
+#elif defined(__dsp1600__)
+/* No pic register. */
+#elif defined(__elxsi__)
+/* No pic register. */
+#elif defined(__fr30__)
+/* No pic register. */
+#elif defined(__H8300__) || defined(__H8300H__) || defined(__H8300S__)
+/* No pic register. */
+#elif #cpu(i370)
+/* No pic register. */
+#elif defined(__i386__)
+# define PIC_REG "ebx"
+#elif defined(__i860__)
+/* No pic register. */
+#elif defined(__i960__)
+/* No pic register. */
+#elif defined(__ia64__)
+/* PIC register is r1, but is used even without -fpic. */
+#elif defined(__M32R__)
+/* No pic register. */
+#elif defined(__m68k__)
+# define PIC_REG "a5"
+#elif defined(__m88k__)
+# define PIC_REG "25"
+#elif defined(__mc68hc1x__)
+/* No pic register. */
+#elif defined(__mcore__)
+/* No pic register. */
+#elif defined(__mips__)
+/* PIC register is $28, but is used even without -fpic. */
+#elif defined(__mn10200__)
+/* No pic register. */
+#elif defined(__mn10300__)
+/* No pic register. */
+#elif #cpu(ns32k)
+/* No pic register. */
+#elif defined(__parisc__)
+/* PIC register is %r27 or %r19, but is used even without -fpic. */
+#elif defined(__pdp11__)
+/* No pic register. */
+#elif defined(__pj__)
+/* No pic register. */
+#elif defined(__powerpc__)
+# ifdef __darwin__
+# define PIC_REG "31"
+# else
+# define PIC_REG "30"
+# endif
+#elif defined(__ibm032__) /* aka romp */
+/* No pic register. */
+#elif defined(__s390__)
+# define PIC_REG "12"
+#elif defined(__sparc__)
+# define PIC_REG "l7"
+#elif defined(__v850)
+/* No pic register. */
+#elif defined(__vax__)
+/* No pic register. */
+#elif defined(__we32000__)
+/* No pic register. */
+#elif defined(__xstormy16__)
+/* No pic register. */
+#elif defined(__XTENSA__)
+/* No pic register. */
+#else
+# error "Modify the test for your target."
+#endif
+
+#ifdef PIC_REG
+register void *reg __asm__(PIC_REG);
+#else
+/* We really need a global register variable set to the PIC register
+ to expose the bug. Oh well, let the test case not fail. */
+static void *reg;
+#endif
+
+void * __attribute__((noinline))
+dummy (void *x)
+{
+ return x;
+}
+
+void
+f (void)
+{
+ goto *dummy (&&bar);
+ for (;;)
+ {
+ foo:
+ reg = (void *) 1;
+ if (!reg)
+ goto baz;
+ reg = &&foo;
+ }
+
+ bar:
+ baz:
+ reg = 0;
+}
+
+int
+main()
+{
+ void *old_reg = reg;
+ reg = (void *) 1;
+ f ();
+ if (reg)
+ abort ();
+ reg = old_reg;
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/20020313-1.c b/gcc/testsuite/gcc.dg/20020313-1.c
new file mode 100644
index 00000000000..f0ae6d4bde4
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/20020313-1.c
@@ -0,0 +1,70 @@
+/* PR 5312
+ The problem here is that the ia64 scheduler saw a sequence of L L M type
+ insns, and messed up its internal state on which slot it was issuing
+ to, and aborted. */
+
+/* { dg-do compile { target ia64-*-* } } */
+/* { dg-options "-O2 -mconstant-gp" } */
+
+typedef unsigned long __u64;
+typedef unsigned int __u32;
+typedef struct { } spinlock_t;
+struct cpuinfo_ia64 {
+ union {
+ struct {
+ __u32 irq_count;
+ __u32 bh_count;
+ } f;
+ __u64 irq_and_bh_counts;
+ } irq_stat;
+ __u32 softirq_pending;
+} __attribute__ ((aligned ((1UL << 14)))) ;
+enum
+{
+ TCA_UNSPEC,
+ TCA_KIND,
+ TCA_OPTIONS,
+ TCA_STATS,
+ TCA_XSTATS,
+ TCA_RATE,
+};
+struct tc_stats
+{
+ __u64 bytes;
+ __u32 packets;
+ __u32 drops;
+ __u32 overlimits;
+ __u32 bps;
+ __u32 pps;
+ __u32 qlen;
+ __u32 backlog;
+ spinlock_t *lock;
+};
+struct sk_buff {
+ unsigned int data_len;
+ unsigned char *tail;
+ unsigned char *end;
+};
+static inline int skb_is_nonlinear(const struct sk_buff *skb)
+{
+ return skb->data_len;
+}
+static inline int skb_tailroom(const struct sk_buff *skb)
+{
+ return skb_is_nonlinear(skb) ? 0 : skb->end-skb->tail;
+}
+struct rtattr
+{
+ unsigned short rta_len;
+ unsigned short rta_type;
+};
+int qdisc_copy_stats(struct sk_buff *skb, struct tc_stats *st)
+{
+ do { do { (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count)++; __asm__ __volatile__("": : :"memory"); } while (0); (void)(st->lock); } while (0);
+ ({ if (skb_tailroom(skb) < (int)( (((( ((sizeof(struct rtattr))+4 -1) & ~(4 -1) ) + ((char*)&st->lock - (char*)st)))+4 -1) & ~(4 -1) )) goto rtattr_failure; __rta_fill(skb, TCA_STATS, (char*)&st->lock - (char*)st, st); });
+ do { do { } while(0); do { do { __asm__ __volatile__("": : :"memory"); (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count)--; } while (0); if (__builtin_expect((((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->softirq_pending), 0) && (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count) == 0) do_softirq(); } while (0); } while (0);
+ return 0;
+rtattr_failure:
+ do { do { } while(0); do { do { __asm__ __volatile__("": : :"memory"); (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count)--; } while (0); if (__builtin_expect((((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->softirq_pending), 0) && (((struct cpuinfo_ia64 *) (0xa000000000000000 + 2*(1UL << 14)))->irq_stat.f.bh_count) == 0) do_softirq(); } while (0); } while (0);
+ return -1;
+}
diff --git a/gcc/testsuite/gcc.dg/debug/20020224-1.c b/gcc/testsuite/gcc.dg/debug/20020224-1.c
new file mode 100644
index 00000000000..c61a17aed10
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/debug/20020224-1.c
@@ -0,0 +1,60 @@
+/* { dg-do compile } */
+
+/* Here's the deal: f3 is not inlined because it's too big, but f2 and
+ f1 are inlined into it. We used to fail to emit debugging info for
+ t1, because it was moved inside the (inlined) block of f1, marked
+ as abstract, then we'd crash. */
+
+#define UNUSED __attribute__((unused))
+#define EXT __extension__
+
+int undef(void);
+
+inline static void
+f1 (int i UNUSED)
+{
+}
+
+inline static void
+f2 (void)
+{
+ f1 (EXT ({ int t1 UNUSED; undef (); }));
+}
+
+inline static void
+f3 (void)
+{
+ int v1 UNUSED;
+ int v2 UNUSED;
+
+ EXT ({ int t2 UNUSED; if (0) undef (); 0; })
+ && EXT ({ int t3 UNUSED; if (0) undef (); 0; });
+
+ if (1)
+ {
+ undef ();
+ if (1)
+ f2 ();
+ }
+
+ {
+ undef ();
+ }
+}
+
+inline static void
+f4 (void)
+{
+ EXT ({ undef (); 1; }) && EXT ({ int t4 UNUSED = ({ 1; }); 1; });
+
+ { }
+
+ EXT ({ int t5 UNUSED; if (0) undef (); 0; });
+
+ f4 ();
+
+ undef ();
+ f3 ();
+
+ return;
+}
diff --git a/gcc/testsuite/gcc.dg/weak-1.c b/gcc/testsuite/gcc.dg/weak-1.c
new file mode 100644
index 00000000000..894a248a6f9
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/weak-1.c
@@ -0,0 +1,51 @@
+/* { dg-do compile } */
+/* COFF does not support weak, and dg doesn't support UNSUPPORTED. */
+/* { dg-do compile { xfail *-*-coff i?86-pc-cygwin } } */
+
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?a" } } */
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?b" } } */
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?c" } } */
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?d" } } */
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?e" } } */
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?g" } } */
+/* { dg-final { scan-assembler-not "weak\[^ \t\]*\[ \t]_?i" } } */
+/* { dg-final { scan-assembler "weak\[^ \t\]*\[ \t]_?j" } } */
+
+#pragma weak a
+int a;
+
+int b;
+#pragma weak b
+
+#pragma weak c
+extern int c;
+int c;
+
+extern int d;
+#pragma weak d
+int d;
+
+#pragma weak e
+void e(void) { }
+
+#if 0
+/* This permutation is illegal. */
+void f(void) { }
+#pragma weak f
+#endif
+
+#pragma weak g
+int g = 1;
+
+#if 0
+/* This permutation is illegal. */
+int h = 1;
+#pragma weak h
+#endif
+
+#pragma weak i
+extern int i;
+
+#pragma weak j
+extern int j;
+int use_j() { return j; }