* varasm.c (default_binds_local_p_1): Weakrefs don't bind locally.
A hidden weak object does bind locally. Strong linkonce data
counts like any other strong symbol for binding.
(weak_finish_1): Don't specially handle weakrefs, they no longer
arrive here.
(assemble_alias): Weakrefs can't be TREE_PUBLIC yet.
* c-common.c (handle_alias_attribute): Allow static aliases
of variables.
(handle_weakref_attribute): Don't call declare_weak on weakrefs.
* gthr-dce.h: Make weakrefs static.
* gthr-tpf.h: Likewise.
* gthr-solaris.h: Likewise.
* gthr-posix.h: Likewise.
* gthr-posix95.h: Likewise.
* config/darwin.c (darwin_encode_section_info): static weakref
variables are not necessarily defined in this translation unit.
* doc/extend.texi (Function Attributes): Mention that an alias
attribute creates a definition for the thing it's attached to.
Change the documentation for weakref to say that the thing
it's attached to must be static.
* g++.old-deja/g++.abi/vtable2.C: Make weakrefs static.
* gcc.dg/attr-weakref-1.c: Modify to not try to test public weakrefs,
and to work on Darwin.
* gcc.dg/attr-weakref-1b.c: New file.
* gcc.dg/attr-weakref-2.c: New test.
* gcc.dg/darwin-weakref-1.c: New test.
Janis Johnson [Mon, 5 Dec 2005 19:06:11 +0000 (19:06 +0000)]
re PR testsuite/25247 (syntax error in target selector for gcc.dg/torture/fp-int-convert-float128-timode.c)
PR testsuite/25247
* lib/target-supports-dg.exp (dg-skip-if): Fix target selector for
use in selector expressions.
(dg-xfail-if): Ditto.
* gcc.test-framework/dg-dot-run-sif-exp-P.c: New test.
* gcc.test-framework/dg-dot-run-sif-exp-U.c: New test.
* gcc.test-framework/dg-dot-run-xif-exp-P.c: New test.
* gcc.test-framework/dg-dot-run-xif-exp-XP.c: New test.
* gcc.test-framework/test-framework.exp: Skip generated tests if
CHECK_TEST_FRAMEWORK is not 1.
Paolo Bonzini [Mon, 5 Dec 2005 17:20:49 +0000 (17:20 +0000)]
predicates.md (logical_const_operand): Split out of logical_operand.
2005-12-05 Paolo Bonzini <bonzini@gnu.org>
* config/rs6000/predicates.md (logical_const_operand): Split
out of logical_operand.
(logical_operand): Use it.
* config/rs6000/rs6000.md (cmp -> xor peephole2): Use
logical_const_operand.
Paolo Bonzini [Mon, 5 Dec 2005 15:00:27 +0000 (15:00 +0000)]
configure.in (CONFIGURED_BISON, [...]): Remove "CONFIGURED_" from the AC_CHECK_PROGS invocation.
toplevel:
2005-12-05 Paolo Bonzini <bonzini@gnu.org>
* configure.in (CONFIGURED_BISON, CONFIGURED_YACC, CONFIGURED_M4,
CONFIGURED_FLEX, CONFIGURED_LEX, CONFIGURED_MAKEINFO): Remove
"CONFIGURED_" from the AC_CHECK_PROGS invocation. Move below.
Find in-tree tools if available.
(EXPECT, RUNTEST, LIPO, STRIP): Find them and substitute them.
(CONFIGURED_*_FOR_TARGET): Don't set nor substitute.
(*_FOR_TARGET): Set them with GCC_TARGET_TOOL.
(COMPILER_*_FOR_TARGET): New.
* Makefile.tpl (HOST_EXPORTS): Add *_FOR_TARGET symbols that gcc needs.
(BASE_TARGET_EXPORTS): Use COMPILER_*_FOR_TARGET symbols.
(CONFIGURED_*, USUAL_*): Remove.
(BISON, YACC, FLEX, LEX, M4, MAKEINFO, EXPECT, RUNTEST, LIPO,
STRIP): Use autoconf substitutions.
(COMPILER_AS_FOR_TARGET, COMPILER_LD_FOR_TARGET,
COMPILER_NM_FOR_TARGET): New.
(EXTRA_HOST_FLAGS): Pass LIPO and STRIP.
(all): Make all-host and all-target in parallel.
(do-[+make_target+], do-check, install, [+compare-target+]): Ensure
that $$r and $$s are set before invoking a recursive make.
(stage[+id+]-bubble): Likewise, and invoke the comparison at the end.
([+bootstrap-target+]): Inline most of the `all' target.
config:
2005-12-05 Paolo Bonzini <bonzini@gnu.org>
re PR target/25166 (FAIL: gcc.c-torture/execute/conversion.c compilation)
PR target/25166
* pa/pa.c (pa_hpux_init_libfuncs): Add _U_Qfcnvxf_usgl_to_quad and
_U_Qfcnvxf_udbl_to_quad to set of initialized libfuncs.
* pa/quadlib.c (_U_Qfcnvxf_usgl_to_quad, _U_Qfcnvxf_udbl_to_quad): New
functions.
Paolo Carlini [Mon, 5 Dec 2005 00:32:31 +0000 (00:32 +0000)]
vstring.h (__versa_string<>::operator+, [...]): Move out of line...
2005-12-04 Paolo Carlini <pcarlini@suse.de>
* include/ext/vstring.h (__versa_string<>::operator+, all
versions): Move out of line...
* include/ext/vstring.tcc (__versa_string<>::operator+): ...
here; consistently use reserve for the benefit of sso_string_base;
prefer push_back to single-char append when appropriate.
* include/ext/vstring.h (__versa_string<>::push_back): Don't
call _M_reserve, _M_mutate instead.
(reserve): Just forward to _M_reserve.
* include/ext/vstring.tcc (__versa_string<>::_M_reserve): Remove.
* include/ext/rc_string_base.h (__rc_string_base<>::_M_reserve): Also
do the initial checks (first on length, in case __res == capacity).
* include/ext/sso_string_base.h (__sso_string_base<>::_M_reserve:
Likewise; don't call _M_set_length unnecessarily.
2005-12-04 Paolo Carlini <pcarlini@suse.de>
* include/ext/vstring.h (__versa_string<>::_M_append): New.
(append(const __versa_string&), append(const __versa_string&,
size_type, size_type), append(const _CharT*, size_type),
append(const _CharT*)): Use it.
(append(size_type, _CharT)): Delegate to _M_replace_aux.
(assign(const __versa_string&, size_type, size_type),
assign(const _CharT*), replace(size_type, size_type,
const _CharT*, size_type)): Forward to _M_replace.
* include/ext/vstring.tcc (__versa_string<>::_M_append):
Define, core append functionality.
(_M_replace): Simplify, move __s == 0 case to _M_replace_aux.
(_M_replace_aux): Reorganize, don't call _M_replace.
2005-12-04 Paolo Carlini <pcarlini@suse.de>
* include/ext/vstring.tcc (__versa_string<>::_M_replace):
Perform _M_check_length at the beginning and remove it from ...
(replace, _M_replace_dispatch, _M_replace_aux, assign): ... here.
(assign): Now move inline.
(resize): Don't call _M_check_length redundantly, append does.
* include/ext/sso_string_base.h (__sso_string_base<>::_M_erase): Add.
* include/ext/rc_string_base.h (__rc_string_base<>::_M_erase): Likewise.
(_M_leak_hard): Use it.
* include/ext/vstring.h (__versa_string<>::clear, erase, all
versions): Use it.
* include/ext/vstring.tcc (__versa_string<>::resize): Likewise.
* include/ext/vstring.h (__versa_string<>::_M_replace_safe):
Remove.
* include/ext/vstring.h (__versa_string<>::_M_replace): New, does
the in-place work or delegates to _M_mutate in case of reallocation.
* include/ext/vstring.tcc (__versa_string<>::_M_replace_safe):
Remove.
* include/ext/vstring.tcc (__versa_string<>::_M_replace): Define.
(assign, replace, _M_replace_dispatch, _M_replace_aux): Use it.
* include/ext/sso_string_base.h (__sso_string_base<>::_M_mutate):
Change to manage only reallocations.
* include/ext/rc_string_base.h (__rc_string_base<>::_M_mutate):
Likewise.
Joseph Myers [Sun, 4 Dec 2005 21:45:41 +0000 (21:45 +0000)]
c-common.c (binary_op_error): Do not allow NOP_EXPR.
* c-common.c (binary_op_error): Do not allow NOP_EXPR.
(c_common_truthvalue_conversion): Handle NOP_EXPR the same as
CONVERT_EXPR.
(check_function_arguments_recurse): Allow both NOP_EXPR and
CONVERT_EXPR but check conversions preserve precision.
* c-typeck.c (pointer_diff): Allow both NOP_EXPR and CONVERT_EXPR
but check conversions preserve precision.
(build_unary_op): Don't allow NOP_EXPR. Use gcc_unreachable () in
default case.
Roger Sayle [Sun, 4 Dec 2005 19:56:47 +0000 (19:56 +0000)]
re PR c/7776 (const char* p = "foo"; if (p == "foo") ... is compiled without warning!)
PR c/7776
* common.opt (Wstring-literal-comparison): New command line option.
* c-opts.c (c_common_handle_option): Set it with -Wall.
* c-typeck.c (parser_build_binary_op): Issue warning if either
operand of a comparison operator is a string literal, except for
testing equality or inequality against NULL.
* doc/invoke.texi: Document new -Wstring-literal-comparison option.
* gcc.dg/Wstring-literal-comparison-1.c: New test case.
* gcc.dg/Wstring-literal-comparison-2.c: Likewise.
* gcc.dg/Wstring-literal-comparison-3.c: Likewise.
* gcc.dg/Wstring-literal-comparison-4.c: Likewise.
Joseph Myers [Sat, 3 Dec 2005 18:58:43 +0000 (18:58 +0000)]
c-common.c (c_sizeof_or_alignof_type): Use fold_convert instead of building a NOP_EXPR.
* c-common.c (c_sizeof_or_alignof_type): Use fold_convert instead
of building a NOP_EXPR.
(c_alignof_expr): Likewise. Handle CONVERT_EXPR the same as
NOP_EXPR.
* c-convert.c (convert): Use fold_convert instead of building
NOP_EXPRs and CONVERT_EXPRs directly. Don't special case
c_objc_common_truthvalue_conversion returning a NOP_EXPR. Remove
#if 0 code.
* c-pretty-print.c (pp_c_cast_expression, pp_c_expression): Handle
NOP_EXPR the same as CONVERT_EXPR.
* c-typeck.c (build_function_call): Use fold_convert instead of
building a NOP_EXPR directly.
(build_compound_expr): Handle NOP_EXPR the same as CONVERT_EXPR.
testsuite:
* gcc.dg/cast-pretty-print-1.c: New test.
re PR fortran/25106 ([4.0/4.1] statement label is zero)
PR fortran/25106
* parse.c (next_free): Use new prototype for gfc_match_st_label.
Correctly emit hard error if a label is zero.
* match.c (gfc_match_st_label): Never allow zero as a valid
label.
(gfc_match, gfc_match_do, gfc_match_goto): Use new prototype for
gfc_match_st_label.
* primary.c (): Use new prototype for gfc_match_st_label.
* io.c (): Likewise.
* match.h: Likewise.
Joseph Myers [Sat, 3 Dec 2005 01:25:42 +0000 (01:25 +0000)]
c-typeck.c (default_function_array_conversion, [...]): Allow for CONVERT_EXPR as well as NOP_EXPR.
* c-typeck.c (default_function_array_conversion,
build_function_call): Allow for CONVERT_EXPR as well as NOP_EXPR.
(build_conditional_expr): Apply integer_zerop to orig_op1 and
orig_op2. Don't check them for NOP_EXPR.
(build_c_cast, convert_for_assignment): Don't check for NOP_EXPR
around integer zero.
testsuite:
* gcc.dg/c90-const-expr-4.c, gcc.dg/c99-const-expr-4.c: New tests.
* config/rs6000/rs6000.c (rs6000_stack_t): Remove toc_save_p,
toc_save_offset, toc_size, lr_size.
(rs6000_stack_info): Use memset rather than bss struct copy to init.
Test rs6000_ra_ever_killed last in condition setting lr_save_p.
Adjust for removal of unused rs6000_stack_t fields.
(debug_stack_info): Adjust.
(rs6000_ra_ever_killed): Expand FIND_REG_INC_NOTE. Test for calls
first, and don't bother checking for set/inc of lr on sibcalls.
(rs6000_emit_epilogue): Tidy code restoring stack pointer.
Jakub Jelinek [Fri, 2 Dec 2005 22:55:35 +0000 (23:55 +0100)]
re PR target/25199 (crashing code output from -mtune=pentium4 but not -mtune=pentiumpro)
PR target/25199
* config/i386/i386.md (movqi_1): Only force imovx for alternative
5 if operand 1 is not aligned. Undo previous constraint change.
* config/i386/predicates.md (aligned_operand): Use MEM_ALIGN.
testsuite/
* gcc.target/i386/movq-2.c: New test.
* gcc.target/i386/movq.c: Remove target i?86, instead add
dg-require-effective-target ilp32.
convert.c (convert_to_integer): Use fold_convert instead of fold_build1 (NOP_EXPR, ...).
2005-12-02 Richard Guenther <rguenther@suse.de>
* convert.c (convert_to_integer): Use fold_convert instead
of fold_build1 (NOP_EXPR, ...). Use tree_int_cst_sgn < 0
instead of comparing against 0. Use build_int_cst instead
of converting integer_zero_node.
Roger Sayle [Fri, 2 Dec 2005 04:40:05 +0000 (04:40 +0000)]
tree.h (TREE_OVERFLOW): Make this flag/predicate specific to constant nodes, i.e.
* tree.h (TREE_OVERFLOW): Make this flag/predicate specific to
constant nodes, i.e. INTEGER_CST, REAL_CST, etc...
* tree-vrp.c (compare_values): Only check TREE_OVERFLOW for
integer constant comparisons.
ada/
* utils.c (max_size): Only test for TREE_OVERFLOW on INTEGER_CST
nodes.
Jon Grimm [Fri, 2 Dec 2005 02:30:42 +0000 (02:30 +0000)]
dfp.h, dfp.c: New files.
2005-12-02 Jon Grimm <jgrimm2@us.ibm.com>
Janis Johnson <janis187@us.ibm.com>
David Edelsohn <dje@watson.ibm.com>
Ben Elliston <bje@au.ibm.com>
* dfp.h, dfp.c: New files.
* Makefile.in (DECNUM, DECNUMINC, LIBDECNUMBER): New variables.
(DECNUM_H): Likewise.
(LIBDEPS, LIBS, BACKEND): Append $(LIBDECNUMBER).
(INCLUDES): Append $(DECNUMINC).
(OBJS-common): Add dfp.o.
(dfp.o): New rule.
* real.h (EXP_BITS): Pinch one bit to ..
(struct real_value): Add decimal field.
(real_format): Change table size, update documentation.
(REAL_MODE_FORMAT): Update for to handle float, decimal float.
(real_from_string3): Declare.
(decimal_single_format): Declare.
(decimal_double_format): Declare.
(decimal_quad_format): Declare.
(REAL_VALUE_TO_TARGET_DECIMAL32): New.
(REAL_VALUE_TO_TARGET_DECIMAL64): New.
(REAL_VALUE_TO_TARGET_DECIMAL128): New.
* real.c: Include dfp.h.
(normalize): Early return for decimal floats.
(do_add): Zero decimal field.
(do_compare): Call do_decimal_compare for decimal floats.
(do_fix_trunc): Likewise, call decimal_do_fix_trunc.
(real_arithmetic): Call decimal_real_arithmetic for decimal
floating point operands.
(real_identical): If a and b are of differing radix, return false.
(real_to_integer): Call decimal_real_to_integer if the value is a
decimal float.
(real_to_integer2): Likewise, call decimal_real_to_integer2.
(real_to_decimal): Likewise, call decimal_real_to_decimal.
(real_to_hexadecimal): Place "N/A" in the return string for
decimal float.
(real_from_string3): New variant, given a mode.
(real_maxval): Use decimal_real_maxval for decimal floats.
(round_for_format): Use decimal_round_for_format for decimals.
(real_convert): Use decimal_real_convert where appropriate.
(significand_size): Handle base 10.
(encode_decimal_single, decode_decimal_single,
encode_decimal_double, decode_decimal_double, encode_decimal_quad,
decode_decimal_quad): New functions.
(decimal_single_format): New.
(decimal_double_format): New.
(decimal_quad_format): New.
* machmode.def: Add SD, DD and TD decimal floating point modes.
* machmode.h (FLOAT_MODE_P, SCALAR_FLOAT_MODE_P, MODES_WIDEN_P):
Include MODE_DECIMAL_FLOAT.
(DECIMAL_FLOAT_MODE_P): New.
* mode-classes.def (MODE_DECIMAL_FLOAT): New mode class.
* genmodes.c (struct mode_data): Add counter field.
(struct mode_data): Update comment for format.
(blank_mode): Initialise counter field.
(new_mode): Increment counter field for each mode defined.
(complete_mode): Handle MODE_DECIMAL_FLOAT, update check for mode
using a format.
(make_complex_modes): Handle modes containing `D'.
(DECIMAL_FLOAT_MODE, FRACTIONAL_DECIMAL_FLOAT_MODE): New.
(make_decimal_float_mode): New.
(reset_float_format): Handle MODE_DECIMAL_FLOAT.
(cmp_modes): Compare counter field if other characteristics
similar.
(emit_real_format_for_mode): Support formats for decimal floats.
* doc/rtl.texi (Machine Modes): Document SD, DD and TDmodes.
Document MODE_DECIMAL_FLOAT.
Co-Authored-By: Ben Elliston <bje@au.ibm.com> Co-Authored-By: David Edelsohn <dje@watson.ibm.com> Co-Authored-By: Janis Johnson <janis187@us.ibm.com>
From-SVN: r107861
parser.c (cp_parser_make_typename_type): Call make_typename_type with tf_none instead of magic value 0.
* parser.c (cp_parser_make_typename_type): Call make_typename_type
with tf_none instead of magic value 0.
(cp_parser_explicit_instantiation): Call do_type_instantiation
with tf_error instead of magic value 1.
(cp_parser_elaborated_type_specifier): Call make_typename_type
with tf_error instead of magic value 1.
(cp_parser_class_name): Likewise.
(cp_parser_lookup_name): Likewise.
Anthony Green [Thu, 1 Dec 2005 19:33:42 +0000 (19:33 +0000)]
re PR bootstrap/25207 (bootstrap fails on libjava if alsa headers present but no -lasound.)
2005-12-01 Anthony Green <green@redhat.com>
PR bootstrap/25207
* configure.ac: Make sure we have an alsa library in addition to
the headers. This extra test is required for systems with
multilibs.
* configure: Rebuilt.
Paul Thomas [Thu, 1 Dec 2005 06:58:04 +0000 (06:58 +0000)]
re PR fortran/24789 ([gfortran] ICE when assigning to array of strings)
2005-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24789
* trans-decl.c (gfc_get_symbol_decl): Move the expression for
unit size of automatic character length, dummy pointer array
elements down a few lines from the version that fixed PR15809.
2005-12-01 Paul Thomas <pault@gcc.gnu.org>
PR fortran/24789
* gfortran.dg/auto_char_dummy_array_2.f90: New test.
20041106-1.c, [...]: Match "attribute ignored" warnings when "packing" is the same as the ABI layout.
* gcc.dg/20041106-1.c, gcc.dg/20030321-1.c, gcc.dg/pr17112-1.c,
gcc.dg/pr17112-1.c, g++.dg/other/packed1.C,
g++.dg/other/crash-4.C, g++.dg/ext/packed8.C: Match "attribute
ignored" warnings when "packing" is the same as the ABI layout.