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
2006-12-14 Richard Guenther <rguenther@suse.de>
PR tree-optimization/30197
* builtins.c (fold_builtin_cexp): New function to fold cexp
to cexpi and exp parts.
* tree-ssa-pre.c (try_combine_conversion): Also handle
REALPART_EXPR and IMAGPART_EXPR.
* gcc.c-torture/execute/complex-1.c: Fix function name.
* gcc.dg/builtins-61.c: New testcase.
From-SVN: r119860
2006-12-13 Jakub Jelinek <jakub@redhat.com>
* g++.dg/debug/vartrack1.C: New test.
* g++.dg/opt/ifcvt1.C: New test.
* gcc.dg/tls/opt-13.c: New test.
* gcc.dg/20060425-2.c: New test.
* g++.dg/opt/pr15054-2.C: New test.
* gcc.c-torture/execute/20060420-1.c: New test.
* gcc.c-torture/execute/20060412-1.c: New test.
* objc/compile/20060406-1.m: New test.
2006-12-08 Alexandre Oliva <aoliva@redhat.com>
* g++.dg/template/array17.C: New test.
2006-02-25 Alexandre Oliva <aoliva@redhat.com>
* gcc.target/powerpc/altivec-23.c: New test.
From-SVN: r119837
2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/28436
* tree.h (DECL_COMPLEX_GIMPLE_REG_P): Rename to ...
(DECL_GIMPLE_REG_P): This.
* fold-const.c (fold_indirect_ref_1): Fold *(foo *)&vectorfoo into
using BIT_FIELD_REF.
* omp-low.c (omp_copy_decl_2): Use the renamed DECL_GIMPLE_REG_P.
* tree-gimple.c (is_gimple_reg): Use the renamed DECL_GIMPLE_REG_P
and check for VECTOR_TYPE.
* expr.c (get_inner_reference): Set the mode for BIT_FIELD_REF with
vector types.
* tree-flow-inline.h (var_can_have_subvars): Use the renamed
DECL_GIMPLE_REG_P.
* gimplify.c (internal_get_tmp_var): Use the renamed DECL_GIMPLE_REG_P
and check for VECTOR_TYPE.
(gimplify_bind_expr): Likewise.
(gimplify_function_tree): Likewise.
* expmed.c: Include target.h.
(extract_bit_field): For vector mode, try find a better mode first.
If that fails use gen_lowpart (for vectors only).
* tree-dfa.c (make_rename_temp): Use the renamed DECL_GIMPLE_REG_P
and check for VECTOR_TYPE.
* tree-ssa-pre.c (create_expressions_by_pieces): Likewise.
(insert_into_preds_of_block): Likewise.
(insert_fake_stores): Create gimple register store_tmps for
vector types.
* tree-sra.c (sra_elt): New field, is_vector_lhs.
(sra_walk_expr <case BIT_FIELD_REF>): For vector types that
are the left hand side, set the element's is_vector_lhs to true.
(instantiate_element): For vector types which were on the left hand size, set DECL_GIMPLE_REG_P to false.
* tree-nested.c (create_tmp_var_for): Use the renamed DECL_GIMPLE_REG_P. * tree-inline.c (declare_return_variable): Use the renamed
DECL_GIMPLE_REG_P
and check for VECTOR_TYPE. (copy_decl_to_var): Use the renamed DECL_GIMPLE_REG_P.
(copy_result_decl_to_var): Likewise.
* tree-vect-transform.c (vect_get_new_vect_var): For vector types, create a gimple register variable.
(vect_permute_store_chain): Set DECL_GIMPLE_REG_P to true for the
vect_inter_* temp variables.
* Makefile.in (expmed.o): Update dependencies.
2006-12-12 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR tree-opt/28436
* gcc.c-torture/compile/vector-1.c: New test.
* gcc.c-torture/compile/vector-2.c: New test.
* gcc.c-torture/compile/vector-3.c: New test.
From-SVN: r119801
2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/29945
* config/spu/spu.md (extend_compare<mode>): New pattern.
(extend_compare): Change to expand and use the above pattern.
2006-11-29 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR target/29945
* gcc.c-torture/compile/pr29945.c: New testcase.
From-SVN: r119348
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
* cfgrtl.c (rtl_delete_block): Move the code for getting last insn of
bb to ...
(get_last_bb_insn): ... new global function.
(basic_block.h): Declare it.
* haifa-sched.c (create_recovery_block): Use it.
2006-11-16 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR target/29201
* gcc.c-torture/compile/pr29201.c: New test for ia64 target.
From-SVN: r118882
2006-11-12 Michael Matz <matz@suse.de>
Roger Sayle <roger@eyesopen.com>
PR rtl-optimization/29797
* ifcvt.c (noce_try_bitop): Correct calculation of bitnum on
BITS_BIG_ENDIAN targets.
* gcc.c-torture/execute/pr29797-1.c: New test case.
From-SVN: r118740
2006-11-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR rtl-opt/28812
* alias.c (fixed_scalar_and_varying_struct_p): Don't return a
non null value if the struct memory access is in the 0th
aliasing set.
2006-11-11 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR rtl-opt/28812
* gcc.c-torture/execute/mayalias-3.c: New test.
From-SVN: r118716
PR middle-end/29695
* fold-const.c (fold_ternary): Fix A < 0 ? <sign bit of A> : 0
simplification.
* gcc.c-torture/execute/pr29695-1.c: New test.
* gcc.c-torture/execute/pr29695-2.c: New test.
From-SVN: r118497
gcc:
2006-11-03 J"orn Rennecke <joern.rennecke@st.com>
* config/sh/crt1.asm: Fix #ifdef indent.
2006-11-03 J"orn Rennecke <joern.rennecke@st.com>
Merged from STMicroelectronics sources:
2006-10-06 Andrew Stubbs <andrew.stubbs@st.com>
* config/sh/crt1.asm (vbr_600): Add missing #if.
2006-08-03 J"orn Rennecke <joern.rennecke@st.com>
* sh.opt (mfused-madd): New option.
* sh.md (mac_media, macsf3): Make conditional on TARGET_FMAC.
2006-07-04 Andrew Stubbs <andrew.stubbs@st.com>
* config/sh/crt1.asm (vbr_start): Move to new section .test.vbr.
Remove pointless handler at VBR+0.
(vbr_200, vbr_300, vbr_500): Remove pointless handler.
(vbr_600): Save and restore mach and macl, fpul and fpscr and fr0 to
fr7. Make sure the timer handler is called with the correct FPU
precision setting, according to the ABI.
2006-06-14 J"orn Rennecke <joern.rennecke@st.com>
* config/sh/sh.opt (m2a-single, m2a-single-only): Fix Condition.
* config/sh/sh.h (SUPPORT_SH2A_NOFPU): Fix condition.
(SUPPORT_SH2A_SINGLE_ONLY, SUPPORT_SH2A_SINGLE_ONLY): Likewise.
2006-06-09 J"orn Rennecke <joern.rennecke@st.com>
* sh.md (cmpgeusi_t): Change into define_insn_and_split. Accept
zero as second operand.
2006-04-28 J"orn Rennecke <joern.rennecke@st.com>
* config/sh/divtab-sh4-300.c, config/sh/lib1funcs-4-300.asm:
Fixed some bugs related to negative values, in particular -0
and overflow at -0x80000000.
* config/sh/divcost-analysis: Added sh4-300 figures.
2006-04-27 J"orn Rennecke <joern.rennecke@st.com>
* config/sh/t-sh (MULTILIB_MATCHES): Add -m4-300* / -m4-340 options.
2006-04-26 J"orn Rennecke <joern.rennecke@st.com>
* config/sh/t-sh (OPT_EXTRA_PARTS): Add libgcc-4-300.a.
($(T)div_table-4-300.o, $(T)libgcc-4-300.a): New rules.
* config/sh/divtab-sh4-300.c, config/sh/lib1funcs-4-300.asm:
New files.
* config/sh/embed-elf.h (LIBGCC_SPEC): Use -lgcc-4-300 for -m4-300* /
-m4-340.
2006-04-24 J"orn Rennecke <joern.rennecke@st.com>
SH4-300 scheduling description & fixes to SH4-[12]00 description:
* sh.md: New instruction types: fstore, movi8, fpscr_toggle, gp_mac,
mac_mem, mem_mac, dfp_mul, fp_cmp.
(insn_class, dfp_comp, any_fp_comp): Update.
(push_fpul, movsf_ie, fpu_switch, toggle_sz, toggle_pr): Update type.
(cmpgtsf_t, "cmpeqsf_t, cmpgtsf_t_i4, cmpeqsf_t_i4): Likewise.
(muldf3_i): Likewise.
(movsi_i): Split rI08 alternative into two separate alternatives.
Update type.
(movsi_ie, movsi_i_lowpart): Likewise.
(movqi_i): Split ri alternative into two separate alternatives.
Update type.
* sh1.md (sh1_load_store, sh1_fp): Update.
* sh4.md (sh4_store, sh4_mac_gp, fp_arith, fp_double_arith): Update.
(mac_mem, sh4_fpscr_toggle): New insn_reservations.
* sh4a.md (sh4a_mov, sh4a_load, sh4a_store, sh4a_fp_arith): Update.
(sh4a_fp_double_arith): Likewise.
* sh4-300.md: New file.
* sh.c (sh_handle_option): Handle m4-300* options.
(sh_adjust_cost): Fix latency of auto-increments.
Handle SH4-300 differently than other SH4s. Check for new insn types.
* sh.h (OVERRIDE_OPTIONS): Initilize sh_branch_cost if it has not
been set by an option.
* sh.opt (m4-300, m4-100-nofpu, m4-200-nofpu): New options.
(m4-300-nofpu, -m4-340, m4-300-single, m4-300-single-only): Likewise.
(mbranch-cost=): Likewise.
* superh.h (STARTFILE_SPEC): Take -m4-340 into account.
* sh.md (mulsf3): Remove special expansion code.
(mulsf3_ie): Now a define_insn_and_split.
(macsf3): Allow for TARGET_SH4.
* sh.md (cbranchsi4, cbranchdi4, cbranchdi4_i): New patterns.
* sh.c (prepare_cbranch_operands, expand_cbranchsi4): New functions.
(expand_cbranchdi4): Likewise.
(sh_rtx_costs): Give lower cost for certain CONST_INT values and for
CONST_DOUBLE if the outer code is COMPARE.
* sh.h (OPTIMIZATION_OPTIONS): If not optimizing for size, set
TARGET_CBRANCHDI4 and TARGET_EXPAND_CBRANCHDI4.
(OVERRIDE_OPTIONS): For TARGET_SHMEDIA, clear TARGET_CBRANCHDI4.
(LEGITIMATE_CONSTANT_P): Also allow DImode and VOIDmode CONST_DOUBLEs.
Remove redundant fp_{zero,one}_operand checks.
* sh.opt (mcbranchdi, mexpand-cbranchdi, mcmpeqdi): New options.
* sh-protos.h (prepare_cbranch_operands, expand_cbranchsi4): Declare.
(expand_cbranchdi4): Likewise.
2006-04-20 J"orn Rennecke <joern.rennecke@st.com>
* sh.h (LOCAL_ALIGNMENT): Use DATA_ALIGNMENT.
gcc/testsuite:
2006-11-03 J"orn Rennecke <joern.rennecke@st.com>
* testsuite/gcc.c-torture/execute/arith-rand-ll.c:
Also test for bogus rest sign.
From-SVN: r118458
2006-10-19 Daniel Berlin <dberlin@dberlin.org>
Fix PR tree-optimization/28778
Fix PR tree-optimization/29156
Fix PR tree-optimization/29415
* tree.h (DECL_PTA_ARTIFICIAL): New macro.
(tree_decl_with_vis): Add artificial_pta_var flag.
* tree-ssa-alias.c (is_escape_site): Remove alias info argument,
pushed into callers.
* tree-ssa-structalias.c (nonlocal_for_type): New variable.
(nonlocal_all): Ditto.
(struct variable_info): Add directly_dereferenced member.
(var_escaped_vars): New variable.
(escaped_vars_tree): Ditto.
(escaped_vars_id): Ditto.
(nonlocal_vars_id): Ditto.
(new_var_info): Set directly_dereferenced.
(graph_size): New variable
(build_constraint_graph): Use graph_size.
(solve_graph): Don't process constraints that cannot change the
solution, don't try to propagate an empty solution to our
successors.
(process_constraint): Set directly_dereferenced.
(could_have_pointers): New function.
(get_constraint_for_component_ref): Don't process STRING_CST.
(nonlocal_lookup): New function.
(nonlocal_insert): Ditto.
(create_nonlocal_var): Ditto.
(get_nonlocal_id_for_type): Ditto.
(get_constraint_for): Allow results vector to be empty in the case
of string constants.
Handle results of calls properly.
(update_alias_info): Update alias info stats on number and type of
calls.
(find_func_aliases): Use could_have_pointers.
(make_constraint_from_escaped): Renamed from
make_constraint_to_anything, and changed to make constraints from
escape variable.
(make_constraint_to_escaped): New function.
(find_global_initializers): Ditto.
(create_variable_info_for): Make constraint from escaped to any
global variable, and from any global variable to the set of
escaped vars.
(intra_create_variable_infos): Deal with escaped instead of
pointing to anything.
(set_uids_in_ptset): Do type pruning on directly dereferenced
variables.
(find_what_p_points_to): Adjust call to set_uids_with_ptset.
(init_base_vars): Fix comment, and initialize escaped_vars.
(need_to_solve): Removed.
(find_escape_constraints): New function.
(expand_nonlocal_solutions): Ditto.
(compute_points_to_sets): Call find_escape_constraints and
expand_nonlocal_solutions.
(delete_points_to_sets): Don't fall off the end of the graph.
(init_alias_heapvars): Initialize nonlocal_for_type and
nonlocal_all.
(delete_alias_heapvars): Free nonlocal_for_type and null out
nonlocal_all.
From-SVN: r117891
PR middle-end/29241
* cgraphunit.c (cgraph_preserve_function_body_p): Preserve functions
declared always_inline even when not inlining.
* gcc.c-torture/compile/pr29241.c: New testcase.
From-SVN: r117753
PR middle-end/29272
* builtins.c (var_decl_component_p): New function.
(fold_builtin_memset, fold_builtin_memory_op): Restrict
single entry optimization to variables and components thereof.
* gcc.c-torture/execute/20060930-2.c: New test.
From-SVN: r117599
2006-10-06 Maxim Kuvyrkov <mkuvyrkov@ispras.ru>
PR rtl-optimization/29128
* sched-int.h (IS_SPECULATION_BRANCHY_CHECK_P): New macro.
* sched-ebb.c (advance_target_bb): Use it to fix condition to
allow interblock movement of speculation checks.
* gcc.c-torture/compile/pr29128.c: New test.
From-SVN: r117515
PR c/29154
* gimplify.c (gimplify_self_mod_expr): Run inner expression's post
side effects after the outer expression's post side effects.
* gcc.c-torture/execute/20060929-1.c: New test.
From-SVN: r117366
PR rtl-optimization/28096
* ifcvt.c (check_cond_move_block): Return FALSE if the source of an
assignment has already been used as a destination earlier in the
block.
From-SVN: r117331
gcc/testsuite/
* gcc.c-torture/execute/pr28289.c (one): New variable.
(main): Use it instead of argc.
* gcc.c-torture/execute/20060102-1.c (one): New variable.
(main): Use it instead of argc.
From-SVN: r117060
2006-09-16 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/29059
* gcc.c-torture/compile/strcpy-1.c: New test.
* gcc.c-torture/compile/strcpy-2.c: New test.
* gcc.c-torture/compile/memcpy-1.c: New test.
* gcc.c-torture/compile/memcpy-2.c: New test.
2006-09-16 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/29059
* tree-ssa-propagate.c (set_rhs): Reject MODIFY_EXPR right
away for the expr argument.
From-SVN: r116997
gcc/
PR rtl-optimization/28982
* reload.c (find_reloads_address_1): Use RELOAD_OTHER for the
index of a PRE_MODIFY or POST_MODIFY address.
* reload1.c (inc_for_reload): Use find_replacement on the original
base and index registers.
gcc/testsuite/
PR rtl-optimization/28982
* gcc.c-torture/execute/pr28982a.c: New test.
* gcc.c-torture/execute/pr28982b.c: Likewise.
From-SVN: r116919
PR rtl-optimization/28636
* combine.c (force_to_mode): Test for side-effects before
substituting by zero.
(simplify_shift_const): Likewise for zero or other constants.
From-SVN: r116827
gcc/
PR target/29006
* config/mips/mips-protos.h (mips_mem_fits_mode_p): Declare.
* config/mips/mips.c (mips_expand_unaligned_store): Use the mode
returned by mode_for_size, rather than the mode of src itself,
to choose between 32-bit and 64-bit patterns.
(mips_mem_fits_mode_p): New function.
* config/mips/mips.md (mov_<load>l, mov_<load>r): Use it to check
that the size of the source matches the size of the destination.
(mov_<store>l, mov_<store>r): Likewise.
gcc/testsuite/
PR target/29006
* gcc.c-torture/execute/pr29006.c: New test.
From-SVN: r116822
2006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/28862
* stor-layout.c (relayout_decl): Don't zero the alignment if it
was set by the user.
2006-09-07 Andrew Pinski <pinskia@physics.uc.edu>
PR middle-end/28862
* gcc.c-torture/compile/vector-align-1.c: New test.
From-SVN: r116751
PR rtl-optimization/27616
* cse.c (table_size): New static variable.
(new_basic_block): Initialize it to 0.
(remove_from_table): Decrement it.
(insert): Increment it.
(fold_rtx_mem_1): New function, renamed from fold_rtx_mem.
(fold_rtx_mem): Enforce a cap on the recursion depth. Call
fold_rtx_mem_1 if under the cap.
(fold_rtx) <RTX_COMM_ARITH>: In the associative case, delay a little
the lookup of the equivalent expression and test for equality of the
first operand of the equivalent expression before in turn looking up
an equivalent constant for the second operand.
From-SVN: r116683
PR middle-end/28683
* cfgexpand.c (add_reg_br_prob_note): Check if last has exactly
3 following insns.
* gcc.c-torture/compile/20060823-1.c: New test.
From-SVN: r116467
2006-08-24 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28807
* tree-ssa-operands.c (access_can_touch_variable): Don't say
the access through a base which has an alias set of 0 cannot
touch the variable.
2006-08-24 Andrew Pinski <pinskia@physics.uc.edu>
PR tree-opt/28807
* gcc.c-torture/execute/mayalias-2.c: New test.
* gcc.dg/tree-ssa/alias-13.c: New test.
From-SVN: r116393