PR middle-end/28850
* tree-pass.h (pass_cleanup_eh): New function.
(remove_unreachable_regions): Break code handling RTL
to rtl_remove_unreachable_regions; remove ERT_MUST_NOT_THROW
that can not be reached by runtime.
(can_be_reached_by_runtime): New function.
(label_to_region_map): New function.
(num_eh_regions): New function.
(rtl_remove_unreachable_regions): New function.
(convert_from_eh_region_ranges): Call rtl_remove_unreachable_regions.
(remove_eh_region): New function.
* except.h: Include sbitmap and vecprim.
(remove_eh_region, remove_unreachable_regions, label_to_region_map,
num_eh_regions): Declare.
* passes.c (init_optimization_passes): Schedule cleanup_eh.
* Makefile.in (EXCEPT_H): New; replace all uses of except.h
by it.
* tree-eh.c (tree_remove_unreachable_handlers): New function.
(tree_empty_eh_handler_p): New function.
(cleanup_empty_eh): New function.
(cleanup_eh): New function.
(pass_cleanup_eh): New function.
From-SVN: r145233
* except.c (duplicate_eh_regions_0): Handle AKA bitmap.
(duplicate_eh_regions_1): Likewise.
(duplicate_eh_regions): Likewise; cleanup code gorwing the region
vector; call EH verification.
(foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
Be ready for region being removed.
From-SVN: r145230
gcc/
2009-03-00 David Ayers <ayers@fsfe.org>
PR objc/27377
* c-typeck.c (build_conditional_expr): Emit ObjC warnings
by calling objc_compare_types and surpress warnings about
incompatible C pointers that are compatible ObjC pointers.
testsuite/
2009-03-00 David Ayers <ayers@fsfe.org>
PR objc/27377
* objc.dg/conditional-1.m: New tests.
From-SVN: r145225
* cgraphbuild.c (build_cgraph_edges, rebuild_cgraph_edges): Don't
call initialize_inline_failed.
(initialize_inline_failed): Move it from here ...
* cgraph.c (initialize_inline_failed): ... to here.
(cgraph_create_edge): Call initialize_inline_failed rather than
setting inline_failed directly.
testsuite/
* gcc.dg/winline-10.c: New test.
From-SVN: r145215
2009-03-28 Martin Jambor <mjambor@suse.cz>
* fold-const.c (get_pointer_modulus_and_residue): New parameter
allow_func_align.
(fold_binary): Allow function decl aligment consideration is the
second argument is integer constant one.
* tree-ssa-forwprop.c (simplify_bitwise_and): New function.
(tree_ssa_forward_propagate_single_use_vars): Handle assing statements
with BIT_AND_EXPR on the RHS by calling simplify_bitwise_and.
* g++.dg/tree-ssa/fwprop-align.C: New test.
From-SVN: r145203
* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): If macro
following vector keyword has expansion starting with pixel or bool
keyword, expand vector to __vector and pixel or bool to __pixel or
__bool.
* gcc.target/powerpc/altivec-28.c: New test.
From-SVN: r145199
2009-03-28 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38723
* tree-ssa-pre.c (compute_avail): Add all default definitions to
the entry block.
* gcc.dg/tree-ssa/ssa-fre-22.c: New testcase.
From-SVN: r145197
2009-02-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/36703
PR fortran/36528
* trans-expr.c (gfc_conv_function_val): Stabilize Cray-pointer
function references to ensure that a valid expression is used.
(gfc_conv_function_call): Pass Cray pointers to procedures.
2009-02-13 Paul Thomas <pault@gcc.gnu.org>
PR fortran/36528
* gfortran.dg/cray_pointers_8.f90: New test.
PR fortran/36703
* gfortran.dg/cray_pointers_9.f90: New test.
From-SVN: r145196
2009-03-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38765
* parse.c (parse_derived): Do not break on finding pointer,
allocatable or private components.
2009-03-28 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38765
* gfortran.dg/alloc_comp_assign_9.f90: New test.
From-SVN: r145195
2009-03-28 Daniel Kraft <d@domob.eu>
* intrinsics/string_intrinsics.c: #include <assert.h>
* intrinsics/string_intrinsics_inc.c (string_trim): Use string_len_trim
instead of calculating the length directly.
(string_len_trim): For KIND=1, speed search up.
2009-03-28 Daniel Kraft <d@domob.eu>
* gfortran.dg/trim_1.f90: New test.
From-SVN: r145192
* tree-pass.h (pass_fixup_cfg): New pass.
* ipa-inline.c (inline_transform): Set
always_inline_functions_inlined/after_inlining.
* tree-optimize.c (execute_fixup_cfg): Do not set them here.
(pass_fixup_cfg): New pass.
* passes.c (init_optimization_passes): Add fixup_cfg.
From-SVN: r145191
2009-03-28 Richard Guenther <rguenther@suse.de>
* gcc.dg/Warray-bounds.c: Do not use redundant stores.
* g++.dg/warn/Warray-bounds.C: Likewise.
From-SVN: r145189
2009-03-28 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38458
* tree-ssa-copy.c (copy_prop_visit_phi_node): For the first
argument use the arguments copy-of value.
From-SVN: r145185
2008-09-03 Doug Kwan <dougkwan@google.com>
* cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
enums instead of reason strings.
* cgraph.c (cgraph_create_edge): Same.
(cgraph_inline_failed_string): New function.
* cgraph.h (cgraph_inline_failed_t): New enum type.
(cgraph_inline_failed_string): New prototype.
(struct cgraph_edge): Change type of INLINED_FAILED from constant
char pointer to cgraph_inline_failed_t.
(cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
(cgraph_default_inline_p): Ditto.
* gcc/cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
to cgraph_inline_failed_t pointer.
* cif-code.def: New file.
* ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
reason string.
(cgraph_check_inline_limits): Change type of REASON to pointer to
cgraph_inline_failed_t. Replace reason strings with enums.
(cgraph_default_inline_p): Ditto.
(cgraph_recursive_inlining_p): Ditto.
(update_caller_keys): Change type of FAILED_REASON to
cgraph_inline_failed_t.
(cgraph_set_inline_failed): Change type of REASON to pointer to
cgraph_inline_failed_t. Call cgraph_inline_failed_string to
convert enums to strings for text output.
(cgraph_decide_inlining_of_small_function): Change FAILED_REASON
to be of type cgraph_inline_failed_t. Replace reason strings with
enums. Call cgraph_inline_failed_string to covert enums
to strings for text output.
(cgraph_decide_inlining): Replace reason strings with enums.
(cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
to cgraph_inline_failed_t type. Call cgraph_inline_failed_string
for text output.
* tree-inline.c (expand_call_inline): Change type of REASON
to cgraph_inline_failed_t. Replace reason strings with enums.
Call cgraph_inline_failed_string for text output.
* Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
(cgraph.o): Ditto.
From-SVN: r145177
2008-09-03 Doug Kwan <dougkwan@google.com>
* cgraphbuild.c (initialize_inline_failed): Use cgraph_inline_failed_t
enums instead of reason strings.
* cgraph.c (cgraph_create_edge): Same.
(cgraph_inline_failed_string): New function.
* cgraph.h (cgraph_inline_failed_t): New enum type.
(cgraph_inline_failed_string): New prototype.
(struct cgraph_edge): Change type of INLINED_FAILED from constant
char pointer to cgraph_inline_failed_t.
(cgraph_inline_p): Adjust prototype to use cgraph_inline_failed_t.
(cgraph_default_inline_p): Ditto.
* gcc/cgraphunit.c (cgraph_inline_p): Change type of parameter REASON
to cgraph_inline_failed_t pointer.
* cif-code.def: New file.
* ipa-inline.c (cgraph_mark_inline_edge): Use an enum instead of a
reason string.
(cgraph_check_inline_limits): Change type of REASON to pointer to
cgraph_inline_failed_t. Replace reason strings with enums.
(cgraph_default_inline_p): Ditto.
(cgraph_recursive_inlining_p): Ditto.
(update_caller_keys): Change type of FAILED_REASON to
cgraph_inline_failed_t.
(cgraph_set_inline_failed): Change type of REASON to pointer to
cgraph_inline_failed_t. Call cgraph_inline_failed_string to
convert enums to strings for text output.
(cgraph_decide_inlining_of_small_function): Change FAILED_REASON
to be of type cgraph_inline_failed_t. Replace reason strings with
enums. Call cgraph_inline_failed_string to covert enums
to strings for text output.
(cgraph_decide_inlining): Replace reason strings with enums.
(cgraph_decide_inlining_incrementally): Change type of FAILED_REASON
to cgraph_inline_failed_t type. Call cgraph_inline_failed_string
for text output.
* tree-inline.c (expand_call_inline): Change type of REASON
to cgraph_inline_failed_t. Replace reason strings with enums.
Call cgraph_inline_failed_string for text output.
* Makefile.in (CGRAPH_H): Add cif-code.def to dependencies.
(cgraph.o): Ditto.
From-SVN: r145176
* cgraph.c (cgraph_function_body_availability): Functions declared
inline are always safe to assume that it is not going to be replaced.
From-SVN: r145174
2009-03-28 Richard Guenther <rguenther@suse.de>
PR tree-optimization/38968
* tree-vect-analyze.c (vect_compute_data_ref_alignment):
Use FLOOR_MOD_EXPR to compute misalignment.
* gfortran.dg/vect/fast-math-pr38968.f90: New testcase.
From-SVN: r145171
* tree-eh.c (inlinable_call_p): New function.
(make_eh_edges): Use it.
(verify_eh_edges): Use it.
(stmt_can_throw_external, stmt_can_throw_internal): Use it.
* except.c (reachable_next_level): Add inlinable_function argument
(sjlj_find_directly_reachable_regions): Update.
(add_reachable_handler): Do not set saw_any_handlers.
(reachable_next_level): Handle MUST_NOT_THROW more curefully.
(foreach_reachable_handler, can_throw_internal_1, can_throw_external_1):
Add new inlinable call parameter.
(can_throw_internal, can_throw_external): Update.
* except.h (can_throw_internal_1, can_throw_external_1,
foreach_reachable_handler): Update declaration.
From-SVN: r145166