aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2005-07-21 10:00:58 +0000
committerJakub Jelinek <jakub@redhat.com>2005-07-21 10:00:58 +0000
commitdf2a4a87c9f2e977b3071c9b45d624c47f60e072 (patch)
tree9671e5fc69ec86fc59ac76dd5e71af9432edc0df
parent42c0cb3faa3a1e7f516eda05567dc63b1d2ed09c (diff)
cvs update -Pd -jgcc-3_4-branch:20050{"526 16:30","721 08:00"}
git-svn-id: https://gcc.gnu.org/svn/gcc/branches/gcc-3_4-rhl-branch@102230 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--boehm-gc/ChangeLog4
-rw-r--r--boehm-gc/include/private/gcconfig.h2
-rw-r--r--contrib/ChangeLog4
-rwxr-xr-xcontrib/gennews3
-rw-r--r--gcc/ChangeLog94
-rw-r--r--gcc/c-decl.c3
-rw-r--r--gcc/config.gcc6
-rw-r--r--gcc/config.in3
-rw-r--r--gcc/config/alpha/alpha.c23
-rw-r--r--gcc/config/alpha/alpha.md8
-rw-r--r--gcc/config/freebsd-spec.h8
-rw-r--r--gcc/config/i386/i386.c2
-rw-r--r--gcc/config/rs6000/aix51.h4
-rw-r--r--gcc/config/sparc/sol2-gas-bi.h6
-rw-r--r--gcc/config/sparc/sol2.h8
-rwxr-xr-xgcc/configure39
-rw-r--r--gcc/configure.ac8
-rw-r--r--gcc/cp/ChangeLog61
-rw-r--r--gcc/cp/cp-tree.def4
-rw-r--r--gcc/cp/cp-tree.h2
-rw-r--r--gcc/cp/cvt.c1
-rw-r--r--gcc/cp/decl.c98
-rw-r--r--gcc/cp/parser.c52
-rw-r--r--gcc/cp/pt.c50
-rw-r--r--gcc/cp/typeck.c56
-rw-r--r--gcc/doc/install.texi10
-rw-r--r--gcc/fixinc/fixincl.x563
-rw-r--r--gcc/fixinc/inclhack.def213
-rw-r--r--gcc/fixinc/tests/base/iso/math_c99.h128
-rw-r--r--gcc/gcse.c2
-rw-r--r--gcc/testsuite/ChangeLog54
-rw-r--r--gcc/testsuite/g++.dg/conversion/simd2.C2
-rw-r--r--gcc/testsuite/g++.dg/init/member1.C2
-rw-r--r--gcc/testsuite/g++.dg/other/warning1.C4
-rw-r--r--gcc/testsuite/g++.old-deja/g++.oliva/template6.C5
-rw-r--r--gcc/testsuite/gcc.dg/c99-math-double-1.c36
-rw-r--r--gcc/testsuite/gcc.dg/c99-math-float-1.c36
-rw-r--r--gcc/testsuite/gcc.dg/c99-math-long-double-1.c36
-rw-r--r--gcc/testsuite/gcc.dg/c99-math.h222
-rw-r--r--gcc/testsuite/gcc.dg/pr22308-1.c2
-rw-r--r--gcc/version.c2
-rw-r--r--libstdc++-v3/ChangeLog11
-rw-r--r--libstdc++-v3/include/bits/c++config2
-rw-r--r--libstdc++-v3/include/bits/fstream.tcc29
-rw-r--r--libstdc++-v3/testsuite/Makefile.in182
45 files changed, 1680 insertions, 410 deletions
diff --git a/boehm-gc/ChangeLog b/boehm-gc/ChangeLog
index 98abf904225..b3a00d49049 100644
--- a/boehm-gc/ChangeLog
+++ b/boehm-gc/ChangeLog
@@ -1,3 +1,7 @@
+2005-07-17 SUGIOKA Toshinobu <sugioka@itonet.co.jp>
+
+ * include/private/gcconfig.h (sh-linux): Use LINUX_STACKBOTTOM.
+
2005-05-25 Andrew Haley <aph@redhat.com>
* include/private/gcconfig.h (HBLKSIZE): Define to 4096 on
diff --git a/boehm-gc/include/private/gcconfig.h b/boehm-gc/include/private/gcconfig.h
index 5544991d83c..b9c3c5b2dae 100644
--- a/boehm-gc/include/private/gcconfig.h
+++ b/boehm-gc/include/private/gcconfig.h
@@ -1751,7 +1751,7 @@
# endif
# ifdef LINUX
# define OS_TYPE "LINUX"
-# define STACKBOTTOM ((ptr_t) 0x7c000000)
+# define LINUX_STACKBOTTOM
# define USE_GENERIC_PUSH_REGS
# define DYNAMIC_LOADING
# define SEARCH_FOR_DATA_START
diff --git a/contrib/ChangeLog b/contrib/ChangeLog
index f4d47754001..a665fa5b5e7 100644
--- a/contrib/ChangeLog
+++ b/contrib/ChangeLog
@@ -1,3 +1,7 @@
+2005-06-05 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * gennews (files): Update for egcs-1.0 release pages consolidation.
+
2005-05-19 Release Manager
* GCC 3.4.4 released.
diff --git a/contrib/gennews b/contrib/gennews
index 37eb659134b..96be251bbd6 100755
--- a/contrib/gennews
+++ b/contrib/gennews
@@ -29,8 +29,7 @@ files="gcc-3.4/index.html gcc-3.4/changes.html
gcc-3.0/gcc-3.0.html gcc-3.0/features.html gcc-3.0/caveats.html
gcc-2.95/index.html gcc-2.95/features.html gcc-2.95/caveats.html
egcs-1.1/index.html egcs-1.1/features.html egcs-1.1/caveats.html
- egcs-1.0/egcs-1.0.3.html egcs-1.0/egcs-1.0.2.html egcs-1.0/egcs-1.0.1.html
- egcs-1.0/egcs-1.0.html egcs-1.0/features.html egcs-1.0/caveats.html"
+ egcs-1.0/index.html egcs-1.0/features.html egcs-1.0/caveats.html"
set -e
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5bd028d26b6..e72e751dfdf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,95 @@
+2005-07-21 Richard Sandiford <richard@codesourcery.com>
+
+ PR rtl-optimization/22167
+ * gcse.c (hoist_code): Fix hoist_exprs[] check.
+
+2005-07-19 Gerald Pfeifer <gerald@pfeifer.com>
+
+ * config.gcc: Add support for *-*-freebsd7, *-*-freebsd8,
+ and *-*-freebsd9.
+ * config/freebsd-spec.h (FBSD_TARGET_OS_CPP_BUILTINS): Ditto.
+
+2005-07-09 Jakub Jelinek <jakub@redhat.com>
+
+ * config/i386/i386.c (output_set_got): Don't omit OFFSET FLAT:
+ in Intel syntax add %reg, OFFSET FLAT:_GLOBAL_OFFSET_TABLE_+(.-.Lx).
+
+2005-07-08 David Edelsohn <edelsohn@gnu.org>
+
+ Backport from mainline:
+ 2005-06-18 Roger Sayle <roger@eyesopen.com>
+ PR target/22083
+ * config/rs6000/aix51.h (TARGET_C99_FUNCTIONS): Remove definition.
+
+2005-07-05 Joseph S. Myers <joseph@codesourcery.com>
+
+ PR c/22308
+ * c-decl.c (finish_struct): Also copy C_TYPE_FIELDS_READONLY,
+ C_TYPE_FIELDS_VOLATILE and C_TYPE_VARIABLE_SIZE to type variants.
+
+2005-06-14 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/20301
+ * config/sparc/sol2.h (ASM_GENERATE_INTERNAL_LABEL): Emit
+ unsigned index numbers.
+
+2005-06-08 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/21889
+ * config/sparc/sol2.h (ASM_OUTPUT_DWARF_DTPREL): Undefine.
+ * config/sparc/sol2-gas.h (ASM_OUTPUT_DWARF_DTPREL): Redefine.
+
+2005-06-04 Richard Henderson <rth@redhat.com>
+
+ PR target/21888
+ * config/alpha/alpha.c (alpha_align_insns): Don't insert nops
+ until we've passed initial ldgp.
+
+2005-06-01 Richard Henderson <rth@redhat.com>
+
+ * configure.ac (HAVE_AS_JSRDIRECT_RELOCS): New.
+ * config.in, configure: Rebuild.
+ * config/alpha/alpha.c (print_operand): Add 'j'.
+ * alpha.md (divmodsi_internal_er_1): Use it.
+ (divmoddi_internal_er_1): Likewise.
+
+2005-05-31 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * doc/install.texi (sparc-sun-solaris2*): Update note
+ about Sun bug 4910101.
+
+2005-05-29 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ PR target/19933
+ * fixinc/inclhack.def (solaris_math_6_1): New fix.
+ (solaris_math_9): Rewrite and guard with #ifdef __sparc__.
+ * fixinc/fixincl.x: Regenerate.
+ * fixinc/tests/base/iso/math_c99.h: Adjust for above changes.
+
+ Backport from mainline:
+ 2005-05-19 Eric Botcazou <ebotcazou@libertysurf.fr>
+ Joseph S. Myers <joseph@codesourcery.com>
+
+ * fixinc/inclhack.def: New fixes solaris_math_[1-9].
+ * fixinc/fixincl.x: Regenerate.
+ * fixinc/tests/base/iso/math_c99.h: New.
+
+ Backport from mainline:
+ 2005-05-10 Joseph S. Myers <joseph@codesourcery.com>
+
+ * fixinc/inclhack.def (stdio_stdarg_h, stdio_va_list): Bypass on
+ *-*-solaris2.1[0-9]*, not just *-*-solaris2.1[0-9].
+ * fixinc/fixincl.x: Regenerate.
+
+ Backport from mainline:
+ 2004-11-26 Mark Mitchell <mark@codesourcery.com>
+
+ * fixinc/inclhack.def (gnu_types): Do not use on Solaris 2.1x.
+ (stdio_va_list): Likewise.
+ (stdio_stdarg.h): Likewise.
+ (solaris_stdio_tag): Add bypass.
+ * fixinc/fixincl.x: Regenerated.
+
2005-05-08 Jakub Jelinek <jakub@redhat.com>
* config/ia64/ia64.c (ia64_override_options): Don't set
@@ -355,7 +447,7 @@
(m68hc11_split_move): Likewise.
2005-05-06 Bruce Korb <bkorb@gnu.org>
- Joseph S. Myers <joseph@codesourcery.com>
+ Joseph S. Myers <joseph@codesourcery.com>
* fixinc/inclhack.def: Correct backslashes
* fixinc/fixincl.x: regen
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index f04cb32af77..a38b09a760c 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -5128,6 +5128,9 @@ finish_struct (tree t, tree fieldlist, tree attributes)
TYPE_LANG_SPECIFIC (x) = TYPE_LANG_SPECIFIC (t);
TYPE_ALIGN (x) = TYPE_ALIGN (t);
TYPE_USER_ALIGN (x) = TYPE_USER_ALIGN (t);
+ C_TYPE_FIELDS_READONLY (x) = C_TYPE_FIELDS_READONLY (t);
+ C_TYPE_FIELDS_VOLATILE (x) = C_TYPE_FIELDS_VOLATILE (t);
+ C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t);
}
/* If this was supposed to be a transparent union, but we can't
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 9275d6755df..58332b30ac8 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -406,6 +406,12 @@ case ${target} in
tm_defines="${tm_defines} FBSD_MAJOR=5" ;;
*-*-freebsd6 | *-*-freebsd[6].*)
tm_defines="${tm_defines} FBSD_MAJOR=6" ;;
+ *-*-freebsd7 | *-*-freebsd[7].*)
+ tm_defines="${tm_defines} FBSD_MAJOR=7" ;;
+ *-*-freebsd8 | *-*-freebsd[8].*)
+ tm_defines="${tm_defines} FBSD_MAJOR=8" ;;
+ *-*-freebsd9 | *-*-freebsd[9].*)
+ tm_defines="${tm_defines} FBSD_MAJOR=9" ;;
*)
echo 'Please update *-*-freebsd* in gcc/config.gcc'
exit 1
diff --git a/gcc/config.in b/gcc/config.in
index 13942b22f2e..b2dec080bf7 100644
--- a/gcc/config.in
+++ b/gcc/config.in
@@ -97,6 +97,9 @@
/* Define if your assembler supports the Sun syntax for cmov. */
#undef HAVE_AS_IX86_CMOV_SUN_SYNTAX
+/* Define if your assembler supports the lituse_jsrdirect relocation. */
+#undef HAVE_AS_JSRDIRECT_RELOCS
+
/* Define if your assembler supports .sleb128 and .uleb128. */
#undef HAVE_AS_LEB128
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 27426066352..652d17091c9 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -5469,6 +5469,21 @@ print_operand (FILE *file, rtx x, int code)
}
break;
+ case 'j':
+ {
+ const char *lituse;
+
+#ifdef HAVE_AS_JSRDIRECT_RELOCS
+ lituse = "lituse_jsrdirect";
+#else
+ lituse = "lituse_jsr";
+#endif
+
+ if (INTVAL (x) == 0)
+ abort ();
+ fprintf (file, "\t\t!%s!%d", lituse, (int) INTVAL (x));
+ }
+ break;
case 'r':
/* If this operand is the constant zero, write it as "$31". */
if (GET_CODE (x) == REG)
@@ -8814,7 +8829,7 @@ alpha_align_insns (unsigned int max_align,
unsigned int align;
/* OFS is the offset of the current insn in the insn group. */
int ofs;
- int prev_in_use, in_use, len;
+ int prev_in_use, in_use, len, ldgp;
rtx i, next;
/* Let shorten branches care for assigning alignments to code labels. */
@@ -8832,6 +8847,8 @@ alpha_align_insns (unsigned int max_align,
if (GET_CODE (i) == NOTE)
i = next_nonnote_insn (i);
+ ldgp = alpha_function_needs_gp ? 8 : 0;
+
while (i)
{
next = (*next_group) (i, &in_use, &len);
@@ -8888,6 +8905,10 @@ alpha_align_insns (unsigned int max_align,
}
}
+ /* We may not insert padding inside the initial ldgp sequence. */
+ else if (ldgp > 0)
+ ldgp -= len;
+
/* If the group won't fit in the same INT16 as the previous,
we need to add padding to keep the group together. Rather
than simply leaving the insn filling to the assembler, we
diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md
index c008e1bed28..cca51ba181c 100644
--- a/gcc/config/alpha/alpha.md
+++ b/gcc/config/alpha/alpha.md
@@ -967,7 +967,7 @@
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
- "ldq $27,__%E3($29)\t\t!literal!%#\;jsr $23,($27),__%E3\t\t!lituse_jsr!%#"
+ "#"
"&& reload_completed"
[(parallel [(set (match_dup 0)
(sign_extend:DI (match_dup 3)))
@@ -1012,7 +1012,7 @@
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
- "jsr $23,($27),__%E3%J5"
+ "jsr $23,($27),__%E3%j5"
[(set_attr "type" "jsr")
(set_attr "length" "4")])
@@ -1036,7 +1036,7 @@
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
- "ldq $27,__%E3($29)\t\t!literal!%#\;jsr $23,($27),__%E3\t\t!lituse_jsr!%#"
+ "#"
"&& reload_completed"
[(parallel [(set (match_dup 0) (match_dup 3))
(use (match_dup 0))
@@ -1080,7 +1080,7 @@
(clobber (reg:DI 23))
(clobber (reg:DI 28))]
"TARGET_EXPLICIT_RELOCS && ! TARGET_ABI_OPEN_VMS"
- "jsr $23,($27),__%E3%J5"
+ "jsr $23,($27),__%E3%j5"
[(set_attr "type" "jsr")
(set_attr "length" "4")])
diff --git a/gcc/config/freebsd-spec.h b/gcc/config/freebsd-spec.h
index a98b0e5108c..8acf0cada94 100644
--- a/gcc/config/freebsd-spec.h
+++ b/gcc/config/freebsd-spec.h
@@ -51,7 +51,13 @@ Boston, MA 02111-1307, USA. */
#define FBSD_TARGET_OS_CPP_BUILTINS() \
do \
{ \
- if (FBSD_MAJOR == 6) \
+ if (FBSD_MAJOR == 9) \
+ builtin_define ("__FreeBSD__=9"); \
+ else if (FBSD_MAJOR == 8) \
+ builtin_define ("__FreeBSD__=8"); \
+ if (FBSD_MAJOR == 7) \
+ builtin_define ("__FreeBSD__=7"); \
+ else if (FBSD_MAJOR == 6) \
builtin_define ("__FreeBSD__=6"); \
else if (FBSD_MAJOR == 5) \
builtin_define ("__FreeBSD__=5"); \
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 519325ad66a..2ce11256cb4 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -4901,7 +4901,7 @@ output_set_got (rtx dest)
if (!flag_pic || TARGET_DEEP_BRANCH_PREDICTION)
output_asm_insn ("add{l}\t{%1, %0|%0, %1}", xops);
else if (!TARGET_MACHO)
- output_asm_insn ("add{l}\t{%1+[.-%a2], %0|%0, %a1+(.-%a2)}", xops);
+ output_asm_insn ("add{l}\t{%1+[.-%a2], %0|%0, %1+(.-%a2)}", xops);
return "";
}
diff --git a/gcc/config/rs6000/aix51.h b/gcc/config/rs6000/aix51.h
index 278b6a4c32a..863b97fb229 100644
--- a/gcc/config/rs6000/aix51.h
+++ b/gcc/config/rs6000/aix51.h
@@ -197,7 +197,3 @@ do { \
#undef LD_INIT_SWITCH
#define LD_INIT_SWITCH "-binitfini"
-/* AIX 5.1 has the float and long double forms of math functions. */
-#undef TARGET_C99_FUNCTIONS
-#define TARGET_C99_FUNCTIONS 1
-
diff --git a/gcc/config/sparc/sol2-gas-bi.h b/gcc/config/sparc/sol2-gas-bi.h
index 88b3954f820..bea2b3cf6b4 100644
--- a/gcc/config/sparc/sol2-gas-bi.h
+++ b/gcc/config/sparc/sol2-gas-bi.h
@@ -3,3 +3,9 @@
#undef AS_SPARC64_FLAG
#define AS_SPARC64_FLAG "-TSO -64 -Av9"
+
+/* Emit a DTP-relative reference to a TLS variable. */
+#ifdef HAVE_AS_TLS
+#define ASM_OUTPUT_DWARF_DTPREL(FILE, SIZE, X) \
+ sparc_output_dwarf_dtprel (FILE, SIZE, X)
+#endif
diff --git a/gcc/config/sparc/sol2.h b/gcc/config/sparc/sol2.h
index cbf914e6b7a..e5ed818f21a 100644
--- a/gcc/config/sparc/sol2.h
+++ b/gcc/config/sparc/sol2.h
@@ -84,7 +84,7 @@ Boston, MA 02111-1307, USA. */
#undef ASM_GENERATE_INTERNAL_LABEL
#define ASM_GENERATE_INTERNAL_LABEL(LABEL,PREFIX,NUM) \
- sprintf ((LABEL), "*.L%s%ld", (PREFIX), (long)(NUM))
+ sprintf ((LABEL), "*.L%s%lu", (PREFIX), (unsigned long)(NUM))
/* The native TLS-enabled assembler requires the directive #tls_object
to be put on objects in TLS sections (as of v7.1). This is not
@@ -113,6 +113,12 @@ Boston, MA 02111-1307, USA. */
} \
while (0)
+/* The Solaris assembler cannot grok r_tls_dtpoff. This is
+ a kludge as ASM_OUTPUT_DWARF_DTPREL is defined in sparc.h,
+ undefined here and defined again in sol2-gas-bi.h. */
+#ifdef HAVE_AS_TLS
+#undef ASM_OUTPUT_DWARF_DTPREL
+#endif
#undef ENDFILE_SPEC
diff --git a/gcc/configure b/gcc/configure
index b297f79a1c9..11c910bb669 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -11091,6 +11091,45 @@ cat >>confdefs.h <<\_ACEOF
_ACEOF
fi
+ echo "$as_me:$LINENO: checking assembler for jsrdirect relocation support" >&5
+echo $ECHO_N "checking assembler for jsrdirect relocation support... $ECHO_C" >&6
+if test "${gcc_cv_as_alpha_jsrdirect_relocs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gcc_cv_as_alpha_jsrdirect_relocs=no
+ if test $in_tree_gas = yes; then
+ if test $gcc_cv_gas_vers -ge `expr \( \( 2 \* 1000 \) + 16 \) \* 1000 + 90`
+ then gcc_cv_as_alpha_jsrdirect_relocs=yes
+fi
+ elif test x$gcc_cv_as != x; then
+ echo ' .set nomacro
+ .text
+ ldq $27, a($29) !literal!1
+ jsr $26, ($27), a !lituse_jsrdirect!1' > conftest.s
+ if { ac_try='$gcc_cv_as -o conftest.o conftest.s >&5'
+ { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+ (eval $ac_try) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }
+ then
+ gcc_cv_as_alpha_jsrdirect_relocs=yes
+ else
+ echo "configure: failed program was" >&5
+ cat conftest.s >&5
+ fi
+ rm -f conftest.o conftest.s
+ fi
+fi
+echo "$as_me:$LINENO: result: $gcc_cv_as_alpha_jsrdirect_relocs" >&5
+echo "${ECHO_T}$gcc_cv_as_alpha_jsrdirect_relocs" >&6
+if test $gcc_cv_as_alpha_jsrdirect_relocs = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_AS_JSRDIRECT_RELOCS 1
+_ACEOF
+
+fi
;;
cris-*-*)
diff --git a/gcc/configure.ac b/gcc/configure.ac
index 45dc2e196dd..aa7ef10a083 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -2327,6 +2327,14 @@ case "$target" in
lda $29, 0($29) !gpdisp!3],,
[AC_DEFINE(HAVE_AS_EXPLICIT_RELOCS, 1,
[Define if your assembler supports explicit relocations.])])
+ gcc_GAS_CHECK_FEATURE([jsrdirect relocation support],
+ gcc_cv_as_alpha_jsrdirect_relocs, [2,16,90],,
+[ .set nomacro
+ .text
+ ldq $27, a($29) !literal!1
+ jsr $26, ($27), a !lituse_jsrdirect!1],,
+ [AC_DEFINE(HAVE_AS_JSRDIRECT_RELOCS, 1,
+ [Define if your assembler supports the lituse_jsrdirect relocation.])])
;;
cris-*-*)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 397c1e42c3a..f213edd8752 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,64 @@
+2005-06-14 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21987
+ * decl.c (grok_op_properties): Add missing warn_conversion check.
+
+2005-06-13 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20789
+ * decl.c (cp_finish_decl): Clear runtime runtime initialization if
+ in-class decl's initializer is bad.
+
+2005-06-10 Aldy Hernandez <aldyh@redhat.com>
+
+ PR c++/10611
+ * cvt.c (build_expr_type_conversion): Same.
+ * typeck.c (build_binary_op): Handle vectors.
+ (common_type): Same.
+ (type_after_usual_arithmetic_conversions): Same.
+ * testsuite/g++.dg/conversion/simd2.C: New.
+
+2005-06-08 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/21903
+ * cp-tree.def (DEFAULT_ARG): Document TREE_CHAIN use.
+ * parser.c (cp_parser_late_parsing_default_args): Propagate parsed
+ argument to any early instantiations.
+ * pt.c (tsubst_arg_types): Chain early instantiation of default
+ arg.
+
+ PR c++/19884
+ * pt.c (check_explicit_specialization): Make sure namespace
+ binding lookup found an overloaded function.
+ (lookup_template_function): Just assert FNS is an overloaded
+ function.
+
+ PR c++/19608
+ * parser.c (cp_parser_late_parsing_for_member): Use
+ current_function_decl as scope to push to and from.
+ testsuite:
+
+2005-06-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/20563
+ * parser.c (cp_parser_label_declaration): Deal with invalid/missing
+ identifiers.
+
+2005-06-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21853
+ * typeck.c (casts_away_constness_r): Do not drop cv-qualifiers on
+ the pointed-to type for a pointer-to-member.
+
+2005-06-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21336
+ * cp-tree.h (grok_op_properties): Remove friendp parameter.
+ * decl.c (grokfndecl): Adjust call.
+ (grok_op_properties): Determine the class of which the function is
+ a member by looking at its DECL_CONTEXT, not current_class_type.
+ * pt.c (tsubst_decl): Adjust call to grok_op_properties.
+
2005-05-26 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
PR c++/21768
diff --git a/gcc/cp/cp-tree.def b/gcc/cp/cp-tree.def
index 36b7aaa85e8..f6a2bee8d57 100644
--- a/gcc/cp/cp-tree.def
+++ b/gcc/cp/cp-tree.def
@@ -203,7 +203,9 @@ DEFTREECODE (USING_DECL, "using_decl", 'd', 0)
/* A using directive. The operand is USING_STMT_NAMESPACE. */
DEFTREECODE (USING_STMT, "using_directive", 'e', 1)
-/* An un-parsed default argument. Looks like an IDENTIFIER_NODE. */
+/* An un-parsed default argument.
+ TREE_CHAIN is used to hold instantiations of functions that had to
+ be instantiated before the argument was parsed. */
DEFTREECODE (DEFAULT_ARG, "default_arg", 'x', 0)
/* A template-id, like foo<int>. The first operand is the template.
diff --git a/gcc/cp/cp-tree.h b/gcc/cp/cp-tree.h
index 51acbe92993..a758ed5bc4c 100644
--- a/gcc/cp/cp-tree.h
+++ b/gcc/cp/cp-tree.h
@@ -3693,7 +3693,7 @@ extern int copy_fn_p (tree);
extern tree get_scope_of_declarator (tree);
extern void grok_special_member_properties (tree);
extern int grok_ctor_properties (tree, tree);
-extern bool grok_op_properties (tree, int, bool);
+extern bool grok_op_properties (tree, bool);
extern tree xref_tag (enum tag_types, tree, bool, bool);
extern tree xref_tag_from_type (tree, tree, int);
extern void xref_basetypes (tree, tree);
diff --git a/gcc/cp/cvt.c b/gcc/cp/cvt.c
index 95fce0754f0..8276451cb10 100644
--- a/gcc/cp/cvt.c
+++ b/gcc/cp/cvt.c
@@ -1029,6 +1029,7 @@ build_expr_type_conversion (int desires, tree expr, bool complain)
return expr;
/* else fall through... */
+ case VECTOR_TYPE:
case BOOLEAN_TYPE:
return (desires & WANT_INT) ? expr : NULL_TREE;
case ENUMERAL_TYPE:
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index e95e71c185c..103daac1266 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -4912,6 +4912,16 @@ cp_finish_decl (tree decl, tree init, tree asmspec_tree, int flags)
"initialized", decl);
init = NULL_TREE;
}
+ if (DECL_EXTERNAL (decl) && init)
+ {
+ /* The static data member cannot be initialized by a
+ non-constant when being declared. */
+ error ("`%D' cannot be initialized by a non-constant expression"
+ " when being declared", decl);
+ DECL_INITIALIZED_IN_CLASS_P (decl) = 0;
+ init = NULL_TREE;
+ }
+
/* Handle:
[dcl.init]
@@ -5739,7 +5749,7 @@ grokfndecl (tree ctype,
}
if (IDENTIFIER_OPNAME_P (DECL_NAME (decl)))
- grok_op_properties (decl, friendp, /*complain=*/true);
+ grok_op_properties (decl, /*complain=*/true);
if (ctype && decl_function_context (decl))
DECL_NO_STATIC_CHAIN (decl) = 1;
@@ -9025,7 +9035,7 @@ unary_op_p (enum tree_code code)
errors are issued for invalid declarations. */
bool
-grok_op_properties (tree decl, int friendp, bool complain)
+grok_op_properties (tree decl, bool complain)
{
tree argtypes = TYPE_ARG_TYPES (TREE_TYPE (decl));
tree argtype;
@@ -9034,6 +9044,7 @@ grok_op_properties (tree decl, int friendp, bool complain)
enum tree_code operator_code;
int arity;
bool ok;
+ tree class_type;
/* Assume that the declaration is valid. */
ok = true;
@@ -9044,9 +9055,10 @@ grok_op_properties (tree decl, int friendp, bool complain)
argtype = TREE_CHAIN (argtype))
++arity;
- if (current_class_type == NULL_TREE)
- friendp = 1;
-
+ class_type = DECL_CONTEXT (decl);
+ if (class_type && !CLASS_TYPE_P (class_type))
+ class_type = NULL_TREE;
+
if (DECL_CONV_FN_P (decl))
operator_code = TYPE_EXPR;
else
@@ -9074,30 +9086,28 @@ grok_op_properties (tree decl, int friendp, bool complain)
my_friendly_assert (operator_code != LAST_CPLUS_TREE_CODE, 20000526);
SET_OVERLOADED_OPERATOR_CODE (decl, operator_code);
- if (! friendp)
- {
- switch (operator_code)
- {
- case NEW_EXPR:
- TYPE_HAS_NEW_OPERATOR (current_class_type) = 1;
- break;
+ if (class_type)
+ switch (operator_code)
+ {
+ case NEW_EXPR:
+ TYPE_HAS_NEW_OPERATOR (class_type) = 1;
+ break;
- case DELETE_EXPR:
- TYPE_GETS_DELETE (current_class_type) |= 1;
- break;
+ case DELETE_EXPR:
+ TYPE_GETS_DELETE (class_type) |= 1;
+ break;
- case VEC_NEW_EXPR:
- TYPE_HAS_ARRAY_NEW_OPERATOR (current_class_type) = 1;
- break;
+ case VEC_NEW_EXPR:
+ TYPE_HAS_ARRAY_NEW_OPERATOR (class_type) = 1;
+ break;
- case VEC_DELETE_EXPR:
- TYPE_GETS_DELETE (current_class_type) |= 2;
- break;
+ case VEC_DELETE_EXPR:
+ TYPE_GETS_DELETE (class_type) |= 2;
+ break;
- default:
- break;
- }
- }
+ default:
+ break;
+ }
if (operator_code == NEW_EXPR || operator_code == VEC_NEW_EXPR)
TREE_TYPE (decl) = coerce_new_type (TREE_TYPE (decl));
@@ -9151,31 +9161,37 @@ grok_op_properties (tree decl, int friendp, bool complain)
if (operator_code == CALL_EXPR)
return ok;
- if (IDENTIFIER_TYPENAME_P (name) && ! DECL_TEMPLATE_INFO (decl))
+ /* Warn about conversion operators that will never be used. */
+ if (IDENTIFIER_TYPENAME_P (name)
+ && ! DECL_TEMPLATE_INFO (decl)
+ && warn_conversion
+ /* Warn only declaring the function; there is no need to
+ warn again about out-of-class definitions. */
+ && class_type == current_class_type)
{
tree t = TREE_TYPE (name);
- if (! friendp)
+ int ref = (TREE_CODE (t) == REFERENCE_TYPE);
+ const char *what = 0;
+
+ if (ref)
+ t = TYPE_MAIN_VARIANT (TREE_TYPE (t));
+
+ if (TREE_CODE (t) == VOID_TYPE)
+ what = "void";
+ else if (class_type)
{
- int ref = (TREE_CODE (t) == REFERENCE_TYPE);
- const char *what = 0;
-
- if (ref)
- t = TYPE_MAIN_VARIANT (TREE_TYPE (t));
-
- if (TREE_CODE (t) == VOID_TYPE)
- what = "void";
- else if (t == current_class_type)
+ if (t == class_type)
what = "the same type";
/* Don't force t to be complete here. */
else if (IS_AGGR_TYPE (t)
&& COMPLETE_TYPE_P (t)
- && DERIVED_FROM_P (t, current_class_type))
+ && DERIVED_FROM_P (t, class_type))
what = "a base class";
-
- if (what && warn_conversion)
- warning ("conversion to %s%s will never use a type conversion operator",
- ref ? "a reference to " : "", what);
}
+
+ if (what)
+ warning ("conversion to %s%s will never use a type conversion operator",
+ ref ? "a reference to " : "", what);
}
if (operator_code == COND_EXPR)
{
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index e217b9aaab4..ed6031c0a62 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -13644,7 +13644,10 @@ cp_parser_label_declaration (cp_parser* parser)
/* Look for an identifier. */
identifier = cp_parser_identifier (parser);
- /* Declare it as a lobel. */
+ /* If we failed, stop. */
+ if (identifier == error_mark_node)
+ break;
+ /* Declare it as a label. */
finish_label_decl (identifier);
/* If the next token is a `;', stop. */
if (cp_lexer_next_token_is (parser->lexer, CPP_SEMICOLON))
@@ -14773,9 +14776,10 @@ cp_parser_late_parsing_for_member (cp_parser* parser, tree member_function)
tokens = DECL_PENDING_INLINE_INFO (member_function);
DECL_PENDING_INLINE_INFO (member_function) = NULL;
DECL_PENDING_INLINE_P (member_function) = 0;
- /* If this was an inline function in a local class, enter the scope
- of the containing function. */
- function_scope = decl_function_context (member_function);
+
+ /* If this is a local class, enter the scope of the containing
+ function. */
+ function_scope = current_function_decl;
if (function_scope)
push_function_context_to (function_scope);
@@ -14856,33 +14860,49 @@ cp_parser_late_parsing_default_args (cp_parser *parser, tree fn)
parameters;
parameters = TREE_CHAIN (parameters))
{
- if (!TREE_PURPOSE (parameters)
- || TREE_CODE (TREE_PURPOSE (parameters)) != DEFAULT_ARG)
+ tree default_arg = TREE_PURPOSE (parameters);
+ tree parsed_arg;
+
+ if (!default_arg)
+ continue;
+
+ if (TREE_CODE (default_arg) != DEFAULT_ARG)
+ /* This can happen for a friend declaration for a function
+ already declared with default arguments. */
continue;
- /* Save away the current lexer. */
+ /* Save away the current lexer. */
saved_lexer = parser->lexer;
- /* Create a new one, using the tokens we have saved. */
- tokens = DEFARG_TOKENS (TREE_PURPOSE (parameters));
+ /* Create a new one, using the tokens we have saved. */
+ tokens = DEFARG_TOKENS (default_arg);
parser->lexer = cp_lexer_new_from_tokens (tokens);
- /* Set the current source position to be the location of the
- first token in the default argument. */
+ /* Set the current source position to be the location of the
+ first token in the default argument. */
cp_lexer_peek_token (parser->lexer);
- /* Local variable names (and the `this' keyword) may not appear
- in a default argument. */
+ /* Local variable names (and the `this' keyword) may not appear
+ in a default argument. */
saved_local_variables_forbidden_p = parser->local_variables_forbidden_p;
parser->local_variables_forbidden_p = true;
- /* Parse the assignment-expression. */
+
+ /* Parse the assignment-expression. */
if (DECL_FRIEND_CONTEXT (fn))
push_nested_class (DECL_FRIEND_CONTEXT (fn));
else if (DECL_CLASS_SCOPE_P (fn))
push_nested_class (DECL_CONTEXT (fn));
- TREE_PURPOSE (parameters) = cp_parser_assignment_expression (parser);
+ parsed_arg = cp_parser_assignment_expression (parser);
if (DECL_FRIEND_CONTEXT (fn) || DECL_CLASS_SCOPE_P (fn))
pop_nested_class ();
-
+
+ TREE_PURPOSE (parameters) = parsed_arg;
+
+ /* Update any instantiations we've already created. */
+ for (default_arg = TREE_CHAIN (default_arg);
+ default_arg;
+ default_arg = TREE_CHAIN (default_arg))
+ TREE_PURPOSE (TREE_PURPOSE (default_arg)) = parsed_arg;
+
/* If the token stream has not been completely used up, then
there was extra junk after the end of the default
argument. */
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 62c95139d50..723346d8342 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1779,6 +1779,11 @@ check_explicit_specialization (tree declarator,
/* Find the namespace binding, using the declaration
context. */
fns = namespace_binding (dname, CP_DECL_CONTEXT (decl));
+ if (!fns || !is_overloaded_fn (fns))
+ {
+ error ("`%D' is not a template function", dname);
+ fns = error_mark_node;
+ }
}
declarator = lookup_template_function (fns, NULL_TREE);
@@ -4066,18 +4071,9 @@ lookup_template_function (tree fns, tree arglist)
return error_mark_node;
my_friendly_assert (!arglist || TREE_CODE (arglist) == TREE_VEC, 20030726);
- if (fns == NULL_TREE
- || TREE_CODE (fns) == FUNCTION_DECL)
- {
- error ("non-template used as template");
- return error_mark_node;
- }
-
- my_friendly_assert (TREE_CODE (fns) == TEMPLATE_DECL
- || TREE_CODE (fns) == OVERLOAD
- || BASELINK_P (fns)
- || TREE_CODE (fns) == IDENTIFIER_NODE,
- 20020730);
+ my_friendly_assert (fns && (is_overloaded_fn (fns)
+ || TREE_CODE (fns) == IDENTIFIER_NODE),
+ 20050608);
if (BASELINK_P (fns))
{
@@ -6291,8 +6287,7 @@ tsubst_decl (tree t, tree args, tree type, tsubst_flags_t complain)
clone_function_decl (r, /*update_method_vec_p=*/0);
}
else if (IDENTIFIER_OPNAME_P (DECL_NAME (r)))
- grok_op_properties (r, DECL_FRIEND_P (r),
- (complain & tf_error) != 0);
+ grok_op_properties (r, (complain & tf_error) != 0);
if (DECL_FRIEND_P (t) && DECL_FRIEND_CONTEXT (t))
SET_DECL_FRIEND_CONTEXT (r,
@@ -6485,6 +6480,8 @@ tsubst_arg_types (tree arg_types,
{
tree remaining_arg_types;
tree type;
+ tree default_arg;
+ tree result = NULL_TREE;
if (!arg_types || arg_types == void_list_node)
return arg_types;
@@ -6512,12 +6509,25 @@ tsubst_arg_types (tree arg_types,
top-level qualifiers as required. */
type = TYPE_MAIN_VARIANT (type_decays_to (type));
- /* Note that we do not substitute into default arguments here. The
- standard mandates that they be instantiated only when needed,
- which is done in build_over_call. */
- return hash_tree_cons (TREE_PURPOSE (arg_types), type,
- remaining_arg_types);
-
+ /* We do not substitute into default arguments here. The standard
+ mandates that they be instantiated only when needed, which is
+ done in build_over_call. */
+ default_arg = TREE_PURPOSE (arg_types);
+
+ if (default_arg && TREE_CODE (default_arg) == DEFAULT_ARG)
+ {
+ /* We've instantiated a template before its default arguments
+ have been parsed. This can happen for a nested template
+ class, and is not an error unless we require the default
+ argument in a call of this function. */
+ result = tree_cons (default_arg, type, remaining_arg_types);
+ TREE_CHAIN (default_arg) = tree_cons (result, NULL_TREE,
+ TREE_CHAIN (default_arg));
+ }
+ else
+ result = hash_tree_cons (default_arg, type, remaining_arg_types);
+
+ return result;
}
/* Substitute into a FUNCTION_TYPE or METHOD_TYPE. This routine does
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 0c9c6c4630b..e0f6868a6d7 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -265,10 +265,12 @@ type_after_usual_arithmetic_conversions (tree t1, tree t2)
/* FIXME: Attributes. */
my_friendly_assert (ARITHMETIC_TYPE_P (t1)
|| TREE_CODE (t1) == COMPLEX_TYPE
+ || TREE_CODE (t1) == VECTOR_TYPE
|| TREE_CODE (t1) == ENUMERAL_TYPE,
19990725);
my_friendly_assert (ARITHMETIC_TYPE_P (t2)
|| TREE_CODE (t2) == COMPLEX_TYPE
+ || TREE_CODE (t2) == VECTOR_TYPE
|| TREE_CODE (t2) == ENUMERAL_TYPE,
19990725);
@@ -296,6 +298,16 @@ type_after_usual_arithmetic_conversions (tree t1, tree t2)
attributes);
}
+ if (code1 == VECTOR_TYPE)
+ {
+ /* When we get here we should have two vectors of the same size.
+ Just prefer the unsigned one if present. */
+ if (TREE_UNSIGNED (t1))
+ return build_type_attribute_variant (t1, attributes);
+ else
+ return build_type_attribute_variant (t2, attributes);
+ }
+
/* If only one is real, use it as the result. */
if (code1 == REAL_TYPE && code2 != REAL_TYPE)
return build_type_attribute_variant (t1, attributes);
@@ -745,9 +757,9 @@ common_type (tree t1, tree t2)
code2 = TREE_CODE (t2);
if ((ARITHMETIC_TYPE_P (t1) || code1 == ENUMERAL_TYPE
- || code1 == COMPLEX_TYPE)
+ || code1 == COMPLEX_TYPE || code1 == VECTOR_TYPE)
&& (ARITHMETIC_TYPE_P (t2) || code2 == ENUMERAL_TYPE
- || code2 == COMPLEX_TYPE))
+ || code2 == COMPLEX_TYPE || code2 == VECTOR_TYPE))
return type_after_usual_arithmetic_conversions (t1, t2);
else if ((TYPE_PTR_P (t1) && TYPE_PTR_P (t2))
@@ -2878,9 +2890,9 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
case ROUND_DIV_EXPR:
case EXACT_DIV_EXPR:
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE
- || code0 == COMPLEX_TYPE)
+ || code0 == COMPLEX_TYPE || code0 == VECTOR_TYPE)
&& (code1 == INTEGER_TYPE || code1 == REAL_TYPE
- || code1 == COMPLEX_TYPE))
+ || code1 == COMPLEX_TYPE || code1 == VECTOR_TYPE))
{
if (TREE_CODE (op1) == INTEGER_CST && integer_zerop (op1))
warning ("division by zero in `%E / 0'", op0);
@@ -2907,7 +2919,8 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
case BIT_AND_EXPR:
case BIT_IOR_EXPR:
case BIT_XOR_EXPR:
- if (code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
+ if ((code0 == INTEGER_TYPE && code1 == INTEGER_TYPE)
+ || (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE))
shorten = -1;
break;
@@ -3158,12 +3171,17 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
break;
}
- if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE || code0 == COMPLEX_TYPE)
- &&
- (code1 == INTEGER_TYPE || code1 == REAL_TYPE || code1 == COMPLEX_TYPE))
+ if (((code0 == INTEGER_TYPE || code0 == REAL_TYPE || code0 == COMPLEX_TYPE)
+ &&
+ (code1 == INTEGER_TYPE || code1 == REAL_TYPE || code1 == COMPLEX_TYPE))
+ || (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE))
{
int none_complex = (code0 != COMPLEX_TYPE && code1 != COMPLEX_TYPE);
+ if (code0 == VECTOR_TYPE && code1 == VECTOR_TYPE
+ && !tree_int_cst_equal (TYPE_SIZE (type0), TYPE_SIZE (type1)))
+ error ("can't convert between vector values of different size");
+
if (shorten || common || short_compare)
result_type = common_type (type0, type1);
@@ -6314,11 +6332,6 @@ casts_away_constness_r (tree *t1, tree *t2)
and pointers to members (conv.qual), the "member" aspect of a
pointer to member level is ignored when determining if a const
cv-qualifier has been cast away. */
- if (TYPE_PTRMEM_P (*t1))
- *t1 = build_pointer_type (TYPE_PTRMEM_POINTED_TO_TYPE (*t1));
- if (TYPE_PTRMEM_P (*t2))
- *t2 = build_pointer_type (TYPE_PTRMEM_POINTED_TO_TYPE (*t2));
-
/* [expr.const.cast]
For two pointer types:
@@ -6336,9 +6349,8 @@ casts_away_constness_r (tree *t1, tree *t2)
to
Tcv2,(M-K+1) * cv2,(M-K+2) * ... cv2,M *. */
-
- if (TREE_CODE (*t1) != POINTER_TYPE
- || TREE_CODE (*t2) != POINTER_TYPE)
+ if ((!TYPE_PTR_P (*t1) && !TYPE_PTRMEM_P (*t1))
+ || (!TYPE_PTR_P (*t2) && !TYPE_PTRMEM_P (*t2)))
{
*t1 = cp_build_qualified_type (void_type_node,
cp_type_quals (*t1));
@@ -6349,8 +6361,16 @@ casts_away_constness_r (tree *t1, tree *t2)
quals1 = cp_type_quals (*t1);
quals2 = cp_type_quals (*t2);
- *t1 = TREE_TYPE (*t1);
- *t2 = TREE_TYPE (*t2);
+
+ if (TYPE_PTRMEM_P (*t1))
+ *t1 = TYPE_PTRMEM_POINTED_TO_TYPE (*t1);
+ else
+ *t1 = TREE_TYPE (*t1);
+ if (TYPE_PTRMEM_P (*t2))
+ *t2 = TYPE_PTRMEM_POINTED_TO_TYPE (*t2);
+ else
+ *t2 = TREE_TYPE (*t2);
+
casts_away_constness_r (t1, t2);
*t1 = build_pointer_type (*t1);
*t2 = build_pointer_type (*t2);
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index cfa3be5d1a0..610ce994e95 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -3543,11 +3543,11 @@ failure in form of a miscompilation of the stage1 compiler by the Sun
compiler. This is Sun bug 4974440. This is fixed with patch 112760-07.
GCC 3.4 changed the default debugging format from STABS to DWARF-2 for
-32-bit code on Solaris 7 and later. If you are using the Sun
-assembler, this change apparently runs afoul of Sun bug 4910101, for
-which (as of 2004-05-23) there is no fix. A symptom of the problem is
-that you cannot compile C++ programs like @command{groff} 1.19.1
-without getting messages similar to the following:
+32-bit code on Solaris 7 and later. If you use the Sun assembler, this
+change apparently runs afoul of Sun bug 4910101 (which is referenced as
+a x86-only problem by Sun, probably because they do not use DWARF-2).
+A symptom of the problem is that you cannot compile C++ programs like
+@command{groff} 1.19.1 without getting messages similar to the following:
@smallexample
ld: warning: relocation error: R_SPARC_UA32: @dots{}
diff --git a/gcc/fixinc/fixincl.x b/gcc/fixinc/fixincl.x
index 658e5a1af88..e943e4c6a06 100644
--- a/gcc/fixinc/fixincl.x
+++ b/gcc/fixinc/fixincl.x
@@ -2,11 +2,11 @@
*
* DO NOT EDIT THIS FILE (fixincl.x)
*
- * It has been AutoGen-ed Friday May 6, 2005 at 09:27:07 AM PDT
+ * It has been AutoGen-ed Saturday May 21, 2005 at 05:04:48 PM CEST
* From the definitions inclhack.def
* and the template file fixincl
*/
-/* DO NOT CVS-MERGE THIS FILE, EITHER Fri May 6 09:27:07 PDT 2005
+/* DO NOT CVS-MERGE THIS FILE, EITHER Sat May 21 17:04:48 CEST 2005
*
* You must regenerate it. Use the ./genfixes script.
*
@@ -15,7 +15,7 @@
* certain ANSI-incompatible system header files which are fixed to work
* correctly with ANSI C and placed in a directory that GNU C will search.
*
- * This file contains 178 fixup descriptions.
+ * This file contains 188 fixup descriptions.
*
* See README for more information.
*
@@ -1927,7 +1927,9 @@ tSCC zGnu_TypesList[] =
/*
* Machine/OS name selection pattern
*/
-#define apzGnu_TypesMachs (const char**)NULL
+tSCC* apzGnu_TypesMachs[] = {
+ "*-*-solaris2.1[0-9]*",
+ (const char*)NULL };
/*
* content selection pattern - do fix if pattern found
@@ -4521,6 +4523,472 @@ static const char* apzSco_UtimePatch[] = {
/* * * * * * * * * * * * * * * * * * * * * * * * * *
*
+ * Description of Solaris_Math_1 fix
+ */
+tSCC zSolaris_Math_1Name[] =
+ "solaris_math_1";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_1List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_1Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_1Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_1Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_1_TEST_CT 2
+static tTestDesc aSolaris_Math_1Tests[] = {
+ { TT_NEGREP, zSolaris_Math_1Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_1Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_1
+ */
+static const char* apzSolaris_Math_1Patch[] = {
+ "format",
+ "#define\tHUGE_VA%1\t(__builtin_huge_va%2())",
+ "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_2 fix
+ */
+tSCC zSolaris_Math_2Name[] =
+ "solaris_math_2";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_2List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_2Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_2Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_2Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_2_TEST_CT 2
+static tTestDesc aSolaris_Math_2Tests[] = {
+ { TT_NEGREP, zSolaris_Math_2Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_2Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_2
+ */
+static const char* apzSolaris_Math_2Patch[] = {
+ "format",
+ "#define\tINFINITY\t(__builtin_inff())",
+ "^#define[ \t]+INFINITY[ \t]+__builtin_infinity",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_3 fix
+ */
+tSCC zSolaris_Math_3Name[] =
+ "solaris_math_3";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_3List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_3Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_3Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_3Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_3_TEST_CT 2
+static tTestDesc aSolaris_Math_3Tests[] = {
+ { TT_NEGREP, zSolaris_Math_3Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_3Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_3
+ */
+static const char* apzSolaris_Math_3Patch[] = {
+ "format",
+ "#define\tNAN\t\t(__builtin_nanf(\"\"))",
+ "^#define[ \t]+NAN[ \t]+__builtin_nan",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_4 fix
+ */
+tSCC zSolaris_Math_4Name[] =
+ "solaris_math_4";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_4List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_4Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_4Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_4Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_4_TEST_CT 2
+static tTestDesc aSolaris_Math_4Tests[] = {
+ { TT_NEGREP, zSolaris_Math_4Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_4Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_4
+ */
+static const char* apzSolaris_Math_4Patch[] = {
+ "format",
+ "#define\tfpclassify(x) \\\n\
+ __extension__ ({ __typeof(x) __x_fp = (x); \\\n\
+\t\t isnan(__x_fp) \\\n\
+\t\t ? FP_NAN \\\n\
+\t\t : isinf(__x_fp) \\\n\
+\t\t ? FP_INFINITE \\\n\
+\t\t : isnormal(__x_fp) \\\n\
+\t\t\t ? FP_NORMAL \\\n\
+\t\t\t : __x_fp == 0.0 \\\n\
+\t\t\t ? FP_ZERO \\\n\
+\t\t\t : FP_SUBNORMAL; })",
+ "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_5 fix
+ */
+tSCC zSolaris_Math_5Name[] =
+ "solaris_math_5";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_5List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_5Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_5Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_5Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_5_TEST_CT 2
+static tTestDesc aSolaris_Math_5Tests[] = {
+ { TT_NEGREP, zSolaris_Math_5Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_5Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_5
+ */
+static const char* apzSolaris_Math_5Patch[] = {
+ "format",
+ "#define\tisfinite(x) \\\n\
+ __extension__ ({ __typeof (x) __x_f = (x); \\\n\
+\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })",
+ "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_6 fix
+ */
+tSCC zSolaris_Math_6Name[] =
+ "solaris_math_6";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_6List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_6Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_6Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_6Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_6_TEST_CT 2
+static tTestDesc aSolaris_Math_6Tests[] = {
+ { TT_NEGREP, zSolaris_Math_6Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_6Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_6
+ */
+static const char* apzSolaris_Math_6Patch[] = {
+ "format",
+ "#define\tisinf(x) \\\n\
+ __extension__ ({ __typeof (x) __x_i = (x); \\\n\
+\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })",
+ "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_6_1 fix
+ */
+tSCC zSolaris_Math_6_1Name[] =
+ "solaris_math_6_1";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_6_1List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_6_1Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_6_1Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_6_1Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_6_1_TEST_CT 2
+static tTestDesc aSolaris_Math_6_1Tests[] = {
+ { TT_NEGREP, zSolaris_Math_6_1Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_6_1Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_6_1
+ */
+static const char* apzSolaris_Math_6_1Patch[] = {
+ "format",
+ "#define\tisnan(x) \\\n\
+ __extension__ ({ __typeof (x) __x_a = (x); \\\n\
+\t\t __builtin_expect(__x_a != __x_a, 0); })",
+ "^#define[ \t]+isnan\\(x\\)[ \t]+__builtin_isnan\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_7 fix
+ */
+tSCC zSolaris_Math_7Name[] =
+ "solaris_math_7";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_7List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_7Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_7Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_7Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_7_TEST_CT 2
+static tTestDesc aSolaris_Math_7Tests[] = {
+ { TT_NEGREP, zSolaris_Math_7Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_7Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_7
+ */
+static const char* apzSolaris_Math_7Patch[] = {
+ "format",
+ "#define\tisnormal(x) \\\n\
+ __extension__ ({ __typeof(x) __x_n = (x); \\\n\
+\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n\
+\t\t __builtin_expect(isfinite(__x_n) \\\n\
+\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n\
+\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n\
+\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n\
+\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n\
+\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })",
+ "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_8 fix
+ */
+tSCC zSolaris_Math_8Name[] =
+ "solaris_math_8";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_8List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_8Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_8Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_8Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_8_TEST_CT 2
+static tTestDesc aSolaris_Math_8Tests[] = {
+ { TT_NEGREP, zSolaris_Math_8Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_8Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_8
+ */
+static const char* apzSolaris_Math_8Patch[] = {
+ "format",
+ "#ifdef __sparc__\n\
+#undef\tsignbit\n\
+#define\tsignbit(x) \\\n\
+ (sizeof(x) == sizeof(float) \\\n\
+ ? ({ union { float f; unsigned int i[1]; } __s; \\\n\
+\t__s.f = (x); __s.i[0] >> 31; }) \\\n\
+ : sizeof(x) == sizeof(long double) \\\n\
+ ? ({ union { long double f; unsigned int i[4]; } __s; \\\n\
+\t __s.f = (x); __s.i[0] >> 31; }) \\\n\
+ : ({ union { double f; unsigned int i[2]; } __s; \\\n\
+\t __s.f = (x); __s.i[0] >> 31; }))\n\
+#endif /* __sparc__ */\n",
+ "^#undef[ \t]signbit\n\
+^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
+ * Description of Solaris_Math_9 fix
+ */
+tSCC zSolaris_Math_9Name[] =
+ "solaris_math_9";
+
+/*
+ * File name selection pattern
+ */
+tSCC zSolaris_Math_9List[] =
+ "|iso/math_c99.h|";
+/*
+ * Machine/OS name selection pattern
+ */
+#define apzSolaris_Math_9Machs (const char**)NULL
+
+/*
+ * content selection pattern - do fix if pattern found
+ */
+tSCC zSolaris_Math_9Select0[] =
+ "@\\(#\\)math_c99.h[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Math_9Bypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_MATH_9_TEST_CT 2
+static tTestDesc aSolaris_Math_9Tests[] = {
+ { TT_NEGREP, zSolaris_Math_9Bypass0, (regex_t*)NULL },
+ { TT_EGREP, zSolaris_Math_9Select0, (regex_t*)NULL }, };
+
+/*
+ * Fix Command Arguments for Solaris_Math_9
+ */
+static const char* apzSolaris_Math_9Patch[] = {
+ "format",
+ "#define\t%1(x, y)%2__builtin_%1(x, y)",
+ "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)",
+ (char*)NULL };
+
+/* * * * * * * * * * * * * * * * * * * * * * * * * *
+ *
* Description of Solaris_Mutex_Init_1 fix
*/
tSCC zSolaris_Mutex_Init_1Name[] =
@@ -4653,8 +5121,15 @@ tSCC zSolaris_Stdio_TagList[] =
tSCC zSolaris_Stdio_TagSelect0[] =
"__cplusplus < 54321L";
-#define SOLARIS_STDIO_TAG_TEST_CT 1
+/*
+ * content bypass pattern - skip fix if pattern found
+ */
+tSCC zSolaris_Stdio_TagBypass0[] =
+ "__GNUC__";
+
+#define SOLARIS_STDIO_TAG_TEST_CT 2
static tTestDesc aSolaris_Stdio_TagTests[] = {
+ { TT_NEGREP, zSolaris_Stdio_TagBypass0, (regex_t*)NULL },
{ TT_EGREP, zSolaris_Stdio_TagSelect0, (regex_t*)NULL }, };
/*
@@ -4804,7 +5279,9 @@ tSCC zStdio_Stdarg_HList[] =
/*
* Machine/OS name selection pattern
*/
-#define apzStdio_Stdarg_HMachs (const char**)NULL
+tSCC* apzStdio_Stdarg_HMachs[] = {
+ "*-*-solaris2.1[0-9]*",
+ (const char*)NULL };
/*
* content bypass pattern - skip fix if pattern found
@@ -4840,7 +5317,9 @@ tSCC zStdio_Va_ListList[] =
/*
* Machine/OS name selection pattern
*/
-#define apzStdio_Va_ListMachs (const char**)NULL
+tSCC* apzStdio_Va_ListMachs[] = {
+ "*-*-solaris2.1[0-9]*",
+ (const char*)NULL };
/*
* content bypass pattern - skip fix if pattern found
@@ -7059,9 +7538,9 @@ static const char* apzX11_SprintfPatch[] = {
*
* List of all fixes
*/
-#define REGEX_COUNT 200
+#define REGEX_COUNT 221
#define MACH_LIST_SIZE_LIMIT 261
-#define FIX_COUNT 178
+#define FIX_COUNT 188
/*
* Enumerate the fixes
@@ -7179,6 +7658,16 @@ typedef enum {
SCO_REGSET_FIXIDX,
SCO_STATIC_FUNC_FIXIDX,
SCO_UTIME_FIXIDX,
+ SOLARIS_MATH_1_FIXIDX,
+ SOLARIS_MATH_2_FIXIDX,
+ SOLARIS_MATH_3_FIXIDX,
+ SOLARIS_MATH_4_FIXIDX,
+ SOLARIS_MATH_5_FIXIDX,
+ SOLARIS_MATH_6_FIXIDX,
+ SOLARIS_MATH_6_1_FIXIDX,
+ SOLARIS_MATH_7_FIXIDX,
+ SOLARIS_MATH_8_FIXIDX,
+ SOLARIS_MATH_9_FIXIDX,
SOLARIS_MUTEX_INIT_1_FIXIDX,
SOLARIS_MUTEX_INIT_2_FIXIDX,
SOLARIS_SOCKET_FIXIDX,
@@ -7475,7 +7964,7 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
{ zGnu_TypesName, zGnu_TypesList,
apzGnu_TypesMachs,
- GNU_TYPES_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ GNU_TYPES_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE,
aGnu_TypesTests, apzGnu_TypesPatch, 0 },
{ zHp_InlineName, zHp_InlineList,
@@ -7808,6 +8297,56 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
SCO_UTIME_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
aSco_UtimeTests, apzSco_UtimePatch, 0 },
+ { zSolaris_Math_1Name, zSolaris_Math_1List,
+ apzSolaris_Math_1Machs,
+ SOLARIS_MATH_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_1Tests, apzSolaris_Math_1Patch, 0 },
+
+ { zSolaris_Math_2Name, zSolaris_Math_2List,
+ apzSolaris_Math_2Machs,
+ SOLARIS_MATH_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_2Tests, apzSolaris_Math_2Patch, 0 },
+
+ { zSolaris_Math_3Name, zSolaris_Math_3List,
+ apzSolaris_Math_3Machs,
+ SOLARIS_MATH_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_3Tests, apzSolaris_Math_3Patch, 0 },
+
+ { zSolaris_Math_4Name, zSolaris_Math_4List,
+ apzSolaris_Math_4Machs,
+ SOLARIS_MATH_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_4Tests, apzSolaris_Math_4Patch, 0 },
+
+ { zSolaris_Math_5Name, zSolaris_Math_5List,
+ apzSolaris_Math_5Machs,
+ SOLARIS_MATH_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_5Tests, apzSolaris_Math_5Patch, 0 },
+
+ { zSolaris_Math_6Name, zSolaris_Math_6List,
+ apzSolaris_Math_6Machs,
+ SOLARIS_MATH_6_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_6Tests, apzSolaris_Math_6Patch, 0 },
+
+ { zSolaris_Math_6_1Name, zSolaris_Math_6_1List,
+ apzSolaris_Math_6_1Machs,
+ SOLARIS_MATH_6_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_6_1Tests, apzSolaris_Math_6_1Patch, 0 },
+
+ { zSolaris_Math_7Name, zSolaris_Math_7List,
+ apzSolaris_Math_7Machs,
+ SOLARIS_MATH_7_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_7Tests, apzSolaris_Math_7Patch, 0 },
+
+ { zSolaris_Math_8Name, zSolaris_Math_8List,
+ apzSolaris_Math_8Machs,
+ SOLARIS_MATH_8_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_8Tests, apzSolaris_Math_8Patch, 0 },
+
+ { zSolaris_Math_9Name, zSolaris_Math_9List,
+ apzSolaris_Math_9Machs,
+ SOLARIS_MATH_9_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ aSolaris_Math_9Tests, apzSolaris_Math_9Patch, 0 },
+
{ zSolaris_Mutex_Init_1Name, zSolaris_Mutex_Init_1List,
apzSolaris_Mutex_Init_1Machs,
SOLARIS_MUTEX_INIT_1_TEST_CT, FD_MACH_ONLY,
@@ -7845,12 +8384,12 @@ tFixDesc fixDescList[ FIX_COUNT ] = {
{ zStdio_Stdarg_HName, zStdio_Stdarg_HList,
apzStdio_Stdarg_HMachs,
- STDIO_STDARG_H_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+ STDIO_STDARG_H_TEST_CT, FD_MACH_IFNOT | FD_SUBROUTINE,
aStdio_Stdarg_HTests, apzStdio_Stdarg_HPatch, 0 },
{ zStdio_Va_ListName, zStdio_Va_ListList,
apzStdio_Va_ListMachs,
- STDIO_VA_LIST_TEST_CT, FD_MACH_ONLY,
+ STDIO_VA_LIST_TEST_CT, FD_MACH_IFNOT,
aStdio_Va_ListTests, apzStdio_Va_ListPatch, 0 },
{ zStrict_Ansi_NotName, zStrict_Ansi_NotList,
diff --git a/gcc/fixinc/inclhack.def b/gcc/fixinc/inclhack.def
index cd85caed836..bc0a6ff553f 100644
--- a/gcc/fixinc/inclhack.def
+++ b/gcc/fixinc/inclhack.def
@@ -1144,6 +1144,9 @@ fix = {
bypass = '_GCC_(PTRDIFF|SIZE|WCHAR)_T';
select = "^[ \t]*typedef[ \t]+.*[ \t](ptrdiff|size|wchar)_t;";
c_fix = gnu_type;
+ /* The Solaris 10 headers already define these types correctly. */
+ mach = '*-*-solaris2.1[0-9]*';
+ not_machine = true;
test_text = "typedef long int ptrdiff_t; /* long int */\n"
"typedef uint_t size_t; /* uint_t */\n"
@@ -2528,6 +2531,200 @@ fix = {
test_text = "extern int utime(const char *, struct utimbuf *);";
};
+/*
+ * Sun Solaris 10 defines several C99 math macros in terms of
+ * builtins specific to the Studio compiler, in particular not
+ * compatible with the GNU compiler.
+ */
+fix = {
+ hackname = solaris_math_1;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tHUGE_VA%1\t(__builtin_huge_va%2())";
+ c_fix_arg = "^#define[ \t]+HUGE_VA([LF]+)[ \t]+__builtin_huge_va([lf]+)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef HUGE_VAL\n"
+ "#define HUGE_VAL __builtin_huge_val\n"
+ "#undef HUGE_VALF\n"
+ "#define HUGE_VALF __builtin_huge_valf\n"
+ "#undef HUGE_VALL\n"
+ "#define HUGE_VALL __builtin_huge_vall";
+};
+
+fix = {
+ hackname = solaris_math_2;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tINFINITY\t(__builtin_inff())";
+ c_fix_arg = "^#define[ \t]+INFINITY[ \t]+__builtin_infinity";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef INFINITY\n"
+ "#define INFINITY __builtin_infinity";
+};
+
+fix = {
+ hackname = solaris_math_3;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tNAN\t\t(__builtin_nanf(\"\"))";
+ c_fix_arg = "^#define[ \t]+NAN[ \t]+__builtin_nan";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef NAN\n"
+ "#define NAN __builtin_nan";
+};
+
+fix = {
+ hackname = solaris_math_4;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tfpclassify(x) \\\n"
+ " __extension__ ({ __typeof(x) __x_fp = (x); \\\n"
+ "\t\t isnan(__x_fp) \\\n"
+ "\t\t ? FP_NAN \\\n"
+ "\t\t : isinf(__x_fp) \\\n"
+ "\t\t ? FP_INFINITE \\\n"
+ "\t\t : isnormal(__x_fp) \\\n"
+ "\t\t\t ? FP_NORMAL \\\n"
+ "\t\t\t : __x_fp == 0.0 \\\n"
+ "\t\t\t ? FP_ZERO \\\n"
+ "\t\t\t : FP_SUBNORMAL; })";
+ c_fix_arg = "^#define[ \t]+fpclassify\\(x\\)[ \t]+__builtin_fpclassify\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef fpclassify\n"
+ "#define fpclassify(x) __builtin_fpclassify(x)";
+};
+
+fix = {
+ hackname = solaris_math_5;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisfinite(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_f = (x); \\\n"
+ "\t\t __builtin_expect(!isnan(__x_f - __x_f), 1); })";
+ c_fix_arg = "^#define[ \t]+isfinite\\(x\\)[ \t]+__builtin_isfinite\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isfinite\n"
+ "#define isfinite(x) __builtin_isfinite(x)";
+};
+
+fix = {
+ hackname = solaris_math_6;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisinf(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_i = (x); \\\n"
+ "\t\t __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })";
+ c_fix_arg = "^#define[ \t]+isinf\\(x\\)[ \t]+__builtin_isinf\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isinf\n"
+ "#define isinf(x) __builtin_isinf(x)";
+};
+
+fix = {
+ hackname = solaris_math_6_1;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisnan(x) \\\n"
+ " __extension__ ({ __typeof (x) __x_a = (x); \\\n"
+ "\t\t __builtin_expect(__x_a != __x_a, 0); })";
+ c_fix_arg = "^#define[ \t]+isnan\\(x\\)[ \t]+__builtin_isnan\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isnan\n"
+ "#define isnan(x) __builtin_isnan(x)";
+};
+
+fix = {
+ hackname = solaris_math_7;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\tisnormal(x) \\\n"
+ " __extension__ ({ __typeof(x) __x_n = (x); \\\n"
+ "\t\t if (__x_n < 0.0) __x_n = -__x_n; \\\n"
+ "\t\t __builtin_expect(isfinite(__x_n) \\\n"
+ "\t\t\t\t && (sizeof(__x_n) == sizeof(float) \\\n"
+ "\t\t\t\t\t ? __x_n >= __FLT_MIN__ \\\n"
+ "\t\t\t\t\t : sizeof(__x_n) == sizeof(long double) \\\n"
+ "\t\t\t\t\t ? __x_n >= __LDBL_MIN__ \\\n"
+ "\t\t\t\t\t : __x_n >= __DBL_MIN__), 1); })";
+ c_fix_arg = "^#define[ \t]+isnormal\\(x\\)[ \t]+__builtin_isnormal\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isnormal\n"
+ "#define isnormal(x) __builtin_isnormal(x)";
+};
+
+fix = {
+ hackname = solaris_math_8;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#ifdef __sparc__\n"
+ "#undef\tsignbit\n"
+ "#define\tsignbit(x) \\\n"
+ " (sizeof(x) == sizeof(float) \\\n"
+ " ? ({ union { float f; unsigned int i[1]; } __s; \\\n"
+ "\t__s.f = (x); __s.i[0] >> 31; }) \\\n"
+ " : sizeof(x) == sizeof(long double) \\\n"
+ " ? ({ union { long double f; unsigned int i[4]; } __s; \\\n"
+ "\t __s.f = (x); __s.i[0] >> 31; }) \\\n"
+ " : ({ union { double f; unsigned int i[2]; } __s; \\\n"
+ "\t __s.f = (x); __s.i[0] >> 31; }))\n"
+ "#endif /* __sparc__ */\n";
+ c_fix_arg = "^#undef[ \t]signbit\n"
+ "^#define[ \t]+signbit\\(x\\)[ \t]+__builtin_signbit\\(x\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef signbit\n"
+ "#define signbit(x) __builtin_signbit(x)";
+};
+
+fix = {
+ hackname = solaris_math_9;
+ select = '@\(#\)math_c99.h' "[ \t]+1.[0-9]+[ \t]+[0-9/]+ SMI";
+ bypass = "__GNUC__";
+ files = iso/math_c99.h;
+ c_fix = format;
+ c_fix_arg = "#define\t%1(x, y)%2__builtin_%1(x, y)";
+ c_fix_arg = "^#define[ \t]+([a-z]+)\\(x, y\\)([ \t]+)\\(\\(x\\) __builtin_[a-z]+\\(y\\)\\)";
+ test_text =
+ '#ident "@(#)math_c99.h 1.9 04/11/01 SMI"'"\n"
+ "#undef isgreater\n"
+ "#define isgreater(x, y) ((x) __builtin_isgreater(y))\n"
+ "#undef isgreaterequal\n"
+ "#define isgreaterequal(x, y) ((x) __builtin_isgreaterequal(y))\n"
+ "#undef isless\n"
+ "#define isless(x, y) ((x) __builtin_isless(y))\n"
+ "#undef islessequal\n"
+ "#define islessequal(x, y) ((x) __builtin_islessequal(y))\n"
+ "#undef islessgreater\n"
+ "#define islessgreater(x, y) ((x) __builtin_islessgreater(y))\n"
+ "#undef isunordered\n"
+ "#define isunordered(x, y) ((x) __builtin_isunordered(y))";
+};
/*
* Sun Solaris 2.5.1, 2.6 defines PTHREAD_{MUTEX|COND}_INITIALIZER
@@ -2607,6 +2804,9 @@ fix = {
files = stdio_tag.h;
select = '__cplusplus < 54321L';
+ /* In Solaris 10, the code in stdio_tag.h is conditionalized on
+ "!defined(__GNUC__)" so we no longer need to fix it. */
+ bypass = '__GNUC__';
sed = 's/defined(__cplusplus) && (__cplusplus < 54321L)/0/';
test_text = "#if\tdefined(__cplusplus) && (__cplusplus < 54321L)";
@@ -2672,6 +2872,12 @@ fix = {
hackname = stdio_stdarg_h;
files = stdio.h;
bypass = "include.*(stdarg\.h|machine/ansi\.h)";
+ /*
+ * On Solaris 10, this fix is unnecessary; <stdio.h> includes
+ * <iso/stdio_iso.h>, which includes <sys/va_list.h>.
+ */
+ mach = '*-*-solaris2.1[0-9]*';
+ not_machine = true;
c_fix = wrap;
@@ -2698,6 +2904,13 @@ fix = {
files = internal/stdio_core.h;
files = internal/wchar_core.h;
bypass = '__gnuc_va_list|_BSD_VA_LIST_|__DJ_va_list|_G_va_list';
+ /*
+ * On Solaris 10, the definition in
+ * <stdio.h> is guarded appropriately by the _XPG4 feature macro;
+ * there is therefore no need for this fix there.
+ */
+ mach = '*-*-solaris2.1[0-9]*';
+ not_machine = true;
/*
* Use __gnuc_va_list in arg types in place of va_list.
diff --git a/gcc/fixinc/tests/base/iso/math_c99.h b/gcc/fixinc/tests/base/iso/math_c99.h
new file mode 100644
index 00000000000..e8253abf2f6
--- /dev/null
+++ b/gcc/fixinc/tests/base/iso/math_c99.h
@@ -0,0 +1,128 @@
+/* DO NOT EDIT THIS FILE.
+
+ It has been auto-edited by fixincludes from:
+
+ "fixinc/tests/inc/iso/math_c99.h"
+
+ This had to be done to correct non-standard usages in the
+ original, manufacturer supplied header file. */
+
+
+
+#if defined( SOLARIS_MATH_1_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef HUGE_VAL
+#define HUGE_VAL (__builtin_huge_val())
+#undef HUGE_VALF
+#define HUGE_VALF (__builtin_huge_valf())
+#undef HUGE_VALL
+#define HUGE_VALL (__builtin_huge_vall())
+#endif /* SOLARIS_MATH_1_CHECK */
+
+
+#if defined( SOLARIS_MATH_2_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef INFINITY
+#define INFINITY (__builtin_inff())
+#endif /* SOLARIS_MATH_2_CHECK */
+
+
+#if defined( SOLARIS_MATH_3_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef NAN
+#define NAN (__builtin_nanf(""))
+#endif /* SOLARIS_MATH_3_CHECK */
+
+
+#if defined( SOLARIS_MATH_4_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef fpclassify
+#define fpclassify(x) \
+ __extension__ ({ __typeof(x) __x_fp = (x); \
+ isnan(__x_fp) \
+ ? FP_NAN \
+ : isinf(__x_fp) \
+ ? FP_INFINITE \
+ : isnormal(__x_fp) \
+ ? FP_NORMAL \
+ : __x_fp == 0.0 \
+ ? FP_ZERO \
+ : FP_SUBNORMAL; })
+#endif /* SOLARIS_MATH_4_CHECK */
+
+
+#if defined( SOLARIS_MATH_5_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isfinite
+#define isfinite(x) \
+ __extension__ ({ __typeof (x) __x_f = (x); \
+ __builtin_expect(!isnan(__x_f - __x_f), 1); })
+#endif /* SOLARIS_MATH_5_CHECK */
+
+
+#if defined( SOLARIS_MATH_6_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isinf
+#define isinf(x) \
+ __extension__ ({ __typeof (x) __x_i = (x); \
+ __builtin_expect(!isnan(__x_i) && !isfinite(__x_i), 0); })
+#endif /* SOLARIS_MATH_6_CHECK */
+
+
+#if defined( SOLARIS_MATH_6_1_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isnan
+#define isnan(x) \
+ __extension__ ({ __typeof (x) __x_a = (x); \
+ __builtin_expect(__x_a != __x_a, 0); })
+#endif /* SOLARIS_MATH_6_1_CHECK */
+
+
+#if defined( SOLARIS_MATH_7_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isnormal
+#define isnormal(x) \
+ __extension__ ({ __typeof(x) __x_n = (x); \
+ if (__x_n < 0.0) __x_n = -__x_n; \
+ __builtin_expect(isfinite(__x_n) \
+ && (sizeof(__x_n) == sizeof(float) \
+ ? __x_n >= __FLT_MIN__ \
+ : sizeof(__x_n) == sizeof(long double) \
+ ? __x_n >= __LDBL_MIN__ \
+ : __x_n >= __DBL_MIN__), 1); })
+#endif /* SOLARIS_MATH_7_CHECK */
+
+
+#if defined( SOLARIS_MATH_8_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#ifdef __sparc__
+#undef signbit
+#define signbit(x) \
+ (sizeof(x) == sizeof(float) \
+ ? ({ union { float f; unsigned int i[1]; } __s; \
+ __s.f = (x); __s.i[0] >> 31; }) \
+ : sizeof(x) == sizeof(long double) \
+ ? ({ union { long double f; unsigned int i[4]; } __s; \
+ __s.f = (x); __s.i[0] >> 31; }) \
+ : ({ union { double f; unsigned int i[2]; } __s; \
+ __s.f = (x); __s.i[0] >> 31; }))
+#endif /* __sparc__ */
+
+#endif /* SOLARIS_MATH_8_CHECK */
+
+
+#if defined( SOLARIS_MATH_9_CHECK )
+#ident "@(#)math_c99.h 1.9 04/11/01 SMI"
+#undef isgreater
+#define isgreater(x, y) __builtin_isgreater(x, y)
+#undef isgreaterequal
+#define isgreaterequal(x, y) __builtin_isgreaterequal(x, y)
+#undef isless
+#define isless(x, y) __builtin_isless(x, y)
+#undef islessequal
+#define islessequal(x, y) __builtin_islessequal(x, y)
+#undef islessgreater
+#define islessgreater(x, y) __builtin_islessgreater(x, y)
+#undef isunordered
+#define isunordered(x, y) __builtin_isunordered(x, y)
+#endif /* SOLARIS_MATH_9_CHECK */
diff --git a/gcc/gcse.c b/gcc/gcse.c
index d06a224cb5d..d785c7e3cae 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -6445,7 +6445,7 @@ hoist_code (void)
insn_inserted_p = 0;
/* These tests should be the same as the tests above. */
- if (TEST_BIT (hoist_vbeout[bb->index], i))
+ if (TEST_BIT (hoist_exprs[bb->index], i))
{
/* We've found a potentially hoistable expression, now
we look at every block BB dominates to see if it
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index baf56b60a9a..b4e02982f52 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,57 @@
+2005-07-21 Richard Sandiford <richard@codesourcery.com>
+
+ PR rtl-optimization/22167
+ * g++.dg/opt/pr22167.C: New test.
+
+2005-07-05 Joseph S. Myers <joseph@codesourcery.com>
+
+ PR c/22308
+ * gcc.dg/pr22308-1.c: New test.
+
+2005-06-13 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/20789
+ * g++.dg/init/member1.C: New.
+ * g++.dg/other/warning1.C: Adjust.
+
+2005-06-08 Nathan Sidwell <nathan@codesourcery.com>
+
+ PR c++/21903
+ * g++.dg/parse/defarg9.C: New.
+
+ PR c++/19884
+ * g++.old-deja/g++.oliva/template6.C: Add another case.
+ * g++.dg/template/explicit6.C: New.
+
+ PR c++/19608
+ * g++.dg/parse/local-class1.C: New.
+
+2005-06-08 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/tls/debug-1.c: New test.
+
+2005-06-08 Volker Reichelt <reichelt@igpm.rwth-aachen.de>
+
+ PR c++/20563
+ * g++.dg/ext/label4.C: New test.
+
+2005-06-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21853
+ * g++.dg/expr/static_cast6.C: New test.
+
+2005-06-03 Mark Mitchell <mark@codesourcery.com>
+
+ PR c++/21336
+ * g++.dg/template/new2.C: New test.
+
+2005-05-29 Eric Botcazou <ebotcazou@libertysurf.fr>
+
+ * gcc.dg/c99-math.h: New
+ * gcc.dg/c99-math-float-1.c: New test.
+ * gcc.dg/c99-math-double-1.c: Likewise.
+ * gcc.dg/c99-math-long-double-1.c: Likewise.
+
2005-05-04 Jakub Jelinek <jakub@redhat.com>
PR rtl-optimization/21239
diff --git a/gcc/testsuite/g++.dg/conversion/simd2.C b/gcc/testsuite/g++.dg/conversion/simd2.C
index 873e707e003..a67df561ebd 100644
--- a/gcc/testsuite/g++.dg/conversion/simd2.C
+++ b/gcc/testsuite/g++.dg/conversion/simd2.C
@@ -12,5 +12,5 @@ void foo()
a = b * c;
a = b / c;
a = -b;
- a = d + b; /* { dg-error "invalid operands to binary +" } */
+ a = d + b; /* { dg-error "can't convert between vector" } */
}
diff --git a/gcc/testsuite/g++.dg/init/member1.C b/gcc/testsuite/g++.dg/init/member1.C
index 1c89d5a1d43..e94684fa8c0 100644
--- a/gcc/testsuite/g++.dg/init/member1.C
+++ b/gcc/testsuite/g++.dg/init/member1.C
@@ -12,7 +12,7 @@ template<typename T> struct C
{
static const int i = A<T>::i; // { dg-error "incomplete" }
static const int j = i; // { dg-error "initialized by a non-const" }
- B<j> b; // { dg-error "not a valid template arg" }
+ B<j> b; // { dg-error "cannot be used as template arg" }
};
C<int> c;
diff --git a/gcc/testsuite/g++.dg/other/warning1.C b/gcc/testsuite/g++.dg/other/warning1.C
index 109fc46aa22..6662c25e6e1 100644
--- a/gcc/testsuite/g++.dg/other/warning1.C
+++ b/gcc/testsuite/g++.dg/other/warning1.C
@@ -7,8 +7,8 @@ extern "C" int printf(const char *, ...);
struct S
{
- static const float inf = 1.0f / 0.0f; // { dg-warning "1.0|initialization" }
- static const float nan = 0.0f / 0.0f; // { dg-warning "0.0|initialization" }
+ static const float inf = 1.0f / 0.0f; // { dg-warning "1.0|initializ" }
+ static const float nan = 0.0f / 0.0f; // { dg-warning "0.0|initializ" }
};
int main()
diff --git a/gcc/testsuite/g++.old-deja/g++.oliva/template6.C b/gcc/testsuite/g++.old-deja/g++.oliva/template6.C
index f31d677afb0..270d67695f6 100644
--- a/gcc/testsuite/g++.old-deja/g++.oliva/template6.C
+++ b/gcc/testsuite/g++.old-deja/g++.oliva/template6.C
@@ -6,4 +6,7 @@
// simplified from bug report by Meenaradchagan Vishnu <mvishnu@fore.com>
template <typename> struct foo {};
-template <> void foo(); // { dg-error "" } bad specialization
+template <> void foo(); // { dg-error "not a template function" } bad specialization
+
+struct baz {};
+template <> void baz (); // { dg-error "not a template function" } bad specialization
diff --git a/gcc/testsuite/gcc.dg/c99-math-double-1.c b/gcc/testsuite/gcc.dg/c99-math-double-1.c
index 54bdf60dfe7..227b6e26cac 100644
--- a/gcc/testsuite/gcc.dg/c99-math-double-1.c
+++ b/gcc/testsuite/gcc.dg/c99-math-double-1.c
@@ -1,18 +1,18 @@
-/* { dg-do run { target *-*-solaris2.1[0-9]* } } */
-/* { dg-options "-std=c99 -O" } */
-
-#include <math.h>
-#include "c99-math.h"
-
-int main(void)
-{
- double nan = NAN;
- double inf = INFINITY;
- double huge = HUGE_VAL;
- double norm = __DBL_MIN__;
- double zero = 0.0;
-
- C99_MATH_TESTS (nan, inf, huge, norm, zero)
-
- return 0;
-}
+/* { dg-do run { target *-*-solaris2.1[0-9]* } } */
+/* { dg-options "-std=c99 -O" } */
+
+#include <math.h>
+#include "c99-math.h"
+
+int main(void)
+{
+ double nan = NAN;
+ double inf = INFINITY;
+ double huge = HUGE_VAL;
+ double norm = __DBL_MIN__;
+ double zero = 0.0;
+
+ C99_MATH_TESTS (nan, inf, huge, norm, zero)
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/c99-math-float-1.c b/gcc/testsuite/gcc.dg/c99-math-float-1.c
index ba27a710bde..9dd4e9a0483 100644
--- a/gcc/testsuite/gcc.dg/c99-math-float-1.c
+++ b/gcc/testsuite/gcc.dg/c99-math-float-1.c
@@ -1,18 +1,18 @@
-/* { dg-do run { target *-*-solaris2.1[0-9]* } } */
-/* { dg-options "-std=c99 -O" } */
-
-#include <math.h>
-#include "c99-math.h"
-
-int main(void)
-{
- float nan = NAN;
- float inf = INFINITY;
- float huge = HUGE_VALF;
- float norm = __FLT_MIN__;
- float zero = 0.0f;
-
- C99_MATH_TESTS (nan, inf, huge, norm, zero)
-
- return 0;
-}
+/* { dg-do run { target *-*-solaris2.1[0-9]* } } */
+/* { dg-options "-std=c99 -O" } */
+
+#include <math.h>
+#include "c99-math.h"
+
+int main(void)
+{
+ float nan = NAN;
+ float inf = INFINITY;
+ float huge = HUGE_VALF;
+ float norm = __FLT_MIN__;
+ float zero = 0.0f;
+
+ C99_MATH_TESTS (nan, inf, huge, norm, zero)
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/c99-math-long-double-1.c b/gcc/testsuite/gcc.dg/c99-math-long-double-1.c
index a8fa4d21fc1..43d15885473 100644
--- a/gcc/testsuite/gcc.dg/c99-math-long-double-1.c
+++ b/gcc/testsuite/gcc.dg/c99-math-long-double-1.c
@@ -1,18 +1,18 @@
-/* { dg-do run { target *-*-solaris2.1[0-9]* } } */
-/* { dg-options "-std=c99 -O" } */
-
-#include <math.h>
-#include "c99-math.h"
-
-int main(void)
-{
- long double nan = NAN;
- long double inf = INFINITY;
- long double huge = HUGE_VALL;
- long double norm = __LDBL_MIN__;
- long double zero = 0.0l;
-
- C99_MATH_TESTS (nan, inf, huge, norm, zero)
-
- return 0;
-}
+/* { dg-do run { target *-*-solaris2.1[0-9]* } } */
+/* { dg-options "-std=c99 -O" } */
+
+#include <math.h>
+#include "c99-math.h"
+
+int main(void)
+{
+ long double nan = NAN;
+ long double inf = INFINITY;
+ long double huge = HUGE_VALL;
+ long double norm = __LDBL_MIN__;
+ long double zero = 0.0l;
+
+ C99_MATH_TESTS (nan, inf, huge, norm, zero)
+
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/c99-math.h b/gcc/testsuite/gcc.dg/c99-math.h
index 3f42f67319d..a1e217c8ef3 100644
--- a/gcc/testsuite/gcc.dg/c99-math.h
+++ b/gcc/testsuite/gcc.dg/c99-math.h
@@ -1,111 +1,111 @@
-#include <math.h>
-
-extern void abort(void);
-
-#define C99_MATH_TESTS(nan, inf, huge, norm, zero) \
-{ \
- if (fpclassify (nan) != FP_NAN) \
- abort (); \
- \
- if (fpclassify (inf) != FP_INFINITE) \
- abort (); \
- \
- if (fpclassify (huge) != FP_INFINITE) \
- abort (); \
- \
- if (fpclassify (norm) != FP_NORMAL) \
- abort (); \
- \
- if (fpclassify (zero) != FP_ZERO) \
- abort (); \
- \
- \
- if (!isnan (nan)) \
- abort (); \
- \
- if (isnan (inf)) \
- abort (); \
- \
- if (isnan (huge)) \
- abort (); \
- \
- if (isnan (norm)) \
- abort (); \
- \
- if (isnan (zero)) \
- abort (); \
- \
- \
- if (isinf (nan)) \
- abort (); \
- \
- if (!isinf (inf)) \
- abort (); \
- \
- if (!isinf (huge)) \
- abort (); \
- \
- if (isnan (norm)) \
- abort (); \
- \
- if (isinf (zero)) \
- abort (); \
- \
- \
- if (isfinite (nan)) \
- abort (); \
- \
- if (isfinite (inf)) \
- abort (); \
- \
- if (isfinite (huge)) \
- abort (); \
- \
- if (!isfinite (norm)) \
- abort (); \
- \
- if (!isfinite (zero)) \
- abort (); \
- \
- \
- if (isnormal (nan)) \
- abort (); \
- \
- if (isnormal (inf)) \
- abort (); \
- \
- if (isnormal (huge)) \
- abort (); \
- \
- if (!isnormal (norm)) \
- abort (); \
- \
- if (isnormal (zero)) \
- abort (); \
- \
- \
- if (signbit (norm)) \
- abort (); \
- \
- if (!signbit (-(norm))) \
- abort (); \
- \
- \
- if (!isgreater ((inf), (norm))) \
- abort (); \
- \
- if (!isgreaterequal ((inf), (huge))) \
- abort (); \
- \
- if (!isless ((norm), (inf))) \
- abort (); \
- \
- if (!islessequal ((huge), (inf))) \
- abort (); \
- \
- if (!islessgreater ((inf), (norm))) \
- abort (); \
- \
- if (!isunordered ((nan), (norm))) \
- abort (); \
-}
+#include <math.h>
+
+extern void abort(void);
+
+#define C99_MATH_TESTS(nan, inf, huge, norm, zero) \
+{ \
+ if (fpclassify (nan) != FP_NAN) \
+ abort (); \
+ \
+ if (fpclassify (inf) != FP_INFINITE) \
+ abort (); \
+ \
+ if (fpclassify (huge) != FP_INFINITE) \
+ abort (); \
+ \
+ if (fpclassify (norm) != FP_NORMAL) \
+ abort (); \
+ \
+ if (fpclassify (zero) != FP_ZERO) \
+ abort (); \
+ \
+ \
+ if (!isnan (nan)) \
+ abort (); \
+ \
+ if (isnan (inf)) \
+ abort (); \
+ \
+ if (isnan (huge)) \
+ abort (); \
+ \
+ if (isnan (norm)) \
+ abort (); \
+ \
+ if (isnan (zero)) \
+ abort (); \
+ \
+ \
+ if (isinf (nan)) \
+ abort (); \
+ \
+ if (!isinf (inf)) \
+ abort (); \
+ \
+ if (!isinf (huge)) \
+ abort (); \
+ \
+ if (isnan (norm)) \
+ abort (); \
+ \
+ if (isinf (zero)) \
+ abort (); \
+ \
+ \
+ if (isfinite (nan)) \
+ abort (); \
+ \
+ if (isfinite (inf)) \
+ abort (); \
+ \
+ if (isfinite (huge)) \
+ abort (); \
+ \
+ if (!isfinite (norm)) \
+ abort (); \
+ \
+ if (!isfinite (zero)) \
+ abort (); \
+ \
+ \
+ if (isnormal (nan)) \
+ abort (); \
+ \
+ if (isnormal (inf)) \
+ abort (); \
+ \
+ if (isnormal (huge)) \
+ abort (); \
+ \
+ if (!isnormal (norm)) \
+ abort (); \
+ \
+ if (isnormal (zero)) \
+ abort (); \
+ \
+ \
+ if (signbit (norm)) \
+ abort (); \
+ \
+ if (!signbit (-(norm))) \
+ abort (); \
+ \
+ \
+ if (!isgreater ((inf), (norm))) \
+ abort (); \
+ \
+ if (!isgreaterequal ((inf), (huge))) \
+ abort (); \
+ \
+ if (!isless ((norm), (inf))) \
+ abort (); \
+ \
+ if (!islessequal ((huge), (inf))) \
+ abort (); \
+ \
+ if (!islessgreater ((inf), (norm))) \
+ abort (); \
+ \
+ if (!isunordered ((nan), (norm))) \
+ abort (); \
+}
diff --git a/gcc/testsuite/gcc.dg/pr22308-1.c b/gcc/testsuite/gcc.dg/pr22308-1.c
index bcbb294c2cb..ff849151d16 100644
--- a/gcc/testsuite/gcc.dg/pr22308-1.c
+++ b/gcc/testsuite/gcc.dg/pr22308-1.c
@@ -9,5 +9,5 @@ struct foo { const int z; };
void
bar (void)
{
- t = s; /* { dg-error "error: assignment of read-only variable 't'" } */
+ t = s; /* { dg-error "error: assignment of read-only variable `t'" } */
}
diff --git a/gcc/version.c b/gcc/version.c
index 70c2cece9aa..eb717e10dee 100644
--- a/gcc/version.c
+++ b/gcc/version.c
@@ -5,7 +5,7 @@
please modify this string to indicate that, e.g. by putting your
organization's name in parentheses at the end of the string. */
-const char version_string[] = "3.4.4 20050526 (Red Hat 3.4.4-1)";
+const char version_string[] = "3.4.4 20050721 (Red Hat 3.4.4-2)";
/* This is the location of the online document giving instructions for
reporting bugs. If you distribute a modified version of GCC,
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog
index d5e452ee933..2468b88f6a6 100644
--- a/libstdc++-v3/ChangeLog
+++ b/libstdc++-v3/ChangeLog
@@ -1,3 +1,14 @@
+2005-07-18 Paolo Carlini <pcarlini@suse.de>
+ Nathan Myers <ncm@cantrip.org>
+
+ PR libstdc++/21286
+ * include/bits/fstream.tcc (basic_filebuf<>::xsgetn):
+ Loop on short reads.
+
+2005-05-27 Mark Mitchell <mark@codesourcery.com>
+
+ * testsuite/Makefile.in: Regenerate with Automake 1.7.8.
+
2005-01-31 Mark Mitchell <mark@codesourcery.com>
* include/std/std_limits.h (numeric_limits<float>::has_denorm):
diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config
index e0cd45f0fff..83f127e5449 100644
--- a/libstdc++-v3/include/bits/c++config
+++ b/libstdc++-v3/include/bits/c++config
@@ -35,7 +35,7 @@
#include <bits/os_defines.h>
// The current version of the C++ library in compressed ISO date format.
-#define __GLIBCXX__ 20050526
+#define __GLIBCXX__ 20050721
// Allow use of "export template." This is currently not a feature
// that g++ supports.
diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc
index 25a4d48cb72..3b433ea79b0 100644
--- a/libstdc++-v3/include/bits/fstream.tcc
+++ b/libstdc++-v3/include/bits/fstream.tcc
@@ -535,13 +535,28 @@ namespace std
__n -= __avail;
}
- const streamsize __len = _M_file.xsgetn(reinterpret_cast<char*>(__s),
- __n);
- if (__len == -1)
- __throw_ios_failure(__N("basic_filebuf::xsgetn "
- "error reading the file"));
- __ret += __len;
- if (__len == __n)
+ // Need to loop in case of short reads (relatively common
+ // with pipes).
+ streamsize __len;
+ for (;;)
+ {
+ __len = _M_file.xsgetn(reinterpret_cast<char*>(__s),
+ __n);
+ if (__len == -1)
+ __throw_ios_failure(__N("basic_filebuf::xsgetn "
+ "error reading the file"));
+ if (__len == 0)
+ break;
+
+ __n -= __len;
+ __ret += __len;
+ if (__n == 0)
+ break;
+
+ __s += __len;
+ }
+
+ if (__n == 0)
{
_M_set_buffer(0);
_M_reading = true;
diff --git a/libstdc++-v3/testsuite/Makefile.in b/libstdc++-v3/testsuite/Makefile.in
index b29a10f10b4..666bd74964c 100644
--- a/libstdc++-v3/testsuite/Makefile.in
+++ b/libstdc++-v3/testsuite/Makefile.in
@@ -1,8 +1,8 @@
-# Makefile.in generated by automake 1.9.2 from Makefile.am.
+# Makefile.in generated by automake 1.7.8 from Makefile.am.
# @configure_input@
-# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
-# 2003, 2004 Free Software Foundation, Inc.
+# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003
+# Free Software Foundation, Inc.
# This Makefile.in is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
@@ -14,8 +14,6 @@
@SET_MAKE@
-SOURCES = $(libv3test_a_SOURCES)
-
srcdir = @srcdir@
top_srcdir = @top_srcdir@
VPATH = @srcdir@
@@ -23,6 +21,7 @@ pkgdatadir = $(datadir)/@PACKAGE@
pkglibdir = $(libdir)/@PACKAGE@
pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = ..
+
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644
@@ -39,44 +38,6 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
- $(top_srcdir)/fragment.am
-subdir = testsuite
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
- $(top_srcdir)/linkage.m4 \
- $(top_srcdir)/../config/no-executables.m4 \
- $(top_srcdir)/../libtool.m4 $(top_srcdir)/crossconfig.m4 \
- $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
- $(ACLOCAL_M4)
-CONFIG_HEADER = $(top_builddir)/config.h
-CONFIG_CLEAN_FILES =
-LIBRARIES = $(noinst_LIBRARIES)
-ARFLAGS = cru
-libv3test_a_AR = $(AR) $(ARFLAGS)
-libv3test_a_LIBADD =
-am_libv3test_a_OBJECTS = testsuite_abi.$(OBJEXT) \
- testsuite_allocator.$(OBJEXT) testsuite_hooks.$(OBJEXT)
-libv3test_a_OBJECTS = $(am_libv3test_a_OBJECTS)
-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
-depcomp =
-am__depfiles_maybe =
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
-CXXLD = $(CXX)
-SOURCES = $(libv3test_a_SOURCES)
-DIST_SOURCES = $(libv3test_a_SOURCES)
-ETAGS = etags
-CTAGS = ctags
-DEJATOOL = $(PACKAGE)
-RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
-EXPECT = expect
-RUNTEST = runtest
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ALLOCATOR_H = @ALLOCATOR_H@
ALLOCATOR_NAME = @ALLOCATOR_NAME@
@@ -186,8 +147,6 @@ ac_ct_CXX = @ac_ct_CXX@
ac_ct_RANLIB = @ac_ct_RANLIB@
ac_ct_STRIP = @ac_ct_STRIP@
am__leading_dot = @am__leading_dot@
-am__tar = @am__tar@
-am__untar = @am__untar@
baseline_dir = @baseline_dir@
bindir = @bindir@
build = @build@
@@ -224,7 +183,6 @@ libexecdir = @libexecdir@
libtool_VERSION = @libtool_VERSION@
localstatedir = @localstatedir@
mandir = @mandir@
-mkdir_p = @mkdir_p@
multi_basedir = @multi_basedir@
oldincludedir = @oldincludedir@
port_specific_symbol_files = @port_specific_symbol_files@
@@ -239,11 +197,15 @@ target_cpu = @target_cpu@
target_os = @target_os@
target_vendor = @target_vendor@
toplevel_srcdir = @toplevel_srcdir@
+
AUTOMAKE_OPTIONS = dejagnu
+
MAINT_CHARSET = latin1
+
mkinstalldirs = $(SHELL) $(toplevel_srcdir)/mkinstalldirs
PWD_COMMAND = $${PWDCMD-pwd}
STAMP = echo timestamp >
+
toolexecdir = $(glibcxx_toolexecdir)
toolexeclibdir = $(glibcxx_toolexeclibdir)
@@ -258,17 +220,22 @@ WARN_CXXFLAGS = \
# -I/-D flags to pass when compiling.
AM_CPPFLAGS = $(GLIBCXX_INCLUDES)
+
AM_MAKEFLAGS = -j1
AM_RUNTESTFLAGS =
+
testsuite_flags_script = ${glibcxx_builddir}/scripts/testsuite_flags
AM_CXXFLAGS = $(shell ${testsuite_flags_script} --cxxflags)
+
GLIBGCC_DIR = `$(CC) -print-libgcc-file-name | sed 's,/[^/]*$$,,'`
GLIBCXX_DIR = ${glibcxx_builddir}/src/.libs
+
CXXLINK = \
$(LIBTOOL) --tag=CXX --mode=link $(CXX) \
-R $(GLIBGCC_DIR) -R $(GLIBCXX_DIR) \
$(AM_CXXFLAGS) $(CXXFLAGS) $(LDFLAGS) -lv3test -L. -o $@
+
noinst_LIBRARIES = libv3test.a
libv3test_a_SOURCES = \
testsuite_abi.cc \
@@ -283,6 +250,7 @@ lists_of_files = \
testsuite_files_interactive \
testsuite_files_performance
+
baseline_file = ${baseline_dir}/baseline_symbols.txt
extract_symvers = $(glibcxx_srcdir)/scripts/extract_symvers
@@ -303,39 +271,41 @@ performance_script = ${glibcxx_srcdir}/scripts/check_performance
CLEANFILES = *.txt *.tst *.exe core* filebuf_* tmp* ostream_* *.log *.sum \
testsuite_* site.exp abi_check baseline_symbols
+subdir = testsuite
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+LIBRARIES = $(noinst_LIBRARIES)
+
+libv3test_a_AR = $(AR) cru
+libv3test_a_LIBADD =
+am_libv3test_a_OBJECTS = testsuite_abi.$(OBJEXT) \
+ testsuite_allocator.$(OBJEXT) testsuite_hooks.$(OBJEXT)
+libv3test_a_OBJECTS = $(am_libv3test_a_OBJECTS)
+
+DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
+depcomp =
+am__depfiles_maybe =
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+LTCXXCOMPILE = $(LIBTOOL) --mode=compile $(CXX) $(DEFS) \
+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+ $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+DIST_SOURCES = $(libv3test_a_SOURCES)
+DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/fragment.am \
+ Makefile.am
+SOURCES = $(libv3test_a_SOURCES)
+
all: all-am
.SUFFIXES:
.SUFFIXES: .cc .lo .o .obj
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/fragment.am $(am__configure_deps)
- @for dep in $?; do \
- case '$(am__configure_deps)' in \
- *$$dep*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
- && exit 0; \
- exit 1;; \
- esac; \
- done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign --ignore-deps testsuite/Makefile'; \
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/fragment.am $(top_srcdir)/configure.ac $(ACLOCAL_M4)
cd $(top_srcdir) && \
- $(AUTOMAKE) --foreign --ignore-deps testsuite/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
- @case '$?' in \
- *config.status*) \
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
- *) \
- echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
- cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
- esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
- cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ $(AUTOMAKE) --foreign testsuite/Makefile
+Makefile: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.in $(top_builddir)/config.status
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)
clean-noinstLIBRARIES:
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
@@ -345,19 +315,19 @@ libv3test.a: $(libv3test_a_OBJECTS) $(libv3test_a_DEPENDENCIES)
$(RANLIB) libv3test.a
mostlyclean-compile:
- -rm -f *.$(OBJEXT)
+ -rm -f *.$(OBJEXT) core *.core
distclean-compile:
-rm -f *.tab.c
.cc.o:
- $(CXXCOMPILE) -c -o $@ $<
+ $(CXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
.cc.obj:
- $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+ $(CXXCOMPILE) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(srcdir)/$<'; fi`
.cc.lo:
- $(LTCXXCOMPILE) -c -o $@ $<
+ $(LTCXXCOMPILE) -c -o $@ `test -f '$<' || echo '$(srcdir)/'`$<
mostlyclean-libtool:
-rm -f *.lo
@@ -369,6 +339,14 @@ distclean-libtool:
-rm -f libtool
uninstall-info-am:
+ETAGS = etags
+ETAGSFLAGS =
+
+CTAGS = ctags
+CTAGSFLAGS =
+
+tags: TAGS
+
ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
unique=`for i in $$list; do \
@@ -377,7 +355,6 @@ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
mkid -fID $$unique
-tags: TAGS
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -389,11 +366,10 @@ TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
done | \
$(AWK) ' { files[$$0] = 1; } \
END { for (i in files) print i; }'`; \
- if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
- test -n "$$unique" || unique=$$empty_fix; \
- $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
- $$tags $$unique; \
- fi
+ test -z "$(ETAGS_ARGS)$$tags$$unique" \
+ || $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique
+
ctags: CTAGS
CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
$(TAGS_FILES) $(LISP)
@@ -416,6 +392,11 @@ GTAGS:
distclean-tags:
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+RUNTESTFLAGS =
+DEJATOOL = $(PACKAGE)
+RUNTESTDEFAULTFLAGS = --tool $$tool --srcdir $$srcdir
+EXPECT = expect
+RUNTEST = runtest
check-DEJAGNU: site.exp
srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \
@@ -433,9 +414,13 @@ distclean-DEJAGNU:
-l='$(DEJATOOL)'; for tool in $$l; do \
rm -f $$tool.sum $$tool.log; \
done
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+
+top_distdir = ..
+distdir = $(top_distdir)/$(PACKAGE)-$(VERSION)
distdir: $(DISTFILES)
- $(mkdir_p) $(distdir)/..
+ $(mkinstalldirs) $(distdir)/..
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
list='$(DISTFILES)'; for file in $$list; do \
@@ -447,7 +432,7 @@ distdir: $(DISTFILES)
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
dir="/$$dir"; \
- $(mkdir_p) "$(distdir)$$dir"; \
+ $(mkinstalldirs) "$(distdir)$$dir"; \
else \
dir=''; \
fi; \
@@ -466,6 +451,7 @@ check-am: all-am
$(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
check: check-am
all-am: Makefile $(LIBRARIES) all-local
+
installdirs:
install: install-am
install-exec: install-exec-am
@@ -478,7 +464,7 @@ install-am: all-am
installcheck: installcheck-am
install-strip:
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
- install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ INSTALL_STRIP_FLAG=-s \
`test -z '$(STRIP)' || \
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
mostlyclean-generic:
@@ -487,7 +473,7 @@ clean-generic:
-test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
distclean-generic:
- -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+ -rm -f $(CONFIG_CLEAN_FILES)
maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@@ -506,8 +492,6 @@ dvi: dvi-am
dvi-am:
-html: html-am
-
info: info-am
info-am:
@@ -543,15 +527,15 @@ uninstall-am: uninstall-info-am
.PHONY: CTAGS GTAGS all all-am all-local check check-DEJAGNU check-am \
clean clean-generic clean-libtool clean-noinstLIBRARIES ctags \
- distclean distclean-DEJAGNU distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-exec install-exec-am \
- install-info install-info-am install-man install-strip \
- installcheck installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags uninstall uninstall-am uninstall-info-am
+ distclean distclean-DEJAGNU distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am info \
+ info-am install install-am install-data install-data-am \
+ install-exec install-exec-am install-info install-info-am \
+ install-man install-strip installcheck installcheck-am \
+ installdirs maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
+ uninstall-am uninstall-info-am
all-local: stamp_wchar testsuite_files