2005-12-05 Geoffrey Keating <geoffk@apple.com>
* config/darwin.c (machopic_select_section): It's not defined
as weak if it's only marked as weak_import.
Index: gcc/testsuite/ChangeLog
2005-12-05 Geoffrey Keating <geoffk@apple.com>
* gcc.dg/darwin-weakimport-3.c: New.
From-SVN: r108076
2005-12-05 Geoffrey Keating <geoffk@apple.com>
* 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.
Index: gcc/testsuite/ChangeLog
2005-12-05 Geoffrey Keating <geoffk@apple.com>
* 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.
From-SVN: r108074
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.
From-SVN: r108069
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.
From-SVN: r108065
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>
* acx.m4 (GCC_TARGET_TOOL): New.
From-SVN: r108059
libada:
2005-12-05 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in (FLAGS_TO_PASS): Add GCC_FOR_TARGET.
gcc/ada:
2005-12-05 Paolo Bonzini <bonzini@gnu.org>
* Makefile.in (gnatlib): Fix regex, using \. instead of . when
a period is meant.
From-SVN: r108058
2005-12-05 Jan Beulich <jbeulich@novell.com>
* config/ia64/ia64.md (rotlsi3_internal): Don't split if rotating by
16 bits. Provide insn pattern for this case.
From-SVN: r108047
2005-12-05 Jan Beulich <jbeulich@novell.com>
* libgcc2.c (__popcountSI2): Don't use wide type for iterator and
result.
(__popcountDI2): Likewise.
From-SVN: r108046
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.
From-SVN: r108039
* c-typeck.c (null_pointer_constant_p): New function.
(build_conditional_expr, build_c_cast, convert_for_assignment,
build_binary_op): Use it.
testsuite:
* gcc.dg/c90-const-expr-5.c, gcc.dg/c99-const-expr-5.c: New tests.
From-SVN: r108022
* 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.
testsuite:
* gcc.dg/format/cast-1.c: New test.
From-SVN: r108020
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.
From-SVN: r108018
* 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.
From-SVN: r108001
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.
From-SVN: r107999
* 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.
From-SVN: r107990
* src/powerpc/ffi.c: Formatting.
(ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
(ffi_prep_args64): Likewise.
From-SVN: r107963
* 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.
From-SVN: r107962
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.
From-SVN: r107955