* ipa-inline.c (cgraph_maybe_hot_edge_p): Look for hot/cold attributes,
when profile esitmate is present, calls with very low frequency are
cold.
From-SVN: r122898
PR tree-optimization/30730
PR tree-optimization/26900
* tree-ssa-loop-niter.c: Include gmp.h.
(bounds): New type.
(mpz_set_double_int, get_type_bounds, mpz_to_double_int,
split_to_var_and_offset, determine_value_range,
bound_difference_of_offsetted_base, refine_bounds_using_guard,
bound_difference, bounds_add, bounds_negate,
number_of_iterations_ne_max, dump_affine_iv): New functions.
(number_of_iterations_ne, number_of_iterations_lt_to_ne,
assert_loop_rolls_lt, assert_loop_rolls_le): Use bounds on the
difference of initial and final value of control iv to validate
results.
(number_of_iterations_cond): Add loop parameter. Determine bounds
on the difference of the extremes of the control iv. Add dumps.
(expand_simple_operations): Handle phi nodes.
(simplify_using_initial_conditions): Do not record used conditions.
(number_of_iterations_exit): Pass loop to number_of_iterations_cond.
Do not set additional_info.
(implies_nonnegative_p, implies_ge_p): Removed.
(derive_constant_upper_bound): Do not use parameter `additional'.
(record_estimate): Parameter `additional' removed. Parameter
`i_bound' added. Do not call derive_constant_upper_bound.
(record_nonwrapping_iv): Use derive_constant_upper_bound to
bound the number of iterations estimate.
(estimate_numbers_of_iterations_loop): Pass the estimate from
the number of iterations analysis to record_estimate.
* tree.h (multiple_of_p): Declare.
* tree-scalar-evolution.c (expression_expensive_p): Removed.
(scev_const_prop): Do not check expression_expensive_p.
* fold-const.c (multiple_of_p): Exported.
* double-int.c (double_int_mask): Exported.
* double-int.h (double_int_mask): Declare.
* tree-flow.h (struct tree_niter_desc): Removed additional_info
field. Added max field.
* gcc.dg/tree-ssa/loop-26.c: New test.
From-SVN: r122896
2007-03-13 David Taylor <taylor@candd.org>
PR driver/12448:
* gcc.c (cpp_unique_options): If -MT or -MQ is seen, don't pass
default -MQ.
From-SVN: r122889
* configure.ac: Test for assembler tolerance to # 0 "".
* configure, config.in: Rebuilt.
* final.c (final_scan_insn): Emit it if HAVE_AS_LINE_ZERO.
From-SVN: r122879
* config/rs6000/darwin-fallback.c: Compile file only on powerpc.
(handle_syscall): Handle direct system calls.
* config/rs6000/darwin.h (HAS_MD_FALLBACK_FRAME_STATE_FOR): Delete.
From-SVN: r122877
ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* gcc/doc/invoke.texi (Wvla): New warning.
gcc/ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* c-decl.c (warn_variable_length_array): New function.
Refactored from grokdeclarator to handle warn_vla
and handle unnamed array case.
(grokdeclarator): Refactored VLA warning case.
* c.opt (Wvla): New flag.
gcc/cp/ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* decl.c (compute_array_index_type): New warning flag warn_vla.
gcc/testsuite/ChangeLog:
2007-03-12 Seongbae Park <seongbae.park@gmail.com>
* gcc.dg/wvla-1.c: New test
* gcc.dg/wvla-2.c: New test
* gcc.dg/wvla-3.c: New test
* gcc.dg/wvla-4.c: New test
* gcc.dg/wvla-5.c: New test
* gcc.dg/wvla-6.c: New test
* gcc.dg/wvla-7.c: New test
* g++.dg/warn/Wvla-1.C: New test
* g++.dg/warn/Wvla-2.C: New test
* g++.dg/warn/Wvla-3.C: New test
From-SVN: r122851
* config/i386/i386.md (fixuns_trunc<mode>hi2): Implement from
fixuns_truncsfhi2 and fixuns_truncdfhi2 using SSEMODEF
mode macro.
(fix_trunc<mode>di_sse): Implement from fix_truncsfdi_sse and
fix_truncdfdi_sse using SSEMODEF mode macro.
(fix_trunc<mode>si_sse): Implement from fix_truncsfsi_sse and
fix_truncdfsi_sse using SSEMODEF mode macro.
(fix_trunc?f?i_sse peephole2): Implement using SSEMODEF mode macro.
(fix_trunc?f?i_sse K8 peephole2): Fix register constraint.
From-SVN: r122839
2007-03-11 Richard Guenther <rguenther@suse.de>
PR tree-optimization/31115
* tree-vrp.c (extract_range_from_binary_expr): Make sure
the shift count is positive and non-anti-range for RSHIFT_EXPR.
A shift count of zero is not special as with *_DIV_EXPR.
(vrp_int_const_binop): Handle RSHIFT_EXPR for determining overflow
direction.
* gcc.dg/torture/pr31115.c: New testcase.
From-SVN: r122821
* tree-data-ref.c (analyze_offset): Add a return value (bool) to
indicate success/failure of the analysis. Add negation to subtrahend
in case of subtraction. Fail if both operands contain constants.
(create_data_ref): Fail if analyze_offset fails.
From-SVN: r122817
* lower-subreg.c: Include except.h.
(decompose_multiword_subregs): Verify that the only control flow
insns we can split are loads to multi-words pseudos.
Handle breaking such blocks after splitting, instead of calling
find_many_sub_basic_blocks.
* loop-unroll.c (split_edge_and_insert): Don't set BB_SUPERBLOCK
on the new basic block. Add a lengthy comment explaining why we
thought this was necessary.
* cfglayout.c (cfg_layout_finalize): Don't break superblocks.
From-SVN: r122807
PR c++/20924
* tree.c (walk_type_fields): Recurse into the element type of
ARRAY_TYPEs if there is a pointer set.
PR c++/20924
* g++.dg/template/array18.C: New test.
From-SVN: r122801
* config/i386/i386.md (UNSPEC_C2_FLAG): New constant.
(fpremxf4_i387, fprem1xf4_i387): Use UNSPEC_C2_FLAG.
(fmodxf3, fmod<mode>3, remainderxf3, remainder<mode>3):
Add LABEL_NUSES to emmitted label.
* config/i386/i386.c (ix86_emit_fp_unordered_jump): Add
branch probability value to emmitted jump insn.
* reg-stack.c (subst_stack_regs_pat)[UNSPEC]: Handle UNSPEC_C2_FLAG.
Do not check life information and do not re-arrange input operands
for UNSPEC_FSCALE_EXP, UNSPEC_FPREM_U and UNSPEC_FPREM1_U.
From-SVN: r122793
* pa.c (attr_length_call): Revise condition for long pc-relative branch.
(output_call): Use "LONG_PIC_SDIFF" instruction sequence for long local
calls on the SOM target. Don't use "LONG_PIC_PCREL" call sequence on
SOM target.
From-SVN: r122784
* gcc.c: Document %{, in big comment at top.
(input_suffix_matches): Remove special handling for .s and
.S.
(input_spec_matches): New.
(handle_braces): Handle %{,.
(validate_switches): ',' indicates a value which is not a switch.
* config/alpha/osf.h (ASM_FINAL_SPEC): Use %{, rather than %{.
to detect assembler input.
* config/i386/sol2.h (CPP_SPEC): Likewise.
* config/rs6000/sysv4.h (ASM_SPEC): Likewise.
* config/rs6000/vxworks.h (ASM_SPEC): Likewise.
* config/rs6000/lynx.h (ASM_SPEC): Likewise.
* config/rs6000/linux64.h (ASM_SPEC_COMMON): Likewise.
* config/i386/darwin.h (DARWIN_MINVERSION_SPEC): Objective-C plus
-m64 causes deployment target to default to 10.5.
* config/rs6000/darwin.h (DARWIN_MINVERSION_SPEC): Likewise.
From-SVN: r122783
* fold-const.c (fold_comparison): Remove compile-time evaluation of
complex constant equality/inequality comparisons for here.
(fold_binary) <EQ_EXPR>: Simplify complex comparisons that are
known at compile-time or can be simplified to a scalar comparison.
(fold_relational_const): Move compile-time evaluation of complex
constant equality/inequality comparisons to here.
* gcc.dg/fold-eqcmplx-1.c: New test case.
From-SVN: r122767
PR tree-optimization/30375
* tree-ssa-dse.c (dse_possible_dead_store_p): Do not eliminate if
LHS of statements is not the same.
* testsuite/gcc.dg/tree-ssa/ssa-dse-10.c: New.
From-SVN: r122758
* doc/extend.texi (MIPS DSP Built-in Functions): Document the DSP
REV 2.
* doc/invoke.texi (-mdspr2): Document new option.
* config/mips/mips.md (UNSPEC_ABSQ_S_QB .. UNSPEC_DPSQX_SA_W_PH):
New unspec for DSP REV 2.
(<u>mulsidi3_32bit_internal): Check if !TARGET_DSPR2, because
these instructions are extended in DSP REV 2.
(mips-dspr2.md): Include.
* config/mips/mips.opt (mdspr2): New option.
* config/mips/mips.c (mips_function_type): Add MIPS_V4QI_FTYPE_V4QI,
MIPS_SI_FTYPE_SI_SI_SI, MIPS_DI_FTYPE_DI_USI_USI, MIPS_DI_FTYPE_SI_SI,
MIPS_DI_FTYPE_USI_USI, MIPS_V2HI_FTYPE_SI_SI_SI.
(override_options): Check TARGET_DSPR2 to enable MASK_DSP.
(CODE_FOR_mips_mul_ph): Define it to CODE_FOR_mulv2hi3.
(dsp_bdesc): Add DSP REV 2 builtins. Remove 32-bit only DSP builtins.
(dsp_32only_bdesc): New description table for 32-bit only DSP REV 1
and 2 builtins.
(bdesc_map): Add one field of unsupported_target_flags.
(bdesc_arrays): Update entries to have extra fields. Add
dsp_32only_bdesc.
(mips_init_builtins): Initialize new function types.
Check unsupported_target_fileds to filter out builtins.
* config/mips/mips.h (TARGET_CPU_CPP_BUILTINS): Define __mips_dspr2 if
TARGET_DSPR2.
(ASM_SPEC): Pass mdspr2 to the assembler.
* config/mips/mips-dspr2.md: New file.
From-SVN: r122756