* config/i386/i386-protos.h: Add a prototype for
ix86_reverse_condition.
* config/i386/i386.c (ix86_reverse_condition): New.
* config/i386/i386.h (REVERSE_CONDITION): Use
ix86_reverse_condition.
* config/i386/i386.md: Use ix86_reverse_condition instead of
REVERSE_CONDITION.
From-SVN: r79556
2004-03-16 Paolo Bonzini <bonzini@gnu.org>
* combine.c (combine_simplify_rtx): Remove the "last"
parameter and its documentation. Adjust recursive calls.
(simplify_logical): Always perform the only simplification
controlled by "last", if the simplified expression is
actually different.
(try_combine): Do not pass the "last" parameter to
combine_simplify_rtx.
From-SVN: r79534
2004-03-15 Ian Lance Taylor <ian@wasabisystems.com>
* config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
Fix the check for abort and only do the mmap if we can.
From-SVN: r79512
* config/sparc/sparc.h: Rework comments about the code model
in 64-bit environment and the mode 'Pmode'.
* doc/invoke.texi (SPARC options): Rework description of the
different code models supported in 64-bit environment.
From-SVN: r79509
* doc/contrib.texi, doc/extend.texi, doc/gcov.texi,
doc/install.texi, doc/invoke.texi, doc/makefile.texi,
doc/sourcebuild.texi, doc/tm.texi, doc/trouble.texi: Capitalize
"gcc", "g++" and "g77" or mark up with appropriate markup. Adjust
wording and grammar.
From-SVN: r79482
2004-03-14 Andreas Tobler <a.tobler@schweiz.ch>
* doc/install.texi: Reflect autoconf and automake version for
libffi. Update autoconf version to 2.59.
From-SVN: r79474
PR middle-end/14470
* expr.c (store_expr): Call emit_queue before generating the move
from the temporary to the original target. Protect the temporary
from emit_queue.
From-SVN: r79452
PR target/14533
* config/s390/s390.c (legitimize_pic_address): Don't abort on UNSPEC
other than UNSPEC_GOTOFF.
* gcc.dg/20040311-2.c: New test.
From-SVN: r79442
2003-03-12 Andrew Pinski <apinski@apple.com>
* config/rs6000/host-darwin.c (darwin_rs6000_gt_pch_use_address):
Use ret instead of result. Use addr instead of base.
From-SVN: r79404
* doc/install.texi (*-ibm-aix*): Document assembler and achiver
fixes required by libstdc++ and update installation instructions
for libstdc++.a.
From-SVN: r79401
* combine.c (unmentioned_reg_p): New function to check whether an
expression is a "specialization" of another, i.e. that there are
no registers or memory references mentioned in the first that don't
appear in the second.
(unmentioned_reg_p_1): New helper subroutine of unmentioned_reg_p.
(combine_instructions): Also try combining instructions using the
REG_EQUAL note from a preceding log-linked instruction.
From-SVN: r79398
* target.h (struct gcc_target): New target hook, unwind_label.
* target-def.h (TARGET_ASM_EMIT_UNWIND_LABEL): New hook.
* output.h (default_emit_unwind_label): New function.
* default.h (TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): New macro.
(TARGET_USES_WEAK_UNWIND_INFO): New target macro.
(TARGET_SUPPORTS_HIDDEN): New target macro.
* dwarf2out.c (struct dw_fde_struct): Add field for function decl
that corresponds to this FDE.
(FRAME_BEGIN_LABEL): Allow target to override default label.
(output_call_frame_info): If FDEs are linknonce, then use extra
indirection for FDE encoding, output a label for each FDE, and
output an empty label for each function without an FDE.
(dwarf2out_begin_prologue): Set up decl field when creating an FDE.
* varasm.c (globalize_decl): Call ASM_MAKE_LABEL_LINKONCE for
decls with DECL_ONE_ONLY set, if that macro is defined.
(make_decl_one_only): Don't use DECL_COMMON if we're compiling
for a SUPPORTS_ONE_ONLY target.
* config/darwin-protos.h (darwin_unique_section): Declare.
(darwin_asm_named_section): Likewise.
(darwin_section_type_flags): Likewise.
(darwin_non_lazy_pcrel): Likewise.
(darwin_emit_unwind_label): Likewise.
(darwin_make_decl_one_only): Likewise.
* config/darwin.c (machopic_finish): Get rid of tweak that
eliminate stubs for symbols that are defined.
(darwin_encode_section_info): Don't treat weak functions as defined.
(darwin_make_decl_one_only): Define.
(darwin_asm_named_section): Likewise.
(darwin_section_type_flags): Likewise.
(darwin_unique_section): Likewise.
(darwin_emit_unwind_label): Likewise.
(darwin_non_lazy_pcrel): Likewise.
(darwin_asm_output_dwarf_delta): Difference between two labels is
local only if both labels are local.
* config/darwin.h (MAKE_DECL_ONE_ONLY): Define.
(ASM_MAKE_LABEL_LINKONCE): Likewise.
(TARGET_SUPPORTS_HIDDEN): Likewise.
(TARGET_USES_WEAK_UNWIND_INFO): Likewise.
(TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY): Likewise.
(FRAME_BEGIN_LABEL): Likewise.
(ASM_DECLARE_OBJECT_NAME): Make references to weak symbols indirect.
(ASM_DECLARE_FUNCTION_NAME): Likewise.
(darwin_eh_frame_section): Give __eh_frame section the coalesced flag.
(TARGET_ASM_UNIQUE_SECTION): Define.
(EH_FRAME_SECTION_NAME): Define.
(EH_FRAME_SECTION_ATTR): Likewise.
(ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX): Likewise.
(TARGET_ASM_NAMED_SECTION): Likewise.
(TARGET_SECTION_TYPE_FLAGS): Likewise.
* doc/tm.texi: Document TARGET_USES_WEAK_UNWIND_INFO,
TARGET_EXPLICIT_INSTANTIATIONS_ONE_ONLY, TARGET_SUPPORTS_HIDDEN,
TARGET_ASM_EMIT_UNWIND_LABEL.
* cp/decl2.c (maybe_make_one_only): Look at
TARGET_EXPLICIT_INSTANTIATION_ONE_ONLY when deciding whether
to make an explicit instantiation weak.
* cp/method.c (use_thunk): Make sure we call comdat_linkage
when appropriate.
* cp/pt.c (do_type_instantiation): On systems where weak symbols
don't go in a static archive's TOC, explicit instantiation of a
class must imply *explicit* instantiation of its memeber.
From-SVN: r79394
* config/alpha/alpha.c (xfloating_ops, vax_cvt_ops): New.
(alpha_lookup_xfloating_lib_func): Use them, return rtx.
(alpha_emit_xfloating_arith): Update to match.
(alpha_emit_xfloating_compare): Likewise.
(alpha_emit_xfloating_cvt): Likewise.
(alpha_emit_xfloating_libcall): Take already built symbol,
mark call const.
* config/alpha/alpha.md (extendsftf2, extenddftf2): Take
op1 in a register.
From-SVN: r79371
PR target/14262
* calls.c (load_register_parameters): If BLOCK_REG_PADDING is not
defined, pass small BLKmode values in registers in the low-order part.
* gcc.dg/20040305-2.c: New test.
From-SVN: r79348
ChangeLog:
* combine.c (if_then_else_cond): Check for NULL return value of
simplify_gen_subreg.
testsuite/ChangeLog:
* gcc.dg/20040310-1.c: New test.
From-SVN: r79347
* fold-const.c (negate_expr_p) <RSHIFT_EXPR>: We can optimize
-((int)X>>C) where C is an integer constant one bit less than the
size of X into (unsigned)X>>C. Similarly for unsigned->signed.
(negate_expr) <RSHIFT_EXPR>: Implement the above transformations.
* simplify-rtx.c (simplify_unary_operation): Also implement the
above transformations at the RTL level.
* gcc.c-torture/execute/20040311-1.c: New test case.
From-SVN: r79334
* config/mips/mips.md: Use move_operand in splitters for 64-bit moves.
(movdi, movsi, movhi, movqi, movsf, movdf): Remove predicates.
(*movdi_32bit_mips16, *movsi_mips16, *movhi_mips16, *movqi_mips16)
(*movsf_mips16, *movdf_mips16): Name unnamed patterns. Use
move_operand as source predicate in all cases.
(*movdi_32bit): Renamed from movdi_internal. Remove 'F' constraint.
Test reg_or_0_operand. Use move_operand as source predicate.
(*movdi_64bit): Renamed from movdi_internal2. Test reg_or_0_operand.
(*movdi_64bit_mips16): Renamed from movdi_internal2_mips16.
(*movsi_internal): Renamed from movsi_internal. Test reg_or_0_operand.
(movhi, movqi, movsf, movdf): Use mips_legitimize_move.
(*movhi_internal): Renamed from movhi_internal. Test reg_or_0_operand.
Use move_operand as source predicate. Remove 'K' constraint.
(*movqi_internal): Likewise movqi_internal.
(*movsf_hardfloat): Renamed from movsf_internal1. Test
reg_or_0_operand. Use move_operand as source predicate.
(*movsf_softfloat): Likewise movsf_internal2.
(*movdf_hardfloat_64bit): Likewise movsf_internal1a.
(*movdf_hardfloat_32bit): Likewise movsf_internal1b.
(*movdf_softfloat): Likewise movdf_internal2.
* config/mips/mips.c (move_operand): Match arbitrary CONST_INTs
for DImode if !TARGET_64BIT.
(mips_legitimize_move): Simplify accordingly.
From-SVN: r79309
PR/14362
* var-tracking.c (struct variable_def): Added field refcount.
(variable_htab_free): Decrease the refcount and delete variable
only if there are no more references.
(unshare_variable): New function.
(vars_copy_1): Increase refcount instead of copying the variable.
(variable_union): Share the variables where possible, unshare
the variables if needed.
(variable_different_p): Return false if var1 and var2 are
the same structure.
(variable_was_changed): Init the refcount of new variable.
(set_frame_base_location): Unshare variable if needed.
(set_variable_part): Init the refcount of new variable.
Unshare the variables if needed.
(delete_variable_part): Unshare the variables if needed.
(emit_notes_for_differences_1): Init the refcount of new variable.
(vt_add_function_parameters): Do not add function parameters to
IN set of ENTRY_BLOCK_PTR because it is unused anyway.
(vt_initialize): Do not add frame_base_decl to IN set of
ENTRY_BLOCK_PTR because it is unused anyway.
From-SVN: r79307
2004-03-08 Paolo Bonzini <bonzini@gnu.org>
PR ada/14131
Move language detection to the top level.
* configure.in: Find default values for the tools as
soon as possible. Disable ada if GNAT is not found.
Emit error message about missing languages. Expand
--enable-languages=all for the gcc subdirectory.
(config)
2004-03-08 Paolo Bonzini <bonzini@gnu.org>
PR ada/14131
Move language detection to the top level.
* acx.m4 (ACX_PROG_GNAT): New macro, moved here
from the gcc subdirectory.
(gcc)
2004-03-08 Paolo Bonzini <bonzini@gnu.org>
PR ada/14131
Move language detection to the top level.
* configure.ac: Remove code to detect languages,
it now lives exclusively in the top level.
* aclocal.m4 (gcc_AC_PROG_GNAT): Moved to the
top level, renamed to ACX_PROG_GNAT.
(gcc/ada)
2004-03-08 Paolo Bonzini <bonzini@gnu.org>
PR ada/14131
Move language detection to the top level.
* config-lang.in: Build by default.
From-SVN: r79299
2004-03-10 Uros Bizjak <uros@kss-loka.si>
* optabs.h (enum optab_index): Add new OTI_exp10 and OTI_exp2.
(exp10_optab, exp2_optab): Define corresponding macros.
* optabs.c (init_optabs): Initialize exp10_optab and exp2_optab.
* genopinit.c (optabs): Implement exp10_optab and exp2_optab
using exp10?f2 and exp2?f2 patterns.
* builtins.c (expand_builtin_mathfn): Handle BUILT_IN_EXP10{,F,L}
using exp10_optab, and BUILT_IN_EXP2{,F,L} using exp2_optab.
(expand_builtin): Expand BUILT_IN_EXP10{,F,L} and BUILT_IN_EXP2{,F,L}
using expand_builtin_mathfn if flag_unsafe_math_optimizations is set.
* config/i386/i386.md (exp10sf2, exp10df2, exp10xf2, exp2sf2,
exp2df2, exp2xf2): New patterns to implement exp10, exp10f, exp10l,
exp2, exp2f and exp2l built-ins as inline x87 intrinsics.
* gcc.dg/builtins-34.c: New test.
From-SVN: r79279
2004-03-10 Andrew Haley <aph@redhat.com>
PR optimization/14381
* function.c (expand_function_end): Emit a blockage insn before
the epilogue when -fnon-call-exceptions is used.
* except.c (expand_start_all_catch): Make comment more accurate.
From-SVN: r79266
2004-03-10 Andrew Haley <aph@redhat.com>
* function.c (expand_function_end): Emit a blockage insn before
the epilogue when -fnon-call-exceptions is used.
* except.c (expand_start_all_catch): Make comment more accurate.
From-SVN: r79265
(last_function_parm_others, current_function_parms)
(current_function_parm_tags, current_function_parm_others):
Delete.
(ARG_INFO_PARMS, ARG_INFO_TAGS, ARG_INFO_TYPES, ARG_INFO_OTHERS):
New macros.
(grokdeclarator): For function definitions, save the arg-info
block from the declarator in DECL_ARGUMENTS.
(grokparms): Do not write to last_function_parm*. Use ARG_INFO_*
macros to operate on arg-info block. Can assume ARG_INFO_PARMS
contains only PARM_DECLs. Improve diagnostics.
(get_parm_info): Use ARG_INFO_* macros. Improve comments and
diagnostics. Disable some expensive checks if not ENABLE_CHECKING.
(store_parm_decls_newstyle): Take the function to operate on,
and an arg-info block, as arguments; don't get anything from
current_function_* globals.
(store_parm_decls_oldstyle): Likewise.
(store_parm_decls): Pass fndecl and its arg-info block down to
store_parm_decls_newstyle/oldstyle. Send functions with empty
argument lists through store_parm_decls_newstyle to reduce
overhead.
(pushdecl): Comment on the problems with the call to copy_node.
Clear DECL_ARGUMENTS of the old node after copying it, if it
is an arg-info block instead of a chain of decls.
(start_function): Do not manipulate current_function_parm* or
last_function_parm*.
* testsuite/gcc.dg/noncompile/incomplete-2.c: Move dg-error to
proper line.
From-SVN: r79206
* ifcvt.c (noce_try_sign_mask): New function to transform
"x = (y < 0) ? z : 0" into the equivalent "x = (y >> C) & z".
(noce_process_if_block): Call noce_try_sign_mask.
* gcc.c-torture/execute/20040309-1.c: New test case.
Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>
From-SVN: r79205
2004-03-08 Eric Christopher <echristo@redhat.com>
* Makefile.in (site.exp): Add libiconv variable definition.
2004-03-08 Eric Christopher <echristo@redhat.com>
* * lib/target-supports.exp: Enable libiconv in test
compilation. Fix up error checking.
From-SVN: r79148
PR middle-end/14289
* c-typeck.c (c_mark_addressable): A register variable should
be considered global if its not automatic, i.e. TREE_PUBLIC,
TREE_STATIC or DECL_EXTERNAL.
* function.c (put_var_into_stack): Call abort when placing a
hard register into the stack, if x_parm_reg_stack_loc is NULL.
* gcc.dg/pr14289-1.c: New test case.
* gcc.dg/pr14289-2.c: Likewise.
* gcc.dg/pr14289-3.c: Likewise.
From-SVN: r79127
* expr.c (highest_pow2_factor_for_type): Rename into
highest_pow2_factor_for_target. Use DECL_ALIGN instead of
TYPE_ALIGN when the target is a COMPONENT_REF.
(expand_assignment): Ajust call to highest_pow2_factor_for_type.
From-SVN: r79101
* config/rs6000/rs6000.c (rs6000_override_options): Don't override
-msoft-float by -mcpu. Consolidate similar code for MASK_MULTIPLE
and MASK_STRING.
From-SVN: r79094
* config/rs6000/rs6000.md (ashrdi3): Do not call ashrdi3_no_power
for little endian.
("ashrdi3_no_power"): Disable for little endian.
(ashrdi3): Same.
From-SVN: r79092
PR target/14471
* configure.ac (Target-specific assembler checks) <cris-*-*>: New
case, checking for -no-mul-bug-abort option.
* configure, config.in: Regenerate.
* doc/invoke.texi (CRIS Options): Document -mmul-bug-workaround
and -mno-mul-bug-workaround.
* config/cris/cris.md ("smulsi3_highpart", "umulsi3_highpart")
("mulsidi3", "umulsidi3"): Prefix output template with "%!".
("umulhisi3", "umulqihi3", "mulsi3", "mulqihi3", "mulhisi3"):
Ditto. Make attribute "slottable" dependent on TARGET_MUL_BUG.
* config/cris/mulsi3.asm (__Mul) [__CRIS_arch_version >= 10]: Make
sure mulu.d is not last on cache-line.
* config/cris/cris.h (ASM_SPEC): Translate -mno-mul-bug-workaround
into -no-mul-bug-abort depending on HAVE_AS_MUL_BUG_ABORT_OPTION.
(TARGET_MASK_MUL_BUG, TARGET_MUL_BUG): New macros.
(TARGET_SWITCHES): New options -mmul-bug-workaround and
-mno-mul-bug-workaround.
(TARGET_DEFAULT): Include TARGET_MASK_MUL_BUG.
(PRINT_OPERAND_PUNCT_VALID_P): Include '!'.
* config/cris/cris.c (cris_operand_extend_operator): Clarify
relation to MULT in head comment.
(cris_op_str): Abort for MULT.
(cris_print_operand) <case '!'>: New case.
From-SVN: r79085
* config/m68hc11/m68hc11.md ("*lshrsi3_const"): Disable for 68HC12.
("*lshrsi3"): Also accept an immediate for 68HC12.
("*ashrsi3_const"): Likewise.
("*ashrsi3"): Likewise.
("*ashlsi3_const"): Likewise.
("*ashlsi3"): Likewise.
("cmphi_1_hc12"): Compare two hard register by pushing them and
comparing with a pop; don't use a split for that.
("cmphi split"): Disable compare split for 68HC12.
* config/m68hc11/m68hc11.c (m68hc11_notice_update_cc): Invalidate
the status operands if they have side effects.
From-SVN: r79068
* config/m68hc11/m68hc11.c (m68hc11_gen_movhi): Use 2,-sp to push
the stack register.
(expand_prologue): Don't make an interrupt or a trap handler a far
symbol.
(m68hc11_initial_elimination_offset): Likewise.
From-SVN: r79058
* collect2.c (main): Only export initfunc and finifunc if
LD_INIT_SWITCH not defined.
(scan_prog_file): Only export constructors and destructors if
LD_INIT_SWITCH not defined. Only export symbols not found in
shared objects.
From-SVN: r79031
* pa.md (icacheflush): Reorder operands to make match_scratch operand
last.
* pa.h (INITIALIZE_TRAMPOLINE): Remove unnecessary scratch argument
from calls to gen_icacheflush.
From-SVN: r79029
[gcc/ChangeLog]
2004-03-05 Ziemowit Laski <zlaski@apple.com>
* objc/objc-act.c (synth_module_prologue): Const-qualify
objc_selector type if using the GNU runtime; fix generated
signatures for objc_msg_lookup and objc_msg_lookup_super
to match what GNU ObjC headers provide; reformat and clean up.
(synth_self_and_ucmd_args): Use previously constructed (and
hence possibly const-qualified) objc_selector type.
From-SVN: r79004
* config/xtensa/xtensa.c (function_arg): Handle 16-byte aligned args.
(xtensa_va_start): Initialize __va_stk to ($arg_ptr - 32). Adjust
__va_ndx by 2 words when referencing an argument on the stack.
(xtensa_va_arg): Handle 16-byte aligned args. Adjust __va_ndx by 2
words when an arg on the stack is first seen.
From-SVN: r78990
* configure.ac: When passing --enable-languages to subdir
configure when host != build, make sure we don't pass an empty
value.
* configure: Regenerate.
From-SVN: r78969
2004-03-05 Paolo Bonzini <bonzini@gnu.org>
* simplify-rtx.c (simplify_relational_operation): If
flag_wrapv is set, do not move terms between the two
side of a relational operator.
From-SVN: r78962
2004-02-18 Paolo Bonzini <bonzini@gnu.org>
* cse.c (cse_end_of_basic_block): Make static.
* local-alloc.c (function_invariant_p): Move to
reload1.c.
* loop.c (libcall_other_reg, record_excess_regs):
Make static.
* reload1.c (function_invariant_p): Moved here
from local-alloc.c, made static.
* rtl.h (cse_end_of_basic_block, function_invariant_p,
libcall_other_reg, record_excess_regs): Remove
declarations.
From-SVN: r78960
* ggc-common.c (gt_pch_restore): Don't unmap addr unless we are
going to call mmap again. Read the file into the right place.
Give a fatal error if we have to relocate.
From-SVN: r78957
PR other/14354
* config/fp-bit.c (_fpdiv_parts): Do not round when pack_d would
round the same. When rounding, clear bits that would cause a
second rounding in pack_d.
(_fpmul_parts): Ditto. Remove #if 0:d code.
From-SVN: r78954
* config/fp-bit.c (_fpdiv_parts): Do not round when pack_d would
round the same. When rounding, clear bits that would cause a
second rounding in pack_d.
(_fpmul_parts): Ditto. Remove #if 0:d code.
From-SVN: r78951
[gcc/ChangeLog]
2004-03-04 Ziemowit Laski <zlaski@apple.com>
PR c++/14425, c++/14426
* config/rs6000/altivec.h (vec_splat_s8, vec_splat_s16,
vec_splat_s32, vec_splat_u8, vec_splat_u16, vec_splat_u32):
Change C++ definitions to accept a 'const int' argument;
the prototypes already do.
* config/rs6000/rs6000.c (rs6000_common_init_builtins):
Rename v4si_ftype_char, v8hi_ftype_char, v16qi_ftype_char,
v4sf_ftype_v4si_char, v4si_ftype_v4sf_char, v4si_ftype_v4si_char,
v8hi_ftype_v8hi_char, v16qi_ftype_v16qi_char,
v16qi_ftype_v16qi_v16qi_char, v8hi_ftype_v8hi_v8hi_char,
v4si_ftype_v4si_v4si_char and v4sf_ftype_v4sf_v4sf_char to
end in ..._int; change them to accept an int instead of a char
as the last parameter.
[gcc/testsuite/ChangeLog]
2004-03-04 Ziemowit Laski <zlaski@apple.com>
PR c++/14425, c++/14426
* g++.dg/ext/altivec-4.C: New test.
* g++.dg/ext/altivec-5.C: New test.
From-SVN: r78940
* expr.c (expand_expr_real, case COMPONENT_REF): Get proper type of
stack slot for temp used for result of BLKmode but in integral mode.
From-SVN: r78937
* reload.c (find_reloads): Reorganize if seqeunce to switch.
* cfgrtl.c (rtl_redirect_edge_and_branch): Set the source BB as dirty.
(cfglayout_redirect_edge_and_branch): Set the source BB as dirty.
From-SVN: r78936
2004-03-04 Stuart Hastings <stuart@apple.com>
* gcc/config/i386/darwin.h: Darwin/x86 doesn't support CPUs before
686, tell Darwin assembler to allow prefetch insns, non-empty def
of SUBTARGET_OPTION_TRANSLATE_TABLE.
From-SVN: r78926
PR optimization/14282
* sched-deps.c (sched_analyze_insn): Allow a stack adjustment
between a call and the assignment of its return value.
From-SVN: r78925
2004-03-04 David Edelsohn <edelsohn@gnu.org>
GP <gp@qnx.com>
* config/rs6000/rs6000.c (output_function_profiler): Append @plt
when compiling PIC.
Co-Authored-By: GP <gp@qnx.com>
From-SVN: r78912