merge gcc-4-1-20080202-132073.
This commit is contained in:
parent
87e62584f4
commit
9805c65117
|
@ -3549,7 +3549,7 @@ case " $build_configdirs " in
|
|||
# For an installed makeinfo, we require it to be from texinfo 4.2 or
|
||||
# higher, else we use the "missing" dummy.
|
||||
if ${MAKEINFO} --version \
|
||||
| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
|
||||
| egrep 'texinfo[^0-9]*(4\.([2-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
MAKEINFO="$MISSING makeinfo"
|
||||
|
|
|
@ -2134,7 +2134,7 @@ changequote(,)
|
|||
# For an installed makeinfo, we require it to be from texinfo 4.2 or
|
||||
# higher, else we use the "missing" dummy.
|
||||
if ${MAKEINFO} --version \
|
||||
| egrep 'texinfo[^0-9]*([1-3][0-9]|4\.[2-9]|[5-9])' >/dev/null 2>&1; then
|
||||
| egrep 'texinfo[^0-9]*(4\.([2-9]|[1-9][0-9])|[5-9]|[1-9][0-9])' >/dev/null 2>&1; then
|
||||
:
|
||||
else
|
||||
MAKEINFO="$MISSING makeinfo"
|
||||
|
|
|
@ -1,3 +1,345 @@
|
|||
2008-02-01 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
Backport:
|
||||
2007-08-02 Nathan Froyd <froydnj@codesourcery.com>
|
||||
|
||||
PR middle-end/25445
|
||||
* varasm.c (default_binds_local_p_1): Consult flag_whole_program
|
||||
if we are compiling with -fPIC.
|
||||
|
||||
2008-01-31 Richard Henderson <rth@redhat.com>
|
||||
|
||||
PR c/34993
|
||||
* tree.c (build_type_attribute_qual_variant): Skip TYPE_DOMAIN
|
||||
for unbounded arrays.
|
||||
|
||||
2008-01-31 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* config/s390/fixdfdi.h (__fixunstfdi, __fixtfdi): Rearrange
|
||||
the overflow check to make it easier to read.
|
||||
(__fixtfdi): Change the type of the ll member in union
|
||||
long_double to UDItype_x.
|
||||
|
||||
2008-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
Backport:
|
||||
2007-11-07 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
PR middle-end/33826
|
||||
* ipa-pure-const (static_execute): Added code to keep recursive
|
||||
functions from being marked as pure or const.
|
||||
* ipa-utils (searchc): Fixed comment.
|
||||
|
||||
2008-01-16 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR libgfortran/34699
|
||||
* pa-hpux.h (LINK_SPEC): Only search /lib/pa1.1 and /usr/lib/pa1.1 on
|
||||
static links.
|
||||
* pa-hpux10.h (LINK_SPEC): Likewise.
|
||||
* pa-hpux11.h (LINK_SPEC): Don't search /lib/pa1.1 and /usr/lib/pa1.1.
|
||||
|
||||
2008-01-14 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
PR rtl-optimization/31944
|
||||
* cse.c (remove_pseudo_from_table): New function.
|
||||
(merge_equiv_classes): Use above function to remove pseudo-registers.
|
||||
(invalidate): Likewise.
|
||||
|
||||
2007-12-31 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
PR driver/33772
|
||||
* collect2.c (SHLIB_SUFFIX): Define if not defined.
|
||||
(write_c_file_stat): Use SHLIB_SUFFIX.
|
||||
* som.h (SHLIB_SUFFIX): Define.
|
||||
* doc/tm.texi (SHLIB_SUFFIX): Document.
|
||||
|
||||
2007-12-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/34003
|
||||
* c-decl.c (merge_decls): Copy RTL from olddecl to newdecl.
|
||||
* config/pa/pa.c (pa_encode_section_info): If !first, preserve
|
||||
SYMBOL_FLAG_REFERENCED flag.
|
||||
|
||||
2007-12-19 Kaz Kylheku <kaz@zeugmasystems.com>
|
||||
|
||||
PR rtl-optimization/34456
|
||||
* resource.c (mark_set_resources): Use regs_invalidated_by_call
|
||||
rather than call_used_regs and global_regs.
|
||||
|
||||
2007-11-29 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
Backport from mainline:
|
||||
2007-11-17 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/34130
|
||||
* fold-const.c (extract_muldiv_1): Do not move negative
|
||||
constants inside ABS_EXPR.
|
||||
|
||||
2007-11-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/34030
|
||||
* fold-const.c (fold_binary): Use correct types for folding
|
||||
1 << X & Y to Y >> X & 1.
|
||||
|
||||
2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/33822
|
||||
* rtl.h (REG_OFFSET): Fix comment.
|
||||
* var-tracking.c (INT_MEM_OFFSET): New macro.
|
||||
(var_mem_set): Use it.
|
||||
(var_mem_delete_and_set): Likewise.
|
||||
(var_mem_delete): Likewise.
|
||||
(vt_get_decl_and_offset): Likewise.
|
||||
(offset_valid_for_tracked_p): New predicate.
|
||||
(count_uses): Do not track locations with invalid offsets.
|
||||
(add_uses): Likewise.
|
||||
(add_stores): Likewise.
|
||||
|
||||
2007-11-04 Hirohisa Yamaguchi <umq@ueo.co.jp>
|
||||
|
||||
* config/freebsd-spec.h (FBSD_TARGET_OS_CPP_BUILTINS): Fix
|
||||
broken else-if chain.
|
||||
|
||||
2007-11-04 Gerald Pfeifer <gerald@pfeifer.com>
|
||||
|
||||
* config.gcc: Proactively add FreeBSD 10 and FreeBSD 11.
|
||||
* config/freebsd-spec.h (FBSD_TARGET_OS_CPP_BUILTINS): Ditto.
|
||||
|
||||
2007-11-02 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
Backport from mainline:
|
||||
2006-12-11 Zdenek Dvorak <dvorakz@suse.cz>
|
||||
|
||||
PR rtl-optimization/30113
|
||||
* loop-iv.c (implies_p): Require the mode of the operands to be
|
||||
scalar.
|
||||
|
||||
2007-10-30 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* ifcvt.c (noce_can_store_speculate_p): New static function.
|
||||
(noce_process_if_block): Call it.
|
||||
(find_if_header): Only call find_if_case_1 and find_if_case_2 if
|
||||
life_data_ok is set.
|
||||
(if_convert): Always compute postdominators.
|
||||
|
||||
2007-10-29 Janis Johnson <janis187@us.ibm.com>
|
||||
|
||||
* doc/invoke.texi (Option Summary, optimizations): Remove
|
||||
-fbounds-check. Show that the value for options -falign-jumps,
|
||||
-falign-labels, -falign-loops, -falign-functions,
|
||||
-fsched-stalled-insns, and -fsched-stalled-insns-dep is optional.
|
||||
Break up a long line. Add -ftree-vrp and -funit-at-a-time.
|
||||
(Option Summary, code gen options) Add -fno-stack-limit.
|
||||
* doc/invoke.texi (Option Summary, optimizations):
|
||||
(Optimization Options): Remove -fbounds-check, which is also
|
||||
documented under Code Generation Options. In the descriptions for
|
||||
-fsched-stalled-insns and -fsched-stalled-insns-dep, show the
|
||||
options with and without values. Change -fno-cprop-registers
|
||||
to -fcprop-registers to match other options, and say when it is
|
||||
enabled rather than disabled. Remove extra index entry for
|
||||
-fno-cx-limited-range. Add opindex for several optimization
|
||||
options, and fix typos in the opindex commands for several others.
|
||||
(Code Gen Options): Add index entry for -ftls-model.
|
||||
|
||||
2007-10-23 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* doc/rtl.texi (Flags): Fix MEM_SCALAR_P entry.
|
||||
Document MEM_POINTER. Replace mentions of "integrated"
|
||||
field with "return_val". Delete outdated stuff.
|
||||
|
||||
2007-10-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/rs6000/linux-unwind.h (ppc_fallback_frame_state): Point
|
||||
saved CR2 offset to low 32 bits of regs->ccr rather than the whole
|
||||
64-bit register in 64-bit libgcc.
|
||||
|
||||
2007-09-23 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
* configure.ac (ld_vers): Support GNU linker version xx.xx.*
|
||||
* configure: Regenerated.
|
||||
|
||||
2007-09-23 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* configure.ac (MAKEINFO): Handle makeinfo version 4.10 and above.
|
||||
* configure: Regenerated.
|
||||
|
||||
2007-09-13 H.J. Lu <hongjiu.lu@intel.com>
|
||||
|
||||
PR bootstrap/33418
|
||||
* configure.ac (ld_vers): Support Linux linker.
|
||||
* configure: Regenerated.
|
||||
|
||||
2007-09-06 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR target/33256
|
||||
* config/mips/mips.c (mips_classify_symbolic_expression): New function.
|
||||
(mips_classify_address): Use it instead of mips_symbolic_constant_p.
|
||||
(print_operand_reloc): Likewise.
|
||||
|
||||
2007-08-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/32912
|
||||
* fold-const.c (fold_binary): Only optimize X | ~X and X ^ ~X for
|
||||
integral types.
|
||||
|
||||
2007-08-22 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/33142
|
||||
* tree-vrp.c (extract_range_from_unary_expr): Compare with
|
||||
TYPE_MIN/MAX_VALUE using tree_int_cst_equal.
|
||||
|
||||
2007-08-21 Adam Nemet <anemet@caviumnetworks.com>
|
||||
|
||||
* config/mips/predicates.md (const_call_insn_operand): Invoke
|
||||
SYMBOL_REF_LONG_CALL_P only on SYMBOL_REFs.
|
||||
|
||||
2007-08-02 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md ("*xordi3_cconly"): Change xr to xg.
|
||||
|
||||
2007-08-01 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* config/s390/s390.md (TF in GPR splitter): Change operand_subword
|
||||
parameter to TFmode.
|
||||
|
||||
2007-07-16 Richard Guenther <rguenther@suse.de>
|
||||
Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
* tree-if-conv.c (find_phi_replacement_condition): Unshare "*cond"
|
||||
before forcing it to gimple operand.
|
||||
|
||||
2007-07-13 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
Revert these patches:
|
||||
|
||||
2007-07-09 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR middle-end/32004
|
||||
* function.c (rest_of_match_asm_constraints): Pass PROP_REG_INFO.
|
||||
|
||||
2007-07-06 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR middle-end/32004
|
||||
* function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
|
||||
pass_match_asm_constraints): New.
|
||||
* passes.c (init_optimization_passes): Add new pass.
|
||||
* stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
|
||||
* function.h (struct function): Add has_asm_statement bit.
|
||||
(current_function_has_asm_statement): New.
|
||||
* tree-pass.h (pass_match_asm_constraints): New.
|
||||
|
||||
2007-07-09 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR middle-end/32004
|
||||
* function.c (rest_of_match_asm_constraints): Pass PROP_REG_INFO.
|
||||
|
||||
2007-07-09 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR tree-optimization/32681
|
||||
* tree-if-conv.c (find_phi_replacement_condition): Use the condition
|
||||
saved in second_edge->aux when first_bb is a loop header.
|
||||
|
||||
2007-07-07 Anatoly Sokolov <aesok@post.ru>
|
||||
|
||||
PR target/31331
|
||||
* config/avr/avr.c (avr_naked_function_p): Handle receiving a type
|
||||
rather than a decl.
|
||||
(avr_attribute_table): Make "naked" attribute apply to function types
|
||||
rather than to decls.
|
||||
(avr_handle_fntype_attribute): New function.
|
||||
|
||||
2007-07-07 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/32660
|
||||
Backport from mainline.
|
||||
* config/i386/sse.md (*vec_extractv2di_1_sse2): New.
|
||||
(*vec_extractv2di_1_sse): New.
|
||||
|
||||
2007-07-06 Paolo Bonzini <bonzini@gnu.org>
|
||||
|
||||
PR middle-end/32004
|
||||
* function.c (match_asm_constraints_1, rest_of_match_asm_constraints,
|
||||
pass_match_asm_constraints): New.
|
||||
* passes.c (init_optimization_passes): Add new pass.
|
||||
* stmt.c (expand_asm_operands): Set cfun->has_asm_statement.
|
||||
* function.h (struct function): Add has_asm_statement bit.
|
||||
(current_function_has_asm_statement): New.
|
||||
* tree-pass.h (pass_match_asm_constraints): New.
|
||||
|
||||
2007-07-06 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR rtl-optimization/32450
|
||||
* function.c (thread_prologue_and_epilogue_insns): Emit blockage insn
|
||||
to ensure that instructions are not moved into the prologue when
|
||||
profiling is on.
|
||||
|
||||
2007-07-04 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR tree-optimization/31966
|
||||
PR tree-optimization/32533
|
||||
* tree-if-conv.c (add_to_dst_predicate_list): Use "edge", not
|
||||
"basic_block" description as its third argument. Update function
|
||||
calls to get destination bb from "edge" argument. Save "cond" into
|
||||
aux field of the edge. Update prototype for changed arguments.
|
||||
(if_convertible_loop_p): Clear aux field of incoming edges if bb
|
||||
contains phi node.
|
||||
(find_phi_replacement_condition): Operate on incoming edges, not
|
||||
on predecessor blocks. If there is a condition saved in the
|
||||
incoming edge aux field, AND it with incoming bb predicate.
|
||||
Return source bb of the first edge.
|
||||
(clean_predicate_lists): Clean aux field of outgoing node edges.
|
||||
(tree_if_conversion): Do not initialize cond variable. Move
|
||||
variable declaration into the loop.
|
||||
(replace_phi_with_cond_gimple_modify_stmt): Remove unneded
|
||||
initializations of new_stmt, arg0 and arg1 variables.
|
||||
|
||||
2007-07-04 Kaz Kojima <kkojima@gcc.gnu.org>
|
||||
|
||||
PR target/32506
|
||||
Backport from mainline.
|
||||
* config/sh/sh.md (udivsi3_i1_media): Use target_reg_operand
|
||||
predicate instead of target_operand.
|
||||
(divsi3_i1_media, divsi3_media_2): Likewise.
|
||||
|
||||
2007-07-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
|
||||
|
||||
PR target/28307
|
||||
* gthr-posix.h [SUPPORTS_WEAK && GTHREAD_USE_WEAK]
|
||||
(__gthrw_pragma): Provide default definition.
|
||||
(__gthrw2): Use it.
|
||||
* gthr-posix.c (__gthrw_pragma): Define.
|
||||
|
||||
2007-06-30 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* dwarf2out.c (dwarf2out_finish): Accept namespaces as context of
|
||||
limbo die nodes.
|
||||
|
||||
2007-06-28 Seongbae Park <seongbae.park@gmail.com>
|
||||
|
||||
* config/arm/arm.c (arm_get_frame_offsets): Set
|
||||
offsets->locals_base to avoid negative stack size.
|
||||
(thumb1_expand_prologue): Assert on negative stack size.
|
||||
|
||||
2007-06-28 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* config/rs6000/rs6000.c (rs6000_function_ok_for_sibcall): Ensure
|
||||
decl is non-external for AIX ABI.
|
||||
|
||||
2007-06-28 David Edelsohn <edelsohn@gnu.org>
|
||||
|
||||
* config/rs6000/predicates.md (current_file_function_operand):
|
||||
Ensure the symbol is non-external for AIX ABI.
|
||||
|
||||
2007-06-21 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/32389
|
||||
* config/i386/i386.h (enum ix86_stack_slot): Add SLOT_VIRTUAL.
|
||||
* config/i386/i386.c (assign_386_stack_local): Assert that
|
||||
SLOT_VIRTUAL is valid only before virtual regs are instantiated.
|
||||
(ix86_expand_builtin) [IX86_BUILTIN_LDMXCSR, IX86_BUILTIN_STMXCSR]:
|
||||
Use SLOT_VIRTUAL stack slot instead of SLOT_TEMP.
|
||||
* config/i386/i386.md (truncdfsf2, truncxfsf2, truncxfdf2): Ditto.
|
||||
|
||||
2007-06-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR inline-asm/32109
|
||||
|
|
|
@ -412,6 +412,10 @@ case ${target} in
|
|||
tm_defines="${tm_defines} FBSD_MAJOR=8" ;;
|
||||
*-*-freebsd9 | *-*-freebsd[9].*)
|
||||
tm_defines="${tm_defines} FBSD_MAJOR=9" ;;
|
||||
*-*-freebsd10 | *-*-freebsd10.*)
|
||||
tm_defines="${tm_defines} FBSD_MAJOR=10" ;;
|
||||
*-*-freebsd11 | *-*-freebsd11.*)
|
||||
tm_defines="${tm_defines} FBSD_MAJOR=11" ;;
|
||||
*)
|
||||
echo 'Please update *-*-freebsd* in gcc/config.gcc'
|
||||
exit 1
|
||||
|
|
|
@ -1252,6 +1252,20 @@ mips_split_const (rtx x, rtx *base, HOST_WIDE_INT *offset)
|
|||
*base = x;
|
||||
}
|
||||
|
||||
/* Classify symbolic expression X, given that it appears in context
|
||||
CONTEXT. */
|
||||
|
||||
static enum mips_symbol_type
|
||||
mips_classify_symbolic_expression (rtx x)
|
||||
{
|
||||
HOST_WIDE_INT offset;
|
||||
|
||||
mips_split_const (x, &x, &offset);
|
||||
if (UNSPEC_ADDRESS_P (x))
|
||||
return UNSPEC_ADDRESS_TYPE (x);
|
||||
|
||||
return mips_classify_symbol (x);
|
||||
}
|
||||
|
||||
/* Return true if SYMBOL is a SYMBOL_REF and OFFSET + SYMBOL points
|
||||
to the same object as SYMBOL. */
|
||||
|
@ -1493,8 +1507,17 @@ mips_classify_address (struct mips_address_info *info, rtx x,
|
|||
info->type = ADDRESS_LO_SUM;
|
||||
info->reg = XEXP (x, 0);
|
||||
info->offset = XEXP (x, 1);
|
||||
/* We have to trust the creator of the LO_SUM to do something vaguely
|
||||
sane. Target-independent code that creates a LO_SUM should also
|
||||
create and verify the matching HIGH. Target-independent code that
|
||||
adds an offset to a LO_SUM must prove that the offset will not
|
||||
induce a carry. Failure to do either of these things would be
|
||||
a bug, and we are not required to check for it here. The MIPS
|
||||
backend itself should only create LO_SUMs for valid symbolic
|
||||
constants, with the high part being either a HIGH or a copy
|
||||
of _gp. */
|
||||
info->symbol_type = mips_classify_symbolic_expression (info->offset);
|
||||
return (mips_valid_base_register_p (info->reg, mode, strict)
|
||||
&& mips_symbolic_constant_p (info->offset, &info->symbol_type)
|
||||
&& mips_symbolic_address_p (info->symbol_type, mode)
|
||||
&& mips_lo_relocs[info->symbol_type] != 0);
|
||||
|
||||
|
@ -5575,7 +5598,8 @@ print_operand_reloc (FILE *file, rtx op, const char **relocs)
|
|||
rtx base;
|
||||
HOST_WIDE_INT offset;
|
||||
|
||||
if (!mips_symbolic_constant_p (op, &symbol_type) || relocs[symbol_type] == 0)
|
||||
symbol_type = mips_classify_symbolic_expression (op);
|
||||
if (relocs[symbol_type] == 0)
|
||||
fatal_insn ("PRINT_OPERAND, invalid operand for relocation", op);
|
||||
|
||||
/* If OP uses an UNSPEC address, we want to print the inner symbol. */
|
||||
|
|
|
@ -7545,6 +7545,12 @@ hppa_encode_label (rtx sym)
|
|||
static void
|
||||
pa_encode_section_info (tree decl, rtx rtl, int first)
|
||||
{
|
||||
int old_referenced = 0;
|
||||
|
||||
if (!first && MEM_P (rtl) && GET_CODE (XEXP (rtl, 0)) == SYMBOL_REF)
|
||||
old_referenced
|
||||
= SYMBOL_REF_FLAGS (XEXP (rtl, 0)) & SYMBOL_FLAG_REFERENCED;
|
||||
|
||||
default_encode_section_info (decl, rtl, first);
|
||||
|
||||
if (first && TEXT_SPACE_P (decl))
|
||||
|
@ -7553,6 +7559,8 @@ pa_encode_section_info (tree decl, rtx rtl, int first)
|
|||
if (TREE_CODE (decl) == FUNCTION_DECL)
|
||||
hppa_encode_label (XEXP (rtl, 0));
|
||||
}
|
||||
else if (old_referenced)
|
||||
SYMBOL_REF_FLAGS (XEXP (rtl, 0)) |= old_referenced;
|
||||
}
|
||||
|
||||
/* This is sort of inverse to pa_encode_section_info. */
|
||||
|
|
|
@ -13327,7 +13327,8 @@ rs6000_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
|
|||
}
|
||||
}
|
||||
if (DEFAULT_ABI == ABI_DARWIN
|
||||
|| (*targetm.binds_local_p) (decl))
|
||||
|| ((*targetm.binds_local_p) (decl)
|
||||
&& (DEFAULT_ABI != ABI_AIX || !DECL_EXTERNAL (decl))))
|
||||
{
|
||||
tree attr_list = TYPE_ATTRIBUTES (TREE_TYPE (decl));
|
||||
|
||||
|
|
|
@ -1677,7 +1677,7 @@
|
|||
(clobber (reg:DI TR0_REG))
|
||||
(clobber (reg:DI TR1_REG))
|
||||
(clobber (reg:DI TR2_REG))
|
||||
(use (match_operand 1 "target_operand" "b"))]
|
||||
(use (match_operand 1 "target_reg_operand" "b"))]
|
||||
"TARGET_SHMEDIA && (! TARGET_SHMEDIA_FPU || ! TARGET_DIVIDE_FP)"
|
||||
"blink %1, r18"
|
||||
[(set_attr "type" "sfunc")
|
||||
|
@ -1843,7 +1843,7 @@
|
|||
(clobber (reg:SI R20_REG))
|
||||
(clobber (reg:SI R21_REG))
|
||||
(clobber (reg:SI TR0_REG))
|
||||
(use (match_operand 1 "target_operand" "b"))]
|
||||
(use (match_operand 1 "target_reg_operand" "b"))]
|
||||
"TARGET_SHMEDIA && (! TARGET_SHMEDIA_FPU || ! TARGET_DIVIDE_FP)"
|
||||
"blink %1, r18"
|
||||
[(set_attr "type" "sfunc")])
|
||||
|
@ -1857,7 +1857,7 @@
|
|||
(clobber (reg:SI R21_REG))
|
||||
(clobber (reg:SI TR0_REG))
|
||||
(use (reg:SI R20_REG))
|
||||
(use (match_operand 1 "target_operand" "b"))]
|
||||
(use (match_operand 1 "target_reg_operand" "b"))]
|
||||
"TARGET_SHMEDIA && (! TARGET_SHMEDIA_FPU || ! TARGET_DIVIDE_FP)"
|
||||
"blink %1, r18"
|
||||
[(set_attr "type" "sfunc")])
|
||||
|
|
|
@ -9029,7 +9029,7 @@ else
|
|||
echo "configure:9029: version of makeinfo is $ac_prog_version" >&5
|
||||
case $ac_prog_version in
|
||||
'') gcc_cv_prog_makeinfo_modern=no;;
|
||||
4.[2-9]*)
|
||||
4.[2-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*)
|
||||
gcc_cv_prog_makeinfo_modern=yes;;
|
||||
*) gcc_cv_prog_makeinfo_modern=no;;
|
||||
esac
|
||||
|
@ -16116,9 +16116,7 @@ else
|
|||
ld_ver=`$gcc_cv_ld --version 2>/dev/null | sed 1q`
|
||||
if echo "$ld_ver" | grep GNU > /dev/null; then
|
||||
ld_vers=`echo $ld_ver | sed -n \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
|
||||
|
|
|
@ -833,7 +833,7 @@ MISSING="${CONFIG_SHELL-/bin/sh} $srcdir/../missing"
|
|||
# that we can use it.
|
||||
gcc_AC_CHECK_PROG_VER(MAKEINFO, makeinfo, --version,
|
||||
[GNU texinfo.* \([0-9][0-9.]*\)],
|
||||
[4.[2-9]*])
|
||||
[4.[2-9]*|4.[1-9][0-9]*|[5-9]*|[1-9][0-9]*])
|
||||
if test $gcc_cv_prog_makeinfo_modern = no; then
|
||||
MAKEINFO="$MISSING makeinfo"
|
||||
AC_MSG_WARN([
|
||||
|
@ -1994,9 +1994,7 @@ else
|
|||
if echo "$ld_ver" | grep GNU > /dev/null; then
|
||||
changequote(,)dnl
|
||||
ld_vers=`echo $ld_ver | sed -n \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*.*\)$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
|
||||
-e 's,^.*[ ]\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\)[ ].*$,\1,p' \
|
||||
|
|
|
@ -1,3 +1,59 @@
|
|||
2008-01-28 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/35007
|
||||
* class.c (build_base_path): Fix !want_pointer case.
|
||||
|
||||
2008-01-27 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/27177
|
||||
* class.c (build_base_path): Fix previous change.
|
||||
|
||||
PR c++/27177
|
||||
* class.c (build_base_path): Don't mess with virtual access if
|
||||
skip_evaluation.
|
||||
* call.c (standard_conversion): Don't check whether source type
|
||||
is complete.
|
||||
|
||||
PR c++/33959
|
||||
* pt.c (tsubst_aggr_type): Make sure our context is complete.
|
||||
|
||||
2007-10-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/33744
|
||||
* parser.c (cp_parser_parenthesized_expression_list): Set
|
||||
greater_than_is_operator_p to true in between the parens.
|
||||
|
||||
2007-08-31 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/32113
|
||||
* search.c (lookup_member): Check the name argument for
|
||||
error_mark_node.
|
||||
|
||||
2007-08-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/31941
|
||||
* error.c (resolve_virtual_fun_from_obj_type_ref): Handle
|
||||
TARGET_VTABLE_USES_DESCRIPTORS targets properly.
|
||||
|
||||
2007-08-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/32992
|
||||
* typeck.c (check_return_expr): Don't NRV optimize vars in
|
||||
anonymous unions.
|
||||
* decl.c (finish_function): Comment fix.
|
||||
|
||||
2007-08-18 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/32112
|
||||
* error.c (dump_decl): Deal with UNBOUND_CLASS_TEMPLATE.
|
||||
* cxx-pretty-print.c (pp_cxx_unqualified_id): Likewise.
|
||||
|
||||
2007-08-10 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/17763
|
||||
* error.c (dump_expr): Consistently use the *_cxx_*
|
||||
variants of the pretty-print functions.
|
||||
|
||||
2007-06-20 Dirk Mueller <dmueller@suse.de>
|
||||
|
||||
PR c++/31809
|
||||
|
|
|
@ -11058,7 +11058,7 @@ finish_function (int flags)
|
|||
gcc_assert (stmts_are_full_exprs_p ());
|
||||
|
||||
/* Set up the named return value optimization, if we can. Candidate
|
||||
variables are selected in check_return_value. */
|
||||
variables are selected in check_return_expr. */
|
||||
if (current_function_return_value)
|
||||
{
|
||||
tree r = current_function_return_value;
|
||||
|
|
|
@ -4700,6 +4700,7 @@ cp_parser_parenthesized_expression_list (cp_parser* parser,
|
|||
tree expression_list = NULL_TREE;
|
||||
bool fold_expr_p = is_attribute_list;
|
||||
tree identifier = NULL_TREE;
|
||||
bool saved_greater_than_is_operator_p;
|
||||
|
||||
/* Assume all the expressions will be constant. */
|
||||
if (non_constant_p)
|
||||
|
@ -4708,6 +4709,12 @@ cp_parser_parenthesized_expression_list (cp_parser* parser,
|
|||
if (!cp_parser_require (parser, CPP_OPEN_PAREN, "`('"))
|
||||
return error_mark_node;
|
||||
|
||||
/* Within a parenthesized expression, a `>' token is always
|
||||
the greater-than operator. */
|
||||
saved_greater_than_is_operator_p
|
||||
= parser->greater_than_is_operator_p;
|
||||
parser->greater_than_is_operator_p = true;
|
||||
|
||||
/* Consume expressions until there are no more. */
|
||||
if (cp_lexer_next_token_is_not (parser->lexer, CPP_CLOSE_PAREN))
|
||||
while (true)
|
||||
|
@ -4781,9 +4788,16 @@ cp_parser_parenthesized_expression_list (cp_parser* parser,
|
|||
if (ending < 0)
|
||||
goto get_comma;
|
||||
if (!ending)
|
||||
return error_mark_node;
|
||||
{
|
||||
parser->greater_than_is_operator_p
|
||||
= saved_greater_than_is_operator_p;
|
||||
return error_mark_node;
|
||||
}
|
||||
}
|
||||
|
||||
parser->greater_than_is_operator_p
|
||||
= saved_greater_than_is_operator_p;
|
||||
|
||||
/* We built up the list in reverse order so we must reverse it now. */
|
||||
expression_list = nreverse (expression_list);
|
||||
if (identifier)
|
||||
|
|
|
@ -295,10 +295,11 @@ Objective-C and Objective-C++ Dialects}.
|
|||
|
||||
@item Optimization Options
|
||||
@xref{Optimize Options,,Options that Control Optimization}.
|
||||
@gccoptlist{-falign-functions=@var{n} -falign-jumps=@var{n} @gol
|
||||
-falign-labels=@var{n} -falign-loops=@var{n} @gol
|
||||
-fbounds-check -fmudflap -fmudflapth -fmudflapir @gol
|
||||
-fbranch-probabilities -fprofile-values -fvpt -fbranch-target-load-optimize @gol
|
||||
@gccoptlist{-falign-functions[=@var{n}] -falign-jumps[=@var{n}] @gol
|
||||
-falign-labels[=@var{n}] -falign-loops[=@var{n}] @gol
|
||||
-fmudflap -fmudflapth -fmudflapir @gol
|
||||
-fbranch-probabilities -fprofile-values -fvpt @gol
|
||||
-fbranch-target-load-optimize @gol
|
||||
-fbranch-target-load-optimize2 -fbtr-bb-exclusive @gol
|
||||
-fcaller-saves -fcprop-registers -fcse-follow-jumps @gol
|
||||
-fcse-skip-blocks -fcx-limited-range -fdata-sections @gol
|
||||
|
@ -325,7 +326,7 @@ Objective-C and Objective-C++ Dialects}.
|
|||
-frounding-math -fschedule-insns -fschedule-insns2 @gol
|
||||
-fno-sched-interblock -fno-sched-spec -fsched-spec-load @gol
|
||||
-fsched-spec-load-dangerous @gol
|
||||
-fsched-stalled-insns=@var{n} -fsched-stalled-insns-dep=@var{n} @gol
|
||||
-fsched-stalled-insns[=@var{n}] -fsched-stalled-insns-dep[=@var{n}] @gol
|
||||
-fsched2-use-superblocks @gol
|
||||
-fsched2-use-traces -freschedule-modulo-scheduled-loops @gol
|
||||
-fsignaling-nans -fsingle-precision-constant @gol
|
||||
|
@ -339,7 +340,8 @@ Objective-C and Objective-C++ Dialects}.
|
|||
-ftree-dominator-opts -ftree-dse -ftree-copyrename -ftree-sink @gol
|
||||
-ftree-ch -ftree-sra -ftree-ter -ftree-lrs -ftree-fre -ftree-vectorize @gol
|
||||
-ftree-vect-loop-version -ftree-salias -fweb @gol
|
||||
-ftree-copy-prop -ftree-store-ccp -ftree-store-copy-prop -fwhole-program @gol
|
||||
-ftree-copy-prop -ftree-store-ccp -ftree-store-copy-prop -ftree-vrp @gol
|
||||
-funit-at-a-time -fwhole-program @gol
|
||||
--param @var{name}=@var{value}
|
||||
-O -O0 -O1 -O2 -O3 -Os}
|
||||
|
||||
|
@ -756,7 +758,7 @@ See S/390 and zSeries Options.
|
|||
-fshort-double -fshort-wchar @gol
|
||||
-fverbose-asm -fpack-struct[=@var{n}] -fstack-check @gol
|
||||
-fstack-limit-register=@var{reg} -fstack-limit-symbol=@var{sym} @gol
|
||||
-fargument-alias -fargument-noalias @gol
|
||||
-fno-stack-limit -fargument-alias -fargument-noalias @gol
|
||||
-fargument-noalias-global -fleading-underscore @gol
|
||||
-ftls-model=@var{model} @gol
|
||||
-ftrapv -fwrapv -fbounds-check @gol
|
||||
|
@ -4611,6 +4613,7 @@ check if the variable was referenced, regardless of whether or not
|
|||
optimization is turned on, use the @option{-fno-keep-static-consts} option.
|
||||
|
||||
@item -fmerge-constants
|
||||
@opindex fmerge-constants
|
||||
Attempt to merge identical constants (string constants and floating point
|
||||
constants) across compilation units.
|
||||
|
||||
|
@ -4621,6 +4624,7 @@ behavior.
|
|||
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
|
||||
|
||||
@item -fmerge-all-constants
|
||||
@opindex fmerge-all-constants
|
||||
Attempt to merge identical constants and identical variables.
|
||||
|
||||
This option implies @option{-fmerge-constants}. In addition to
|
||||
|
@ -4671,13 +4675,6 @@ assumptions based on that.
|
|||
|
||||
The default is @option{-fzero-initialized-in-bss}.
|
||||
|
||||
@item -fbounds-check
|
||||
@opindex fbounds-check
|
||||
For front-ends that support it, generate additional code to check that
|
||||
indices used to access arrays are within the declared range. This is
|
||||
currently only supported by the Java and Fortran front-ends, where
|
||||
this option defaults to true and false respectively.
|
||||
|
||||
@item -fmudflap -fmudflapth -fmudflapir
|
||||
@opindex fmudflap
|
||||
@opindex fmudflapth
|
||||
|
@ -4822,14 +4819,14 @@ Using @option{-Wunsafe-loop-optimizations}, the compiler will warn you
|
|||
if it finds this kind of loop.
|
||||
|
||||
@item -fcrossjumping
|
||||
@opindex crossjumping
|
||||
@opindex fcrossjumping
|
||||
Perform cross-jumping transformation. This transformation unifies equivalent code and save code size. The
|
||||
resulting code may or may not perform better than without cross-jumping.
|
||||
|
||||
Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
|
||||
|
||||
@item -fif-conversion
|
||||
@opindex if-conversion
|
||||
@opindex fif-conversion
|
||||
Attempt to transform conditional jumps into branch-less equivalents. This
|
||||
include use of conditional moves, min, max, set flags and abs instructions, and
|
||||
some tricks doable by standard arithmetics. The use of conditional execution
|
||||
|
@ -4838,7 +4835,7 @@ on chips where it is available is controlled by @code{if-conversion2}.
|
|||
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
|
||||
|
||||
@item -fif-conversion2
|
||||
@opindex if-conversion2
|
||||
@opindex fif-conversion2
|
||||
Use conditional execution (where available) to transform conditional jumps into
|
||||
branch-less equivalents.
|
||||
|
||||
|
@ -4929,17 +4926,27 @@ Allow speculative motion of more load instructions. This only makes
|
|||
sense when scheduling before register allocation, i.e.@: with
|
||||
@option{-fschedule-insns} or at @option{-O2} or higher.
|
||||
|
||||
@item -fsched-stalled-insns=@var{n}
|
||||
@item -fsched-stalled-insns
|
||||
@itemx -fsched-stalled-insns=@var{n}
|
||||
@opindex fsched-stalled-insns
|
||||
Define how many insns (if any) can be moved prematurely from the queue
|
||||
of stalled insns into the ready list, during the second scheduling pass.
|
||||
@option{-fno-fsched-stalled-insns} and @option{-fsched-stalled-insns=0}
|
||||
are equivalent and mean that no insns will be moved prematurely.
|
||||
If @var{n} is unspecified then there is no limit on how many queued
|
||||
insns can be moved prematurely.
|
||||
|
||||
@item -fsched-stalled-insns-dep=@var{n}
|
||||
@item -fsched-stalled-insns-dep
|
||||
@itemx -fsched-stalled-insns-dep=@var{n}
|
||||
@opindex fsched-stalled-insns-dep
|
||||
Define how many insn groups (cycles) will be examined for a dependency
|
||||
on a stalled insn that is candidate for premature removal from the queue
|
||||
of stalled insns. Has an effect only during the second scheduling pass,
|
||||
of stalled insns. This has an effect only during the second scheduling pass,
|
||||
and only if @option{-fsched-stalled-insns} is used and its value is not zero.
|
||||
+@option{-fno-sched-stalled-insns-dep} is equivalent to
|
||||
+@option{-fsched-stalled-insns-dep=0}.
|
||||
+@option{-fsched-stalled-insns-dep} without a value is equivalent to
|
||||
+@option{-fsched-stalled-insns-dep=1}.
|
||||
|
||||
@item -fsched2-use-superblocks
|
||||
@opindex fsched2-use-superblocks
|
||||
|
@ -4966,7 +4973,7 @@ sense when scheduling after register allocation, i.e.@: with
|
|||
@option{-fschedule-insns2} or at @option{-O2} or higher.
|
||||
|
||||
@item -freschedule-modulo-scheduled-loops
|
||||
@opindex fscheduling-in-modulo-scheduled-loops
|
||||
@opindex freschedule-modulo-scheduled-loops
|
||||
The modulo scheduling comes before the traditional scheduling, if a loop was modulo scheduled
|
||||
we may want to prevent the later scheduling passes from changing its schedule, we use this
|
||||
option to control that.
|
||||
|
@ -4984,10 +4991,12 @@ those which have no call-preserved registers to use instead.
|
|||
Enabled at levels @option{-O2}, @option{-O3}, @option{-Os}.
|
||||
|
||||
@item -ftree-pre
|
||||
@opindex ftree-pre
|
||||
Perform Partial Redundancy Elimination (PRE) on trees. This flag is
|
||||
enabled by default at @option{-O2} and @option{-O3}.
|
||||
|
||||
@item -ftree-fre
|
||||
@opindex ftree-fre
|
||||
Perform Full Redundancy Elimination (FRE) on trees. The difference
|
||||
between FRE and PRE is that FRE only considers expressions
|
||||
that are computed on all paths leading to the redundant computation.
|
||||
|
@ -4995,40 +5004,48 @@ This analysis faster than PRE, though it exposes fewer redundancies.
|
|||
This flag is enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-copy-prop
|
||||
@opindex ftree-copy-prop
|
||||
Perform copy propagation on trees. This pass eliminates unnecessary
|
||||
copy operations. This flag is enabled by default at @option{-O} and
|
||||
higher.
|
||||
|
||||
@item -ftree-store-copy-prop
|
||||
@opindex ftree-store-copy-prop
|
||||
Perform copy propagation of memory loads and stores. This pass
|
||||
eliminates unnecessary copy operations in memory references
|
||||
(structures, global variables, arrays, etc). This flag is enabled by
|
||||
default at @option{-O2} and higher.
|
||||
|
||||
@item -ftree-salias
|
||||
@opindex ftree-salias
|
||||
Perform structural alias analysis on trees. This flag
|
||||
is enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-sink
|
||||
@opindex ftree-sink
|
||||
Perform forward store motion on trees. This flag is
|
||||
enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-ccp
|
||||
@opindex ftree-ccp
|
||||
Perform sparse conditional constant propagation (CCP) on trees. This
|
||||
pass only operates on local scalar variables and is enabled by default
|
||||
at @option{-O} and higher.
|
||||
|
||||
@item -ftree-store-ccp
|
||||
@opindex ftree-store-ccp
|
||||
Perform sparse conditional constant propagation (CCP) on trees. This
|
||||
pass operates on both local scalar variables and memory stores and
|
||||
loads (global variables, structures, arrays, etc). This flag is
|
||||
enabled by default at @option{-O2} and higher.
|
||||
|
||||
@item -ftree-dce
|
||||
@opindex ftree-dce
|
||||
Perform dead code elimination (DCE) on trees. This flag is enabled by
|
||||
default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-dominator-opts
|
||||
@opindex ftree-dominator-opts
|
||||
Perform a variety of simple scalar cleanups (constant/copy
|
||||
propagation, redundancy elimination, range propagation and expression
|
||||
simplification) based on a dominator tree traversal. This also
|
||||
|
@ -5036,20 +5053,24 @@ performs jump threading (to reduce jumps to jumps). This flag is
|
|||
enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-ch
|
||||
@opindex ftree-ch
|
||||
Perform loop header copying on trees. This is beneficial since it increases
|
||||
effectiveness of code motion optimizations. It also saves one jump. This flag
|
||||
is enabled by default at @option{-O} and higher. It is not enabled
|
||||
for @option{-Os}, since it usually increases code size.
|
||||
|
||||
@item -ftree-loop-optimize
|
||||
@opindex ftree-loop-optimize
|
||||
Perform loop optimizations on trees. This flag is enabled by default
|
||||
at @option{-O} and higher.
|
||||
|
||||
@item -ftree-loop-linear
|
||||
@opindex ftree-loop-linear
|
||||
Perform linear loop transformations on tree. This flag can improve cache
|
||||
performance and allow further loop optimizations to take place.
|
||||
|
||||
@item -ftree-loop-im
|
||||
@opindex ftree-loop-im
|
||||
Perform loop invariant motion on trees. This pass moves only invariants that
|
||||
would be hard to handle at RTL level (function calls, operations that expand to
|
||||
nontrivial sequences of insns). With @option{-funswitch-loops} it also moves
|
||||
|
@ -5058,27 +5079,32 @@ just trivial invariantness analysis in loop unswitching. The pass also includes
|
|||
store motion.
|
||||
|
||||
@item -ftree-loop-ivcanon
|
||||
@opindex ftree-loop-ivcanon
|
||||
Create a canonical counter for number of iterations in the loop for that
|
||||
determining number of iterations requires complicated analysis. Later
|
||||
optimizations then may determine the number easily. Useful especially
|
||||
in connection with unrolling.
|
||||
|
||||
@item -fivopts
|
||||
@opindex fivopts
|
||||
Perform induction variable optimizations (strength reduction, induction
|
||||
variable merging and induction variable elimination) on trees.
|
||||
|
||||
@item -ftree-sra
|
||||
@opindex ftree-sra
|
||||
Perform scalar replacement of aggregates. This pass replaces structure
|
||||
references with scalars to prevent committing structures to memory too
|
||||
early. This flag is enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-copyrename
|
||||
@opindex ftree-copyrename
|
||||
Perform copy renaming on trees. This pass attempts to rename compiler
|
||||
temporaries to other variables at copy locations, usually resulting in
|
||||
variable names which more closely resemble the original variables. This flag
|
||||
is enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-ter
|
||||
@opindex ftree-ter
|
||||
Perform temporary expression replacement during the SSA->normal phase. Single
|
||||
use/single def temporaries are replaced at their use location with their
|
||||
defining expression. This results in non-GIMPLE code, but gives the expanders
|
||||
|
@ -5086,11 +5112,13 @@ much more complex trees to work on resulting in better RTL generation. This is
|
|||
enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-lrs
|
||||
@opindex ftree-lrs
|
||||
Perform live range splitting during the SSA->normal phase. Distinct live
|
||||
ranges of a variable are split into unique variables, allowing for better
|
||||
optimization later. This is enabled by default at @option{-O} and higher.
|
||||
|
||||
@item -ftree-vectorize
|
||||
@opindex ftree-vectorize
|
||||
Perform loop vectorization on trees.
|
||||
|
||||
@item -ftree-vect-loop-version
|
||||
|
@ -5103,6 +5131,7 @@ to control which version is executed. This option is enabled by default
|
|||
except at level @option{-Os} where it is disabled.
|
||||
|
||||
@item -ftree-vrp
|
||||
@opindex ftree-vrp
|
||||
Perform Value Range Propagation on trees. This is similar to the
|
||||
constant propagation pass, but instead of values, ranges of values are
|
||||
propagated. This allows the optimizers to remove unnecessary range
|
||||
|
@ -5132,7 +5161,7 @@ the loop is entered. This usually makes programs run more slowly.
|
|||
@option{-funroll-loops},
|
||||
|
||||
@item -fsplit-ivs-in-unroller
|
||||
@opindex -fsplit-ivs-in-unroller
|
||||
@opindex fsplit-ivs-in-unroller
|
||||
Enables expressing of values of induction variables in later iterations
|
||||
of the unrolled loop using the value in the first iteration. This breaks
|
||||
long dependency chains, thus improving efficiency of the scheduling passes.
|
||||
|
@ -5145,7 +5174,7 @@ on some of the architectures due to restrictions in the CSE pass.
|
|||
This optimization is enabled by default.
|
||||
|
||||
@item -fvariable-expansion-in-unroller
|
||||
@opindex -fvariable-expansion-in-unroller
|
||||
@opindex fvariable-expansion-in-unroller
|
||||
With this option, the compiler will create multiple copies of some
|
||||
local variables when unrolling a loop which can result in superior code.
|
||||
|
||||
|
@ -5392,13 +5421,13 @@ programs since the functions and variables become local for the whole combined
|
|||
compilation unit, not for the single source file itself.
|
||||
|
||||
|
||||
@item -fno-cprop-registers
|
||||
@opindex fno-cprop-registers
|
||||
@item -fcprop-registers
|
||||
@opindex fcprop-registers
|
||||
After register allocation and post-register allocation instruction splitting,
|
||||
we perform a copy-propagation pass to try to reduce scheduling dependencies
|
||||
and occasionally eliminate the copy.
|
||||
|
||||
Disabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
|
||||
Enabled at levels @option{-O}, @option{-O2}, @option{-O3}, @option{-Os}.
|
||||
|
||||
@item -fprofile-generate
|
||||
@opindex fprofile-generate
|
||||
|
@ -5555,9 +5584,7 @@ Treat floating point constant as single precision constant instead of
|
|||
implicitly converting it to double precision constant.
|
||||
|
||||
@item -fcx-limited-range
|
||||
@itemx -fno-cx-limited-range
|
||||
@opindex fcx-limited-range
|
||||
@opindex fno-cx-limited-range
|
||||
When enabled, this option states that a range reduction step is not
|
||||
needed when performing complex division. The default is
|
||||
@option{-fno-cx-limited-range}, but is enabled by @option{-ffast-math}.
|
||||
|
@ -5717,6 +5744,7 @@ When performing branch target register load optimization, don't reuse
|
|||
branch target registers in within any basic block.
|
||||
|
||||
@item -fstack-protector
|
||||
@opindex fstack-protector
|
||||
Emit extra code to check for buffer overflows, such as stack smashing
|
||||
attacks. This is done by adding a guard variable to functions with
|
||||
vulnerable objects. This includes functions that call alloca, and
|
||||
|
@ -5725,6 +5753,7 @@ when a function is entered and then checked when the function exits.
|
|||
If a guard check fails, an error message is printed and the program exits.
|
||||
|
||||
@item -fstack-protector-all
|
||||
@opindex fstack-protector-all
|
||||
Like @option{-fstack-protector} except that all functions are protected.
|
||||
|
||||
@item --param @var{name}=@var{value}
|
||||
|
@ -13113,6 +13142,7 @@ switch. Use it to conform to a non-default application binary interface.
|
|||
Not all targets provide complete support for this switch.
|
||||
|
||||
@item -ftls-model=@var{model}
|
||||
@opindex ftls-model=@var{model}
|
||||
Alter the thread-local storage model to be used (@pxref{Thread-Local}).
|
||||
The @var{model} argument should be one of @code{global-dynamic},
|
||||
@code{local-dynamic}, @code{initial-exec} or @code{local-exec}.
|
||||
|
|
|
@ -5340,9 +5340,9 @@ extract_muldiv_1 (tree t, tree c, enum tree_code code, tree wide_type)
|
|||
}
|
||||
break;
|
||||
}
|
||||
/* If the constant is negative, we cannot simplify this. */
|
||||
/* If the constant is negative, we cannot simplify this. */
|
||||
if (tree_int_cst_sgn (c) == -1)
|
||||
break;
|
||||
break;
|
||||
/* FALLTHROUGH */
|
||||
case NEGATE_EXPR:
|
||||
if ((t1 = extract_muldiv (op0, c, code, wide_type)) != 0)
|
||||
|
@ -8078,6 +8078,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
|
|||
|
||||
/* ~X | X is -1. */
|
||||
if (TREE_CODE (arg0) == BIT_NOT_EXPR
|
||||
&& INTEGRAL_TYPE_P (TREE_TYPE (arg1))
|
||||
&& operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
|
||||
{
|
||||
t1 = build_int_cst (type, -1);
|
||||
|
@ -8087,6 +8088,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
|
|||
|
||||
/* X | ~X is -1. */
|
||||
if (TREE_CODE (arg1) == BIT_NOT_EXPR
|
||||
&& INTEGRAL_TYPE_P (TREE_TYPE (arg0))
|
||||
&& operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
|
||||
{
|
||||
t1 = build_int_cst (type, -1);
|
||||
|
@ -8174,6 +8176,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
|
|||
|
||||
/* ~X ^ X is -1. */
|
||||
if (TREE_CODE (arg0) == BIT_NOT_EXPR
|
||||
&& INTEGRAL_TYPE_P (TREE_TYPE (arg1))
|
||||
&& operand_equal_p (TREE_OPERAND (arg0, 0), arg1, 0))
|
||||
{
|
||||
t1 = build_int_cst (type, -1);
|
||||
|
@ -8183,6 +8186,7 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
|
|||
|
||||
/* X ^ ~X is -1. */
|
||||
if (TREE_CODE (arg1) == BIT_NOT_EXPR
|
||||
&& INTEGRAL_TYPE_P (TREE_TYPE (arg0))
|
||||
&& operand_equal_p (arg0, TREE_OPERAND (arg1, 0), 0))
|
||||
{
|
||||
t1 = build_int_cst (type, -1);
|
||||
|
@ -9565,24 +9569,24 @@ fold_binary (enum tree_code code, tree type, tree op0, tree op1)
|
|||
tree arg01 = TREE_OPERAND (arg0, 1);
|
||||
if (TREE_CODE (arg00) == LSHIFT_EXPR
|
||||
&& integer_onep (TREE_OPERAND (arg00, 0)))
|
||||
return
|
||||
fold_build2 (code, type,
|
||||
build2 (BIT_AND_EXPR, TREE_TYPE (arg0),
|
||||
build2 (RSHIFT_EXPR, TREE_TYPE (arg00),
|
||||
arg01, TREE_OPERAND (arg00, 1)),
|
||||
fold_convert (TREE_TYPE (arg0),
|
||||
integer_one_node)),
|
||||
arg1);
|
||||
else if (TREE_CODE (TREE_OPERAND (arg0, 1)) == LSHIFT_EXPR
|
||||
&& integer_onep (TREE_OPERAND (TREE_OPERAND (arg0, 1), 0)))
|
||||
return
|
||||
fold_build2 (code, type,
|
||||
build2 (BIT_AND_EXPR, TREE_TYPE (arg0),
|
||||
build2 (RSHIFT_EXPR, TREE_TYPE (arg01),
|
||||
arg00, TREE_OPERAND (arg01, 1)),
|
||||
fold_convert (TREE_TYPE (arg0),
|
||||
integer_one_node)),
|
||||
arg1);
|
||||
{
|
||||
tree tem = fold_build2 (RSHIFT_EXPR, TREE_TYPE (arg00),
|
||||
arg01, TREE_OPERAND (arg00, 1));
|
||||
tem = fold_build2 (BIT_AND_EXPR, TREE_TYPE (arg0), tem,
|
||||
build_int_cst (TREE_TYPE (arg0), 1));
|
||||
return fold_build2 (code, type,
|
||||
fold_convert (TREE_TYPE (arg1), tem), arg1);
|
||||
}
|
||||
else if (TREE_CODE (arg01) == LSHIFT_EXPR
|
||||
&& integer_onep (TREE_OPERAND (arg01, 0)))
|
||||
{
|
||||
tree tem = fold_build2 (RSHIFT_EXPR, TREE_TYPE (arg01),
|
||||
arg00, TREE_OPERAND (arg01, 1));
|
||||
tem = fold_build2 (BIT_AND_EXPR, TREE_TYPE (arg0), tem,
|
||||
build_int_cst (TREE_TYPE (arg0), 1));
|
||||
return fold_build2 (code, type,
|
||||
fold_convert (TREE_TYPE (arg1), tem), arg1);
|
||||
}
|
||||
}
|
||||
|
||||
/* If this is an NE or EQ comparison of zero against the result of a
|
||||
|
|
|
@ -1120,8 +1120,8 @@ do { \
|
|||
refer to part of a DECL. */
|
||||
#define REG_EXPR(RTX) (REG_ATTRS (RTX) == 0 ? 0 : REG_ATTRS (RTX)->decl)
|
||||
|
||||
/* For a MEM rtx, the offset from the start of MEM_DECL, if known, as a
|
||||
RTX that is always a CONST_INT. */
|
||||
/* For a REG rtx, the offset from the start of REG_EXPR, if known, as an
|
||||
HOST_WIDE_INT. */
|
||||
#define REG_OFFSET(RTX) (REG_ATTRS (RTX) == 0 ? 0 : REG_ATTRS (RTX)->offset)
|
||||
|
||||
/* Copy the attributes that apply to memory locations from RHS to LHS. */
|
||||
|
|
|
@ -1,3 +1,200 @@
|
|||
2008-01-31 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* gcc.dg/tf_to_di-1.c: New testcase.
|
||||
|
||||
2008-01-24 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
Backport:
|
||||
2008-01-10 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/pr33826.c: Require nonpic.
|
||||
|
||||
2007-11-08 Kenneth Zadeck <zadeck@naturalbridge.com>
|
||||
|
||||
PR middle-end/33826
|
||||
* gcc.dg/pr33826.c: New.
|
||||
* gcc.dg/tree-ssa/20030714-1.c: Removed two tests that depend on
|
||||
recursive functions being marked pure or const.
|
||||
|
||||
2008-01-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/vect/vect-ifcvt-9.c: Use inline.
|
||||
|
||||
2008-01-19 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
|
||||
|
||||
* g++.dg/eh/ia64-2.C: Add "dg-require-weak" statement. Place
|
||||
"dg-do run" statement before "dg-require-weak" statement.
|
||||
* g++.dg/eh/weak1.C: Likewise.
|
||||
|
||||
2008-01-19 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
Backport:
|
||||
2007-03-21 Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
* gcc.target/i386/pr21291.c: Require nonpic or ! ilp32.
|
||||
|
||||
2008-01-17 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.c-torture/compile/20080114-1.c: Use empty asm statements.
|
||||
|
||||
2008-01-14 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.c-torture/compile/20080114-1.c: New test.
|
||||
|
||||
2008-01-09 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.c-torture/execute/builtins/chk.h: Don't check !__PIE__.
|
||||
Also check __pic__.
|
||||
* lib/target-supports.exp (check_effective_target_nonpic): Likewise.
|
||||
* gcc.dg/assign-warn-3.c: Use "static inline" instead of "inline".
|
||||
|
||||
Backport:
|
||||
|
||||
2007-03-21 Richard Sandiford <richard@codesourcery.com>
|
||||
* gcc.c-torture/execute/builtins/chk.h (LOCAL): Define.
|
||||
* gcc.c-torture/execute/builtins/sprintf-chk.c (s1): Make LOCAL.
|
||||
* gcc.c-torture/execute/builtins/stpcpy-chk.c (s1): Likewise.
|
||||
* gcc.c-torture/execute/builtins/strcpy-chk.c (s1): Likewise.
|
||||
|
||||
2007-07-26 Nathan Froyd <froydnj@codesourcery.com>
|
||||
PR/19232
|
||||
* gcc.dg/assign-warn-3.c (f0): Declare as inline.
|
||||
(f1): Likewise.
|
||||
|
||||
2007-01-15 Dale Johannesen <dalej@apple.com>
|
||||
* gcc.dg/tree-ssa/loop-3.c: Disable with -fpic or -fPIC.
|
||||
|
||||
2007-03-21 Richard Sandiford <richard@codesourcery.com>
|
||||
* lib/target-supports.exp (check_effective_target_nonpic): New
|
||||
procedure.
|
||||
|
||||
2007-12-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR bootstrap/34003
|
||||
* gcc.dg/pr34003-1.c: New test.
|
||||
* gcc.dg/pr34003-2.c: New.
|
||||
|
||||
2007-12-19 Richard Sandiford <rsandifo@nildram.co.uk>
|
||||
|
||||
PR rtl-optimization/34456
|
||||
* gcc.c-torture/execute/pr34456.c: New test.
|
||||
|
||||
2007-11-29 Matthias Klose <doko@ubuntu.com>
|
||||
|
||||
Backport from mainline:
|
||||
2007-11-17 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/34130
|
||||
* gcc.c-torture/execute/pr34130.c: New testcase.
|
||||
|
||||
2007-11-16 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR middle-end/34030
|
||||
* gcc.c-torture/compile/pr34030.c: New testcase.
|
||||
|
||||
2007-11-07 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
* gcc.dg/out-of-bounds-1.c: New test.
|
||||
|
||||
2007-11-02 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR rtl-optimization/28062
|
||||
* gcc.c-torture/compile/20071102-1.c: New test.
|
||||
|
||||
2007-10-26 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/33744
|
||||
* g++.dg/template/arg6.C: New test.
|
||||
|
||||
2007-09-06 David Daney <ddaney@avtrex.com>
|
||||
Richard Sandiford <richard@codesourcery.com>
|
||||
|
||||
PR target/33256
|
||||
* gcc.target/mips/mips.exp (setup_mips_tests): Set mips_forced_le.
|
||||
(dg-mips-options): Skip -EB and -meb tests when $mips_forced_le.
|
||||
* gcc.target/mips/pr33256.c: New test.
|
||||
|
||||
2007-08-31 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/32113
|
||||
* g++.dg/template/crash70.C: New.
|
||||
|
||||
2007-08-24 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR middle-end/32912
|
||||
* gcc.dg/pr32912-1.c: New test.
|
||||
* gcc.dg/pr32912-2.c: New test.
|
||||
|
||||
PR c++/31941
|
||||
* g++.dg/parse/crash37.C: New test.
|
||||
|
||||
2007-08-22 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/33142
|
||||
* gcc.c-torture/execute/pr33142.c: New testcase.
|
||||
|
||||
2007-08-20 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
PR c++/32992
|
||||
* g++.dg/opt/nrv14.C: New test.
|
||||
|
||||
2007-08-18 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/32112
|
||||
* g++.dg/template/error26.C: New.
|
||||
|
||||
2007-08-10 Paolo Carlini <pcarlini@suse.de>
|
||||
|
||||
PR c++/17763
|
||||
* g++.dg/other/error16.C: New.
|
||||
|
||||
2007-08-01 Andreas Krebbel <krebbel1@de.ibm.com>
|
||||
|
||||
* gcc.dg/20070801-1.c: New testcase.
|
||||
|
||||
2007-07-21 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/c99-math-double-1.c: Mark test variables as volatile.
|
||||
Test negative numbers also.
|
||||
* gcc.dg/c99-math-float-1.c: Likewise.
|
||||
* gcc.dg/c99-math-long-double-1.c: Likewise.
|
||||
* gcc.dg/c99-math.h: Check for FP exceptions. Update for negative
|
||||
test inputs.
|
||||
|
||||
2007-07-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/c99-math-double-1.c, gcc.dg/c99-math-float-1.c,
|
||||
c99-math-long-double-1.c, c99-math.h: Test subnormals.
|
||||
|
||||
2007-07-06 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR rtl-optimization/32450
|
||||
* gcc.dg/pr32450.c: New runtime test.
|
||||
|
||||
2007-07-04 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR tree-optimization/31966
|
||||
PR tree-optimization/32533
|
||||
* gcc.dg/tree-ssa/pr31966.c: New runtime test.
|
||||
* gfortran.dg/pr32533.f90: Ditto.
|
||||
|
||||
2007-07-02 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
|
||||
|
||||
* gcc.dg/c99-math.h: Fix typo.
|
||||
|
||||
2007-06-30 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* g++.dg/ext/interface4.C, g++.dg/ext/interface4.h: New.
|
||||
|
||||
2007-06-28 Seongbae Park <seongbae.park@gmail.com>
|
||||
|
||||
* gcc.target/arm/stack-corruption.c: New test.
|
||||
|
||||
2007-06-21 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/32389
|
||||
* gcc.target/i386/pr32389.c New test.
|
||||
|
||||
2007-06-20 Dirk Mueller <dmueller@suse.de>
|
||||
|
||||
PR c++/31806
|
||||
|
|
Loading…
Reference in New Issue