* tree-pass.h (pass_build_cgraph_edges): Declare.
* cgraphunit.c (record_refernece): Move to cgraphbuild.c
(visited_nodes): Remove.
(cgraph_create_edges): Move to cgraphbuild.c; rename to
build_cgrpah_edges; make visited_nodes local.
(cgraph_process_new_functions): DO not call initialize_inline_failed.
(record_references_in_initializer): Move to cgraphbuild.c
(initialize_inline_failed, rebuild_cgraph_edges,
pass_rebuild_cgraph_edges): Move to cgraphbuild.c.
(verify_cgraph_node): Make visited_nodes local.
(cgraph_analyze_function): Do not call cgraph_create_edges and
initialize_inline_failed.
(cgraph_expand_function): Do not call cgraph_lower_function;
assert that function is already lowered.
* Makefile.in (cgraphbuild.o): New.
* passes.c (init_optimization_passes): Add pass_build_cgraph_edges
at the end of lowering passes.
From-SVN: r120527
* ifcvt.c (cond_move_convert_if_block): New function, code
factored out from...
(cond_move_process_if_block): ...here. Call the new function
on the THEN and ELSE blocks.
(merge_if_block): Do not copy global_live_at_end, merge_blocks
already takes care of this.
From-SVN: r120524
2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
PR c/19978
* tree.h (TREE_OVERFLOW_P): New.
* c-typeck.c (parser_build_unary_op): Warn only if result
overflowed and operands did not.
(parser_build_binary_op): Likewise.
(convert_for_assignment): Remove redundant overflow_warning.
* c-common.c (overflow_warning): Don't check or set TREE_OVERFLOW.
cp/
* semantics.c (finish_unary_op_expr): Warn only if result
overflowed and operands did not.
testsuite/
* gcc.dg/multiple-overflow-warn-1.c: New.
* gcc.dg/multiple-overflow-warn-2.c: New.
* gcc.dg/overflow-warn-6.c: New.
* g++.dg/warn/multiple-overflow-warn-1.C: New.
From-SVN: r120505
2007-01-05 Manuel Lopez-Ibanez <manu@gcc.gnu.org>
* c-typeck.c (store_init_value): Split over two lines to follow
the GNU coding style.
From-SVN: r120504
2007-01-05 Richard Guenther <rguenther@suse.de>
PR middle-end/27826
* tree.c (get_narrower): Do not construct COMPONENT_REFs
with mismatched types. Instead explicitly build a
conversion NOP_EXPR.
* g++.dg/opt/pr27826.C: New testcase.
From-SVN: r120498
* tree-optimize.c (execute_fixup_cfg): Correct previously mistakely
comitted older version of patch.
(pass_fixup_cfg): Add TODOs to verify flow and statements, dump
function, celanup cfg and collect garbage.
From-SVN: r120469
2007-01-04 Eric Christopher <echristo@apple.com>
* libgcc2.c (__bswapsi2): Use SItype.
(__bswapdi2): Use DItype.
* libgcc2.h: Update for above.
From-SVN: r120454
* fold-const.c (fold_convert): When casting an expression to void,
fold_ignored_result may discover a GIMPLE_MODIFY_STMT which doesn't
have a type. Instead of attempting to build a NOP_EXPR, return
these "special" trees directly.
From-SVN: r120451
* config/rs6000/rs6000.c (rs6000_rtx_costs): Make adjustment for
MULT inside MINUS as either argument. Use rs6000_cost->dmul -
rs6000_cost->fp not 0 as adjustment for outer NEG.
From-SVN: r120442
* cgraph.c (cgraph_release_function_body): New function.
(cgraph_remove_node): Use it.
* cgraph.h (cgraph_release_function_body): Declare.
* cgraphunit.c (cgraph_expand_function): Use it.
* ipa.c (cgraph_remove_unreahchable_nodes): Use it.
* tree-ssa.c (delete_tree_ssa): Allow to be called before aliasing
is initialized and while compilation of other function is running.
* tree-optimize.c (execute_free_cfg_annotations): Move code to clear
statement CFG annotations from here to ...
* tree-cfg.c (delete_tree_cfg_annotations): ... here.
From-SVN: r120437
2007-03-01 Josh Conner <jconner@apple.com>
PR middle-end/29683
* calls.c (compute_argument_addresses): Set stack and stack_slot
for partial args, too.
(store_one_arg): Use locate.size.constant for the size when
generating a save_area.
2007-03-01 Josh Conner <jconner@apple.com>
PR middle-end/29683
* gcc.dg/pr29683.c: New.
From-SVN: r120425
2007-01-03 Paul Brook <paul@codesourcery.com>
PR target/16634
gcc/
* config/arm/arm.c (output_return_instruction): Pop PC in interrupt
functions.
(use_return_insn): Return 0 for Thumb interrupt functions.
(print_multi_reg): Add rfe argument for IRQ returns.
(arm_output_epilogue): Pop interrupt return address directly into PC.
(arm_expand_prologue): Only adjust IRQ return address in Arm mode.
From-SVN: r120413
* unwind-dw2.c (SIGNAL_FRAME_BIT, EXTENDED_CONTEXT_BIT): Define.
(struct _Unwind_Context): Rename args_size to flags, remove
signal_frame field, add a new args_size field and version field.
(_Unwind_IsSignalFrame, _Unwind_SetSignalFrame,
_Unwind_IsExtendedContext): New inline functions.
(_Unwind_GetGR, _Unwind_SetGR, _Unwind_GetGRPtr, _Unwind_SetGRPtr):
Assume by_value array is only present if _Unwind_IsExtendedContext.
(_Unwind_GetIPInfo, execute_cfa_program, uw_frame_state_for): Use
_Unwind_IsSignalFrame.
(__frame_state_for): Initialize context.flags to EXTENDED_CONTEXT_BIT.
(uw_update_context_1): Use _Unwind_SetSignalFrame.
(uw_init_context_1): Initialize context->flags to
EXTENDED_CONTEXT_BIT.
* config/rs6000/linux-unwind.h (frob_update_context): Use
_Unwind_SetSignalFrame.
From-SVN: r120406
2007-01-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/20353
* gimplify.c (gimplify_modify_expr_complex_part): Move below
tree_to_gimple_tuple. Call tree_to_gimple_tuple when we need
the value.
2007-01-03 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/30353
* gcc.c-torture/compile/complex-4.c: New test.
From-SVN: r120404
* gcc.dg/pr16194.c: We now output error on all three functions, not just
first one.
* cgraph.c: Include tree-flow.h
(cgraph_add_new-function): Handle IPA_SSA mode; execute
early_local_passes.
* cgraph.h (enum cgraph_state): Add CGRAPH_STATE_IPA_SSA.
* tree-pass.h (pass_all_early_optimizations): Declare.
* cgraphunit.c (cgraph_process_new_functions): Add IPA_SSA; execute
early_local_passes.
(cgraph_analyze_function): Do early_local_passes.
* tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
Do not add referenced vars.
* tree-optimize.c (gate_all_optimizations): Do not execute when not in
SSA form.
(gate_all_early_local_passes): New gate.
(pass_early_local_passes): Use new gate.
(execute_early_local_optimizations): New functions.
(gate_all_early_optimizations): New gate.
(pass_all_early_optimizations): New pass.
(execute_free_datastructures): Free SSA only when initialized.
(gate_init_datastructures): Init only when optimizing.
(tree_lowering_passes): Do early local passes when called late.
* tree-profile.c (do_tree_profiling): Don't profile functions added
late.
(do_early_tree_profiling, pass_early_tree_profile): Kill.
* tree-cfg.c (update_modified_stmts): Do not update when operands are
not active.
* passes.c (init_optimizations_passes): Reorder so we go into SSA
during early_local_passes.
* Makefile.in (cgraph.o): Add dependency on tree-flow.h.
From-SVN: r120373
gcc/
2007-01-02 Carlos O'Donell <carlos@codesourcery.com>
* Makefile.in: Export GCC_EXEC_PREFIX before calling $(RUNTEST)
in $(lang_checks) and check-consistency targets.
From-SVN: r120359
* tree-mudflap.c (mf_decl_cache_locals, mf_build_check_statement_for):
Do not add referenced vars.
* tree-cfg.c (update_modified_stmts): Do not update when SSA operands
are not active.
* passes.c (init_optimization_passes): Put mudflap_2 after
free_datastructures.
From-SVN: r120358
2007-01-02 Jan Hubicka <jh@suse.cz>
* tree-optimize (execute_fixup_cfg): Set after_inlining flag.
Set NOTHROW flag on call statements proved to be nothrow.
Update statement of local calls so new pure/const functions are
updated. Update_ssa when in ssa form. Mark PHI nodes of nonlocal
goto receivers.
(tree_rest_of_compilation): Register hooks and initialize bitmap
early. Do not set after_inlining flag.
From-SVN: r120357
./: * c-common.c (c_common_truthvalue_conversion): When warning about
using an assignment as a truth value, set TREE_NO_WARNING.
cp/:
* semantics.c (maybe_convert_cond): Optionally warn when using an
assignment as a condition.
* typeck.c (convert_for_assignment): Optionally warn about
assigning the result of an assignment to a bool.
testsuite/:
* g++.dg/warn/Wparentheses-22.C: New test.
* g++.dg/warn/Wparentheses-23.C: New test.
From-SVN: r120348
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
* c-common.c(c_common_nodes_and_builtins): Since variants of
void_type_node get built before it is given a name, we need to
give those variants the name, too.
(complete_array_type): We need to work with the canonical main
type of the array, from which we will build the qualified version.
* params.def (PARAM_VERIFY_CANONICAL_TYPES): New.
* print-tree.c (print_node): Display canonical type information
for each type.
* stor-layout.c (layout_type): When we don't know the
alignment of a type for which we're building an array, we end up
guessing wrong, so make the type require structural equality.
* tree.c (make_node_stat): When we build a new type, it is its
own canonical type.
(build_type_attribute_qual_variant): When building an attribute
variant, its canonical type is the non-attribute variant. However,
if the attributes are target-dependent and they differ, we need to
use structural equality checks for this type.
(build_qualified_type): A qualified type is not equivalent to its
unqualified variant; set the canonical type appropriately.
(build_distinct_type_copy): When building a distinct type from
another type, the new type is its own canonical type.
(build_variant_type_copy): When building a new type variant, we
assume that it is equivalent to the original type.
(build_pointer_type_for_mode): When building a pointer type, also
build a canonical type pointer.
(build_reference_type_for_mode): When building a reference type,
also build a canonical type reference.
(build_index_type): When we can't hash an index type (e.g.,
because its maximum value is negative), the index type requires
structural equality tests.
(build_array_type): Build the canonical form of an array type.
(build_function_type): Function types require structural equality,
because they contain default arguments, attributes, etc.
(build_method_type_directly): Ditto for method types.
(build_offset_type): Build the canonical offset type.
(build_complex_type): Build the canonical vector type.
(make_vector_type): Build the canonical vector type.
* tree.h (TYPE_CANONICAL): New.
(TYPE_STRUCTURAL_EQUALITY_P): New.
(SET_TYPE_STRUCTURAL_EQUALITY): New.
(struct tree_type): Added "canonical" field.
* params.h (VERIFY_CANONICAL_TYPES): New.
* doc/c-tree.texi (TYPE_CANONICAL): Document.
(TYPE_STRUCTURAL_EQUALITY_P): Document.
(SET_TYPE_STRUCTURAL_EQUALITY): Document.
* doc/invoke.texi (verify-canonical-types): Document --param
parameter for verifying canonical types.
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
* typeck.c (structural_comptypes): Renamed from "comptypes".
(comptypes): Use canonical type information to perform fast type
comparison. When VERIFY_CANONICAL_TYPES, verify that the
canonical type comparison returns the same results as we would see
from the current, structural check. Support COMPARE_STRUCTURAL
when we need structural checks.
* decl.c (typename_compare): Fix comment.
(build_typename_type): TYPENAME_TYPE nodes require structural
equality checks, because they resolve different based on the
current class type.
(make_unbound_class_template): UNBOUND_CLASS_TEMPLATE nodes
require structural equality checks (for now).
(build_ptrmemfunc_type): Build the canonical pointer to member
function type.
(compute_array_index_type): Whenever we build a new index type
to represent the size of an array in a template, we need to mark
this index type as requiring structural equality. This goes for
arrays with value-dependent sizes with the current ABI, or all
arrays with ABI-1.
* tree.c (cplus_array_hash): New.
(struct cplus_array_info): New.
(cplus_array_compare): New.
(cplus_array_htab): New.
(build_cplus_array_type_1): Use a hash table to cache the array
types we build. Build the canonical array type for each array
type.
(cp_build_qualified_type_real): When building a cv-qualified array
type, use the hash table of array types and build canonical array
types as necessary.
(bind_template_template_parm): BOUND_TEMPLATE_TEMPLATE_PARM nodes
use structural equality (for now).
* cp-tree.h (COMPARE_STRUCTURAL): New.
* pt.c (canonical_template_parms): New.
(canonical_type_parameter): New.
(process_template_parm): Find the canonical type parameter.
(lookup_template_class): When we have named the primary template
type, set the canonical type for our template class to the primary
template type. If any of the template arguments need structural
equality checks, the template class needs structural equality
checks.
(tsubst): When reducing the level of a template template
parameter, we require structural equality tests for the resulting
parameter because its template parameters have not had their types
canonicalized. When reducing a template type parameter, find the
canonical reduced type parameter.
(any_template_arguments_need_structural_equality_p): New.
2007-01-02 Douglas Gregor <doug.gregor@gmail.com>
* objc-act.c (objc_build_volatilized_type): Keep track of
canonical types.
(objc_get_protocol_qualified_type): Ditto.
From-SVN: r120341
* fold-const.c (fold_binary) <EQ_EXPR>: Fold "(X^C1) eq/ne C2" into
"X eq/ne (C1^C2)". Fold "(X^Z) eq/ne (Y^Z)" as "X eq/ne Y" when Z
has no side-effects. Fold "(X^C1) eq/ne (Y^C2)" as "(X^(C1^C2))
eq/ne Y".
* gcc.dg/fold-eqxor-4.c: New test case.
From-SVN: r120333
gcc:
* configure.ac: Remove support for building with Apple's gcc-3.1.
config:
* mh-ppc-darwin: Remove support for building with Apple's gcc-3.1.
From-SVN: r120331
gcc:
PR middle-end/30311
* caller-save.c (add_stored_regs): Only handle SUBREGs if inner
REG is a hard register. Do not modify REG before calling
subreg_nregs.
* rtlanal.c (subreg_get_info): Don't assert size of XMODE is a
multiple of the size of YMODE for certain lowpart cases.
gcc/testsuite:
* gcc.c-torture/compile/pr30311.c: New test.
From-SVN: r120329
PR target/29166
* config/ia64/ia64.c (ia64_compute_frame_size): Account space for
save of BR0 in extra_spill_size instead of spill_size.
(ia64_expand_prologue): Save BR0 outside of the gr/br/fr spill
area.
(ia64_expand_epilogue): Restore BR0 from its new location.
testsuite/:
* g++.dg/eh/pr29166.C: New test.
From-SVN: r120319
2007-01-01 Andrew Pinski <pinskia@gmail.com>
* gimplify.c (gimplify_init_constructor <case VECTOR_TYPE>):
Use a temporary variable if the left hand side is not a gimple
register.
From-SVN: r120318
2007-01-01 Andrew Pinski <pinskia@gmail.com>
* gimplify.c (gimplify_return_expr): Make the temporary variable
for the return expression, a gimple register variable.
From-SVN: r120317
PR middle-end/30322
* fold-const.c (fold_binary): Fold X + ~X and ~X + X into -1 when
we don't care about trapping overflow. Only convert -A - 1 into ~A
when we don't care about trapping overflow.
* gcc.dg/fold-plusnot-1.c: New test case.
From-SVN: r120300
2006-12-31 Richard Guenther <rguenther@suse.de>
PR middle-end/30338
* fold-const.c (fold_binary): Fix type-mismatch in folding
of -1 - A to ~A.
* gcc.c-torture/compile/pr30338.c: New testcase.
From-SVN: r120297
* cgraph.c (cgraph_exapnd_queue): Rename to...
(cgraph_new_nodes): ... this one.
(cgraph_state): New global variable.
(cgraph_add_new_function): Work in more cases.
* cgraph.h (cgraph_expand_queue): Rename to ...
(cgraph_new_nodes): ... this one.
(cgraph_state): New enum and static variable.
(cgraph_add_new_function): Update prototype.
(cgraph_process_new_functions): New.
* omp-low.c (expand_omp_parallel): Update.
* cgraphunit.c (initialize_inline_failed): Declare early.
(cgraph_process_new_functions): New function.
(cgraph_assemble_pending_functions): Use it.
(cgraph_expand_all_functions): Use it.
(cgraph_optimize): Use it; set cgraph_state.
* passes.c (execute_one_pass, execute_ipa_pass_list): Process new
functions
From-SVN: r120282
* c-common.c (c_define_builtins): New static function broken out
of c_common_nodes_and_builtins.
(c_common_nodes_and_builtins): Call c_define_builtins unless only
doing preprocessing.
From-SVN: r120264
* tree-inline.c (remap_ssa_name): New function.
(remap_decl): Update SSA datastructures for DECLs.
(copy_body_r): Deal with SSA_NAMEs; add referenced global vars.
(copy_bb): Set SSA_NAME def stmts.
(update_ssa_acorss_eh_edges): New function.
(copy_edge_for_bb): Call it; mark new vars for renaming.
(copy_phis_for_bb): New function.
(initialize_cfun): Break out from ...
(copy_cfg_body): ... here; maintain AUX map for both directions;
call SSA updating workers; do not produce copy of cfun to be copied.
(setup_one_parameter): Do propagation across SSA form.
(declare_return_variable): Work on SSA; use return_slot instead of
address of return slot of argument to avoid folding back and forth.
(expand_call_inline): Update SSA from on return values.
(optimize_inline_calls): Do sanity checking, dead blocks removal,
update SSA form.
(tree_function_verioning): Update initialize_cfun.
From-SVN: r120260
2006-12-29 Marcin Dalecki <martin@dalecki.de>
* doc/invoke.texi: Replace no longer supported -fno-strength-reduce
with -fmerge-constants in sample code.
From-SVN: r120253
* basic-block.h: Remove the prototype for
expected_value_to_br_prob.
* rtl.h: Remove the prototypes for expand_builtin_expect_jump
and purge_line_number_notes.
From-SVN: r120186
* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne,
assert_no_overflow_lt, assert_loop_rolls_lt,
number_of_iterations_lt, number_of_iterations_le,
number_of_iterations_cond, number_of_iterations_exit):
Use integer_zerop/integer_nonzerop instead of
null_or_integer_zerop/nonnull_and_integer_nonzerop.
* tree.h (null_or_integer_zerop, nonnull_and_integer_nonzerop):
Removed.
* tree-scalar-evolution.c (simple_iv): Return zero for step of
an invariant.
* tree-ssa-loop-ivopts.c (alloc_iv): Do not set step of invariants
to zero.
(get_iv): Return NULL for non-scalar types. Use zero as a step
of an invariant.
(determine_biv_step, find_interesting_uses_op,
find_interesting_uses_cond, find_interesting_uses_stmt,
add_old_ivs_candidates, determine_use_iv_cost_condition,
rewrite_use_compare, remove_unused_ivs):
Use integer_zerop instead of null_or_integer_zerop.
(struct ifs_ivopts_data): Replace step_p field with step field.
(idx_find_step): Use zero as a step of an invariant. Modify
step instead of *step_p.
(find_interesting_uses_address): Use zero as a step of an invariant.
Use integer_zerop instead of null_or_integer_zerop.
(find_interesting_uses_outside): Call find_interesting_uses_op only
for phi nodes for real operands.
(add_candidate_1): Expect step to be non-NULL.
* tree-ssa-loop-prefetch.c (idx_analyze_ref): Expect step to be
non-NULL.
From-SVN: r120179
* Makefile.in (final.o): Depend on vecprim.h.
* final.c: Include vecprim.h.
(insn_addresses_): Change the type to VEC(int,heap)*.
* insn-addr.h (INSN_ADDRESSES_DEFN): Remove.
(INSN_ADDRESSES, INSN_ADDRESSES_ALLOC, INSN_ADDRESSES_SIZE,
INSN_ADDRESSES_NEW): Use VEC instead of VARRAY.
From-SVN: r120177
* toplev.c (dump_memory_report): Break out from...
(finalize): Here.
* toplev.h (dump_memory_report): Declare.
(cmp_statistic): Rename to ...
(final_cmp_statistic): ... this one
(cmp_statistic): New.
(dump_ggc_loc_staitsitcs): New FINAL parpameter.
* common.opt (-fpre-ipa-mem-report, -fpost-ipa-mem-report): Declare.
* varray.c (dump_varray_staitiscs): Do not segfault when no varray was
allocated so far.
From-SVN: r120168
* basic-block.h: Remove the prototype for
commit_edge_insertions_watch_calls.
* cfgrtl.c (commit_edge_insertion): Drop the last argument.
Simplify.
(commit_edge_insertions_watch_calls): Remove.
(commit_edge_insertions): Adjust the call to
commit_one_edge_insertion.
From-SVN: r120157
2006-12-21 Andrew Pinski <pinskia@gmail.com>
* tree-nested.c (create_tmp_var_for): Check for vector type
when setting DECL_GIMPLE_REG_P.
From-SVN: r120143
* config/spu/spu.h (ARG_POINTER_CFA_OFFSET): Define.
* config/spu/spu.c (spu_expand_prologue): Set RTX_FRAME_RELATED_P
for insn setting up the frame pointer. Do not set it for insns
setting up scratch registers or storing the backchain.
From-SVN: r120125
PR other/29639
* configure.ac (HAVE_LD_EH_GC_SECTIONS): Check that exception tables
are kept for .gnu.linkonce.t sections if COMDAT groups are disabled.
* configure: Regenerate.
From-SVN: r120121
2006-12-21 Daniel Berlin <dberlin@dberlin.org>
* tree-ssa-structalias.c (build_constraint_graph): Insert complex
offsetted constraints into rhsvar, not lhsvar.
From-SVN: r120114
PR middle-end/30262
PR middle-end/30263
* tree-nested.c (walk_asm_expr): New function.
(walk_stmts): Use it for ASM_EXPR.
* gcc.c-torture/execute/20061220-1.c: New test.
* gcc.dg/gomp/asm-1.c: New test.
From-SVN: r120106
PR target/30230
* config/ia64/ia64.c (ia64_add_bundle_selector_before): New function.
(bundling): Use it.
* g++.dg/eh/ia64-2.C: New test.
From-SVN: r120103
* simplify-rtx.c (simplify_subreg): Use the correct mode when
determining whether a SUBREG of a CONCAT refers to the first or
second component.
From-SVN: r120101
* tree-flow-inline.h (gimple_var_anns): New function.
(var_ann): Use hashtable for static functions.
* tree-dfa.c (create_var_ann): Likewise.
* tree-ssa.c (var_ann_eq, var_ann_hash): New functions.
(init_tree_ssa): Initialize var anns.
(delete_tree_ssa): Delete var anns; also clear out gimple_df.
* tree-flow.h (struct static_var_ann_d): New structure.
(gimple_df): Add var_anns.
From-SVN: r120089
gcc/
2006-12-20 Carlos O'Donell <carlos@codesourcery.com>
PR bootstrap/30242
* gcc/c-incpath.c (add_standard_paths): Only relocate paths that
begin with the configured prefix.
From-SVN: r120088
2006-12-20 Andrew Pinski <pinskia@gmail.com>
PR middle-end/30143
* omp-low.c (init_tmp_var): New function.
(save_tmp_var): New function.
(lower_omp_1): Use them for VAR_DECL.
2006-12-20 Andrew Pinski <pinskia@gmail.com>
PR middle-end/30143
* gcc.dg/gomp/complex-1.c: New testcase.
From-SVN: r120080
2006-12-19 Andrew Pinski <pinskia@gmail.com>
PR tree-opt/30045
* tree-vrp.c (nonnull_arg_p): Treat the static decl as always
non null.
2006-12-19 Andrew Pinski <pinskia@gmail.com>
PR tree-opt/30045
* gcc.dg/pr30045.c: New test
From-SVN: r120069
2006-12-18 Andrew Pinski <pinskia@gmail.com>
PR target/29779
* config/rs6000/rs6000.c (altivec_init_builtins): Change to set
READONLY on __builtin_altivec_mask_for_load instead of adding
the attribute.
From-SVN: r120045
2006-12-18 Roger Sayle <roger@eyesopen.com>
Eric Christopher <echristo@apple.com>
PR target/29302
* real.c (real_maxval): Correctly handle IBM extended double format.
Co-Authored-By: Eric Christopher <echristo@apple.com>
From-SVN: r120040
./: * c.opt (Wmissing-declarations): Add C++ and ObjC++.
* doc/invoke.texi (Warning Options): -Wmissing-declarations now
works for C++.
cp/:
* decl.c (start_preparsed_function): Add support for
-Wmissing-declarations.
testsuite:
* g++.dg/warn/Wmissing-declarations-1.C: New test.
From-SVN: r120012
2006-12-18 Andrew MacLeod <amacleod@redhat.com>
* tree-ssa-operands.h (struct vdef_optype_d): Rename to voptype_d.
(struct vuse_optype_d): Delete.
(SSA_OPERAND_MEMORY_SIZE): Delete.
(struct ssa_operand_memory_d): Change mem array to size one.
(NUM_VOP_FREE_BUCKETS): Define.
(free_vuses, free_vdefs): Replace with vop_free_buckets array.
(vdef_ops, vuse_ops, struct ssa_operand_iterator_d): Use voptype_d type.
* tree-pretty-print.c (dump_vops): Use voptype_d type.
* tree-ssa-operands.c (vop_free_bucket_size): New. Number of operands
which fit into a chunk of memory from a specific bucket.
(vop_free_bucket_index): New. Find correct size memory bucket.
(init_vop_buckets): New. Initialize VOP free memory buckets.
(add_vop_to_freelist): New. Add a VOP to the correct free list.
(ssa_operand_mem_size): New. Current size of an operand memory chunk.
(init_ssa_operands): Initialize operand memory and free lists.
(fini_ssa_operands): Remove references to free_vuses and free_vdefs.
(ssa_operand_alloc): Use graduated size memory allocation.
(APPEND_OP_AFTER, MOVE_HEAD_AFTER, MOVE_HEAD_TO_FREELIST,
INITIALIZE_USE): Remove.
(alloc_vop): New. Allocate a virtual operand.
(alloc_vdef, alloc_vuse): Delete.
(add_def_op, add_use_op): Directly setup pointers.
(add_vop): New. Add a virtual operand.
(add_vuse_op, add_vdef_op): Call add_vop.
(realloc_vop): New. Reallocate a virtual operand.
(realloc_vdef, realloc_vuse): Call realloc_vop.
(finalize_ssa_def_ops): Delete. Move content to finalize_ssa_defs.
(finalize_ssa_defs): Optimize for common case, remove code based on
sorted pointers which was a waste of time.
(finalize_ssa_use_ops): Delete. Move content to finalize_ssa_uses.
(finalize_ssa_uses): Update last pointer.
(finalize_ssa_vdef_ops): Delete. Move content to finalize_ssa_vdefs.
(finalize_ssa_vdefs, finalize_ssa_vuse_ops): Use voptype_d and
directly manipulate pointers.
(copy_virtual_operands): Use voptype_d, and no need to update pointers.
From-SVN: r120009
* cselib.c (struct cselib_val_struct): Make val_rtx its
own field, remove the union that contained it.
* cselib.c: Update accordingly where necessary.
From-SVN: r119994
* cse.c (have_eh_succ_edges): New function.
(cse_insn): Don't remove dead EH edges here
(cse_extended_basic_block): Do it here.
(rest_of_handle_cse, rest_of_handle_cse2): Don't assert
that we have removed all dead edges.
From-SVN: r119993
* cse.c (cse_find_path): Don't wrap a gcc_assert in ENABLE_CHECKING.
(cse_extended_basic_block): When truncating a path while processing
it, make sure to clear the visited bit on the basic blocks in the
truncated part of the path.
(cse_main): Use reverse completion order, not DFS order, to walk
the CFG.
(gate_handle_cse): Revert erroneous commit of a counter.
From-SVN: r119985
* cse.c (this_insn_cc0, this_insn_cc0_mode): New global
variables, moved out from cse_insn.
(prev_insn): Remove this global variable).
(new_basic_block): Don't set it.
(cse_insn): Idem. Also, move code to delete unused CC0-setter
insns and code to set prev_insn_cc0 and prev_insn_cc0_mode
from here...
(cse_extended_basic_block): ...to here. Do not clear
prev_insn_cc0 until after recording equivalences from jumps.
From-SVN: r119984
* omp-low.c (expand_omp_parallel): Set function properties.
* function.h (struct function): Add curr_properties and last_verified.
* passes.c (register_dump_files): Do not set TODO_set_props for the
first pass
(init_optimization_passes): Set it here; reorder initialization so the
dump files appear in more logical order.
(last_verified, curr_properties): Kill.
(do_per_function): New function.
(execute_function_todo): Break out from ...
(execute_todo): ... here; handle per-function flags.
(clear_last_verified, verify_curr_properties,
update_properties_after_pass): New functions.
(execute_one_pass): Handle per-function properties.
(execute_ipa_pass_list): Use do_per_function; sanity check that cfun
and current_function_decls are cleared out.
* ipa-cp.c (constant_val_insert): Clear cfun/current_function_decl
after use.
From-SVN: r119966