2005-03-08 Eric Botcazou <ebotcazou@adacore.com>
* s-osinte-tru64.ads, s-osinte-tru64.adb (Get_Stack_Base): New function
(Hide_Yellow_Zone): New procedure to hide the Yellow Zone of the
calling thread.
(Stack_Base_Available): New flag.
(Get_Page_Size): New overloaded functions imported from C.
(PROT_NONE, PROT_READ, PROT_WRITE, PROT_EXEC, PROT_ALL,
PROT_ON, PROT_OFF): New constants.
(mprotect): New function imported from C.
(pthread_teb_t): New record type.
* s-taprop-tru64.adb: (Enter_Task): Invoke Hide_Yellow_Zone.
(Create_Task): Account for the Yellow Zone and the guard page.
From-SVN: r96479
2005-03-08 Robert Dewar <dewar@adacore.com>
* system-unixware.ads, system-linux-ia64.ads, system-freebsd-x86.ads,
system-lynxos-ppc.ads, system-lynxos-x86.ads, system-linux-x86_64.ads,
system-tru64.ads, system-aix.ads, system-vxworks-sparcv9.ads,
system-vxworks-xscale.ads, system-solaris-x86.ads, system-irix-o32.ads,
system-irix-n32.ads, system-hpux.ads, system-vxworks-m68k.ads,
system-linux-x86.ads, system-vxworks-mips.ads, system-os2.ads,
system-interix.ads, system-solaris-sparc.ads,
system-solaris-sparcv9.ads, system-vms.ads, system-mingw.ads,
system-vms-zcx.ads, system-vxworks-ppc.ads, system-vxworks-alpha.ads,
system-vms_64.ads, system-darwin-ppc.ads, system-vxworks-x86.ads,
system-linux-ppc.ads, system-linux-alpha.ads, system-linux-sparc.ads,
system-linux-s390.ads, system-linux-s390x.ads: Add line defining
Compiler_System_Version to be False.
* opt.ads: Add new flag Opt.Address_Is_Private
* targparm.ads, targparm.adb: Set new flag Opt.Address_Is_Private
Add new parameter Compiler_System_Version to avoid checking for
completeness of parameters when compiler is compiling itself.
Allows old versions of GNAT to be compiled with new compiler.
From-SVN: r96478
PR rtl-optimization/20291
* combine.c (try_combine): If splitting fails, re-try with
original combined pattern, i.e. before clobber stripping.
From-SVN: r96476
* real.h (struct real_format): Split the signbit field into two
two fields, signbit_ro and signbit_rw.
* real.c (ieee_single_format, mips_single_format, ieee_double_format,
mips_double_format, ieee_extended_motorola_format,
ieee_extended_intel_96_format, ieee_extended_intel_96_round_53_format,
ieee_extended_intel_128_format, ibm_extended_format,
mips_extended_format, ieee_quad_format, mips_quad_format,
vax_f_format, vax_d_format, vax_g_format, i370_single_format,
i370_double_format, c4x_single_format, c4x_extended_format,
real_internal_format): Update initializers for new field.
* builtins.c (expand_builtin_signbit): Use signbit_ro field of the
real_format structure.
* optabs.c (expand_absneg_bit, expand_copysign): Use signbit_rw
field of the real_format structure.
From-SVN: r96471
2005-03-15 Feng Wang <fengwang@nudt.edu.cn>
* trans-stmt.c (gfc_trans_label_assign): Don't set DECL_ARTIFICIAL flag
to zero on label_tree.
From-SVN: r96468
fortran/
2005-03-15 Feng Wang <fengwang@nudt.edu.cn>
PR fortran/18827
* io.c (resolve_tag): Add checking on assigned label.
(match_dt_format): Does not set symbol assign attribute.
* match.c (gfc_match_goto):Does not set symbol assign attribute.
* resolve.c (resolve_code): Add checking on assigned label.
* trans-common.c (build_field): Deals with common variable assigned
a label.
* trans-stmt.c (gfc_conv_label_variable): New function.
(gfc_trans_label_assign): Use it.
(gfc_trans_goto): Ditto.
* trans-io.c (set_string): Ditto.
* trans.h (gfc_conv_label_variable): Add prototype.
testsuite/
2005-03-15 Feng Wang <fengwang@nudt.edu.cn>
PR fortran/18827
* gfortran.dg/assign_2.f90: New test.
* gfortran.dg/assign_3.f90: New test.
* gfortran.dg/assign.f90: New test.
From-SVN: r96467
2005-03-14 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/20458
* tree-flow-inline.h (mark_call_clobbered): Don't fiddle
DECL_EXTERNAL on STRUCT_FIELD tags.
(clear_call_clobbered): Ditto.
* tree-ssa-operands.c (note_addressable): Make sure the original
variable doesn't slip into the addressable list if we have
subvars.
* tree-tailcall.c (suitable_for_tail_opt_p): Look at STRUCT_FIELD
tags too.
From-SVN: r96462
* config.gcc (extra_options): New variable for listing option files.
Add ${cpu_type}/${cpu_type}.opt to it if that file exists.
* configure.ac (extra_opt_files): New AC_SUBST variable.
(tm_file_list, tm_include_list): Include options.h first.
* configure: Regenerate.
* Makefile.in (extra_opt_files, ALL_OPT_FILES): New variables.
(s-options): Use $(ALL_OPT_FILES) instead of $(lang_opt_files)
(s-options-h): New rule.
(options.h): Depend on it.
(TEXI_GCCINT_FILES): Add options.texi.
* hooks.h (hook_bool_size_t_constcharptr_int_true): Declare.
* hooks.c (hook_bool_size_t_constcharptr_int_true): New function.
* target.h (gcc_target): Add default_target_flags and handle_option.
* target-def.h (TARGET_DEFAULT_TARGET_FLAGS)
(TARGET_HANDLE_OPTION): New macros.
(TARGET_INITIALIZER): Include them.
* opt-functions.awk (opt_args, nth_arg): New functions.
(switch_flags): Handle the "Target" flag.
(var_args): Delete.
(var_name): Use opt_args and nth_arg.
(var_set, var_ref): Likewise. Handle "Mask" and "InverseMask".
* opth-gen.awk: Declare target_flags. Declare MASK_* and TARGET_*
macros for the "Mask" and "InverseMask" options.
* opts.h (cl_var_cond): New enum.
(cl_option): Replace the "has_set_value" and "set_value" fields with
"var_cond" and "var_value".
(CL_TARGET): New macro.
(option_enabled, print_filtered_help): Declare.
(decode_options): Move definition.
* opts.c (handle_option): Search for the original option before
removing any "no-" prefix. Handle CL_TARGET. Adjust for the new
var_cond and var_value fields. Use targetm.handle_option to handle
target options.
(decode_options): Set target_flags to targetm.default_target_flags.
(print_filtered_help): Make global. Handle CL_TARGET.
(option_enabled): New function.
* toplev.c (target_switches): Guard with #ifdef TARGET_SWITCHES.
(display_target_options, set_target_switch, print_switch_values)
(default_pch_valid_p): Guard uses of target_switches with
#ifdef TARGET_SWITCHES. Also...
(display_target_options): Display the CL_TARGET entries in cl_options.
(set_target_option): Don't complain about the "" option when
TARGET_SWITCHES is undefined.
(print_switch_values): Use option_enabled.
(default_pch_valid_p): Check cl_options[] when looking for something
that has changed the value of target_flags.
* c.opt: Remove documentation from top of file.
* doc/gccint.texi: Add an "Options" chapter. Include options.texi.
* doc/sourecebuild.texi: Refer to the new options documentation
instead of c.opt. Document machine-specific .opt files.
* doc/tm.texi (target_flags): Say that this variable is declared
by options.h.
(TARGET_DEFAULT_TARGET_FLAGS, TARGET_HANDLE_OPTION): Document.
(TARGET_SWITCHES, TARGET_OPTIONS): Refer to the option files as
an alternative.
* doc/options.texi: New file.
From-SVN: r96448
gcc/ChangeLog:
PR middle-end/18628
* cse.c (fold_rtx_mem): Don't fold a load from a jumptable into a
register.
gcc/testsuite/ChangeLog:
* gcc.dg/pr18628.c: New.
From-SVN: r96445
gcc/ChangeLog:
PR c++/20280
* gimplify.c (gimplify_cond_expr): Add fallback argument. Use a
temporary variable of pointer type if an lvalues is required.
(gimplify_modify_expr_rhs): Request an rvalue from it.
(gimplify_expr): Pass fallback on.
gcc/testsuite/ChangeLog:
PR c++/20280
* g++.dg/tree-ssa/pr20280.C: New.
From-SVN: r96444
PR rtl-optimization/17236
* optabs.c (expand_doubleword_mult): New helper function split out
from expand_binop. Permute the order in which instructions are
emitted to minimize the number of simultaneously live registers.
(expand_binop): Call expand_doubleword_mult to synthesize a double
word multiplication.
From-SVN: r96441
* basic-block.h: Update the prototypes of cached_make_edge and
rtl_make_eh_edge.
* cfg.c (cached_make_edge): Take edge_cache representing one
row of the adjacency matrix of edges.
* cfgbuild.c (make_label_edge, rtl_make_eh_edge): Likewise.
(make_edges): Initialize edge_cache to represent one row of
the adjacency matrix of edges.
From-SVN: r96440
* tree-ssa-phiopt.c (minmax_replacement, blocks_in_phiopt_order):
New functions.
(tree_ssa_phiopt): Use blocks_in_phiopt_order and minmax_replacement.
Remove unused removed_phis variable.
(conditional_replacement): Use build1/build2.
(abs_replacement): Use last_and_only_stmt and build1/build2.
* gcc.dg/tree-ssa/phi-opt-5.c: New test.
From-SVN: r96439
* tree-cfg.c (find_taken_edge_cond_expr): Use zero_p instead of
integer_zerop.
* tree-gimple.c (is_gimple_min_invariant): Consider overflowed
constants invariant.
* fortran/trans-intrinsic.c (gfc_conv_intrinsic_ishft): Convert
the argument of the shift to the unsigned type.
From-SVN: r96435
* regclass.c (reg_class_superclasses, reg_class_subclasses):
Make them static.
* hard-reg-set.h: Remove the corresponding declarations.
From-SVN: r96410
PR middle-end/19331
* tree.c (get_unwidened): Treat CONVERT_EXPR and NOP_EXPR identically.
* fold-const.c (fold_sign_changed_comparison): Likewise.
(fold_binary): Optimize comparisons against widened operands if
the extension is represented by a CONVERT_EXPR, same as a NOP_EXPR.
From-SVN: r96397
* config/sparc/sparc.c (struct_value_alias_set): New global variable.
(sparc_override_options): Initialize it.
(sparc_struct_value_rtx): Set it on the MEM to be returned.
From-SVN: r96395
fortran/
PR fortran/16907
* resolve.c (gfc_resolve_index): Allow REAL indices as an extension.
testsuite/
PR fortran/16907
* gfortran.dg/real_index_1.f90: New test.
From-SVN: r96385