Jan Hubicka [Sat, 5 Apr 2008 05:50:19 +0000 (07:50 +0200)]
tree-dump.c (dump_enable_all): Remove prototype; do not accept letter argument.
* tree-dump.c (dump_enable_all): Remove prototype; do not accept
letter argument.
(dump_files): Update.
(enable_rtl_dump_file): Do not accept letter argument.
* tree-pass.h (dump_file_info): Remove letter argument.
* toplev.c (decode_d_option): Update -da handling.
* toplev.h (enable_rtl_dump_file): Update prototype.
* passes.c (register_one_dump_file): Do not accept IPA argument; work
it out based on pass type.
(register_dump_files_1): Likewise.
(init_optimization_passes): Update register_one_dump_file calls.
(execute_one_pass): Sanity check that IPA passes are called at IPA level
and RTL passes at RTL level.
(execute_pass_list): IPA pass can not be after or subpass of
GIMPLE/RTL pass.
(execute_ipa_pass_list): Handle IPA subpasses of IPA subpasses and
disallov RTL subpasses of IPA subpasses.
* doc/invoke.texi: Document -mbitops for SH.
* config/sh/constraints.md (K03, K12, Sbv, Sbw): New constraints.
* config/sh/predicates.md (bitwise_memory_operand): New predicate.
* config/sh/sh.c (print_operand): Add %t operand code.
* config/sh/sh.h (GO_IF_LEGITIMATE_INDEX): Add condition for SH2A.
* config/sh/sh.md (*iorsi3_compact): Fix condition for SH2A.
(extendqisi2_compact): Add the alternative for SH2A 4-byte mov.b.
(extendqihi2): Likewise.
(movqi_i): Likewise.
(insv): Use bset, bclr and bst instructions for SH2A if possible.
(extv): Use bld instruction for SH2A if possible.
(extzv): Likewise.
(bclr_m2a, bclrmem_m2a, bset_m2a, bsetmem_m2a, bst_m2a, bld_m2a,
bldsign_m2a, bld_reg, *bld_regqi, band_m2a, bandreg_m2a,
bor_m2a, borreg_m2a, bxor_m2a, bxorreg_m2a): New insns.
(bset.b, bclr.b): Define peepholes.
* config/sh/sh.opt (mbitops): New option.
* gcc.target/sh/sh2a-band.c: New test.
* gcc.target/sh/sh2a-bclrmem.c: New test.
* gcc.target/sh/sh2a-bld.c: New test.
* gcc.target/sh/sh2a-bor.c: New test.
* gcc.target/sh/sh2a-bsetmem.c: New test.
* gcc.target/sh/sh2a-bxor.c: New test.
* config/i386/driver-i386.c (describe_cache): Add l2_sizekb argument.
Pass L2 size as "--param l2-cache-size" to the compiler.
(decode_l2_cache): New function to decode L2 cache parameters using
0x8000006 extended cpuid function.
(detect_caches_amd): Determine parameters of L2 cache using
decode_l2_caches function.
(decode_caches_intel): Decode L2 cache parameters.
(detect_caches_intel): Determine L2 cache parameters using
decode_caches_intel and decode_l2_caches functions.
Adam Nemet [Thu, 3 Apr 2008 19:31:28 +0000 (19:31 +0000)]
mips.md (any_gt, [...]): New code iterators.
* config/mips/mips.md (any_gt, any_ge, any_lt, any_le): New code
iterators.
(u): Add attribute values for gt, gtu, ge, geu, lt, ltu, le and
leu.
(sgt<u>): Merge sgt and sgtu into new expander.
(sgt, sgtu): Remove expanders.
(*sgt<u>_<mode>): Merge *sgt_<mode> and *sgtu_<mode> into new
pattern.
(*sgt_<mode>, *sgtu_<mode>): Remove patterns.
(*sgt<u>_<mode>_mips16): Merge *sgt_<mode>_mips16 and
*sgtu_<mode>_mips16 into new pattern.
(*sgt_<mode>_mips16, *sgtu_<mode>_mips16): Remove patterns.
(sge<u>): Merge sge and sgeu into new expander.
(sge, sgeu): Remove expanders.
(*sge<u>_<mode>): Merge *sge_<mode> and second *sge_<mode> into
new pattern.
(*sge_<mode>, second *sge_<mode>): Remove patterns.
(slt<u>): Merge slt and sltu into new expander.
(slt, sltu): Remove expanders.
(*slt<u>_<mode>): Merge *slt_<mode> and *sltu_<mode> into new
pattern.
(*slt_<mode>, *sltu_<mode>): Remove patterns.
(*slt<u>_<mode>_mips16): Merge *slt_<mode>_mips16 and
*sltu_<mode>_mips16 into new pattern.
(*slt_<mode>_mips16, *sltu_<mode>_mips16): Remove patterns.
(sle<u>): Merge sle and sleu into new expander.
(sle, sleu): Remove expanders.
(*sle<u>_<mode>): Merge *sle_<mode> and *sleu_<mode> into new
pattern.
(*sle_<mode>, *sleu_<mode>): Remove patterns.
(*sle<u>_<mode>_mips16): Merge *sle_<mode>_mips16 and
*sleu_<mode>_mips16 into new pattern.
(*sle_<mode>_mips16, *sleu_<mode>_mips16): Remove patterns.
re PR middle-end/35800 (Revision 133835 failed to compile binutils)
PR middle-end/35800
* expr.h (try_casesi): Adjust prototype.
* expr.c (try_casesi): Take fallback label as extra parameter.
Use that for gen_casesi if default_label is NULL.
* stmt.c (expand_case): Pass fallback label to try_casesi,
make sure to fill gaps with a fallback label if default_label
is not present.
libcpp:
* include/cpplib.h (struct cpp_callbacks): Add used_define,
used_undef and before_define.
(NODE_USED): Define.
* directives.c (do_define, do_undef, undefine_macros, do_ifdef,
do_ifndef, cpp_pop_definition): Handle new flag and use new
callbacks.
* expr.c (parse_defined): Handle new flag and use new callbacks.
* macro.c (enter_macro_context, _cpp_free_definition): Handle new
flag and use new callbacks.
i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1): Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values in 32bit mode...
* config/i386/i386.md (*float<SSEMODEI24:mode><X87MODEF:mode>2_1):
Emit gen_floatdi<X87MODEF:mode>2_i387_with_xmm for DImode values
in 32bit mode when XMM registers are available to avoid store
forwarding stalls.
(floatdi<X87MODEF:mode>2_i387_with_xmm): New insn pattern and
corresponding post-reload splitters.
Peter O'Gorman [Wed, 2 Apr 2008 17:36:41 +0000 (17:36 +0000)]
re PR bootstrap/35216 (Out of memory building java)
PR bootstrap/35216
* scripts/makemake.tcl: Replace org/omg build with build of all its subpackages.
* sources.am: Regenerate.
* Makefile.in: Regenerate.
H.J. Lu [Wed, 2 Apr 2008 14:32:02 +0000 (14:32 +0000)]
i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps and __builtin_ia32_shufpd.
2008-04-02 H.J. Lu <hongjiu.lu@intel.com>
* config/i386/i386.c (bdesc_sse_3arg): Add __builtin_ia32_shufps
and __builtin_ia32_shufpd. Provide __builtin_ia32_roundsd and
__builtin_ia32_roundss.
(ix86_init_mmx_sse_builtins): Remove __builtin_ia32_shufps,
__builtin_ia32_shufpd, __builtin_ia32_roundsd and
__builtin_ia32_roundss.
(ix86_expand_builtin): Don't handle IX86_BUILTIN_SHUFPS and
IX86_BUILTIN_SHUFPD here.
re PR tree-optimization/14495 ([tree-ssa] Propagate range info into a switch statement)
2008-04-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/14495
PR tree-optimization/34793
* tree-vrp.c (struct switch_update): New structure.
(to_remove_edges, to_update_switch_stmts): New VECs.
(simplify_switch_using_ranges): New function. Remove not taken
case labels and edges.
(simplify_stmt_using_ranges): Call it.
(identify_jump_threads): Mark edges we have queued for removal
so we don't thread them.
(execute_vrp): Remove edges queued for removal, update SWITCH_STMT
case label vector.
* tree-cfg.c (group_case_labels): Deal with missing default label.
(tree_verify_flow_info): Allow missing default label.
* stmt.c (emit_case_bit_tests): Deal with NULL default_label.
(emit_case_nodes): Likewise.
(expand_case): Do not rely on the default label to be present.
* expr.c (try_casesi): Deal with NULL default_label.
(do_tablejump): Likewise.
* gcc.dg/tree-ssa/vrp41.c: New testcase.
* gcc.dg/tree-ssa/vrp42.c: Likewise.
re PR tree-optimization/14495 ([tree-ssa] Propagate range info into a switch statement)
2008-04-02 Richard Guenther <rguenther@suse.de>
PR tree-optimization/14495
* tree-vrp.c (vrp_visit_cond_stmt): Do not handle
SWITCH_EXPR here ...
(vrp_visit_switch_stmt): ... but here (new function).
(find_case_label_index): New helper function.
(vrp_visit_stmt): Dispatch to vrp_visit_switch_stmt.
Eric Botcazou [Wed, 2 Apr 2008 10:06:57 +0000 (10:06 +0000)]
decl.c (gnat_to_gnu_entity): For a constant object whose type has self-referential size...
* decl.c (gnat_to_gnu_entity) <object>: For a constant object whose
type has self-referential size, get the size from the initializing
expression directly if it is also a constant whose nominal type
has self-referential size.
2008-04-02 Rafael Espindola <espindola@google.com>
* tree-vrp.c (extract_code_and_val_from_cond): Remove.
(register_edge_assert_for_2): Split the cond argument.
(register_edge_assert_for_1): Adjust for the change in
register_edge_assert_for_2.
(register_edge_assert_for): Split the cond argument.
(find_switch_asserts): Adjust for the change in
register_edge_assert_for.
re PR tree-optimization/35787 (Revision 133680 breaks 447.dealII)
2008-04-02 Richard Guenther <rguenther@suse.de>
* tree-vrp.c (extract_range_from_assert): Make sure to not
produce range min/max with TREE_OVERFOW set.
If merging a anti-range and a range keep the anti-range if
the range covers all values of the type.
(register_edge_assert_for_2): Only allow sign-changing
conversions in detecting canonical range checks. Also
register an assert for the unsigned name if useful.
PR tree-optimization/35787
* tree-vrp.c (vrp_val_max): New function.
(vrp_val_min): Likewise.
(vrp_val_is_max): Move earlier, use vrp_val_{min,max}.
(vrp_val_is_min): Likewise.
(supports_overflow_infinity): Use vrp_val_{min,max}.
(negative_overflow_infinity): Likewise.
(positive_overflow_infinity): Likewise.
(is_negative_overflow_infinity): Use vrp_val_is_{min,max}.
(is_positive_overflow_infinity): Likewise.
(is_overflow_infinity): Likewise.
(avoid_overflow_infinity): Use vrp_val_{min,max} and
vrp_val_is_{min,max}.
(set_and_canonicalize_value_range): Canonicalize anti-ranges
to ranges if possible. Avoid empty ranges.
* gcc.dg/tree-ssa/vrp38.c: New testcase.
* gcc.dg/tree-ssa/vrp39.c: Likewise.
trans-common.c (create_common): Add decl to function chain to preserve identifier scope in debug output.
* fortran/trans-common.c (create_common): Add decl to function
chain to preserve identifier scope in debug output.
* dbxout.c: Emit .stabs debug info for Fortran COMMON block
variables as base symbol name + offset using N_BCOMM/N_ECOMM.
(is_fortran, dbxout_common_name, dbxout_common_check): New functions.
(dbxout_symbol_location): Transform N_LCSYM to N_GSYM for storage
in common.
(dbxout_syms): Check for COMMON-based symbol and wrap in
N_BCOMM/N_ECOMM stab bracket, including as many symbols as possible
in bracket for efficiency.
* dwarf2out.c: Emit DWARF debug info for Fortran COMMON block
using DW_TAG_common_block + member offset.
(add_pubname_string): New function.
(dw_expand_expr): New function to find block name and offset for
COMMON var.
(common_check): New function to check whether symbol in Fortran COMMON.
(gen_variable_die): If COMMON, use DW_TAG_common_block.
* testsuite/gcc.dg/debug/pr35154.c: New test to check that non-Fortran
use of common is unchanged.
* testsuite/lib/gfortran-dg.exp: New harness to compile Fortran progs
with all combinations of debug options available on target.
* testsuite/gfortran.dg/debug/debug.exp: Ditto.
* testsuite/gfortran.dg/debug/trivial.f: Ditto.
* testsuite/gfortran.dg/debug/pr35154-stabs.f: New test case for
.stabs functionality.
* testsuite/gfortran.dg/debug/pr35154-dwarf2.f: New test case for
DWARF functionality.
* config/i386/i386.md (rex64suffix): New mode attribute.
(floathi<mode>2): Disable expander for SSE math.
(*floathi<mode>2_1): New insn insn_and_split pattern.
(*floathi<mode>2_i387_with_temp): New macroized instruction pattern and
corresponding post-reload splitters.
(*floathi<mode>2_i387): New macroized insn pattern.
(float<SSEMODEI24:mode><X87MODEF:mode>2): New macroized expander.
(*float<SSEMODEI24:mode><X87MODEF:mode>2_1): New macroized
insn_and_split pattern.
(*floatsi<mode>2_vector_mixed_with_temp, *floatsi<mode>2_vector_mixed):
New macroized instruction patterns and corresponding post-reload
splitters.
(*floatsi<mode>2_mixed_with_temp): New macroized instruction pattern
and corresponding post-reload splitters.
(*floatsi<mode>2_mixed_interunit, *floatsi<mode>2_mixed_nointerunit):
New macroized instruction patterns.
(*floatsi<mode>2_vector_sse_with_temp, *floatsi<mode>2_vector_sse): New
macroized instruction patterns and corresponding post-reload splitters.
(*floatsi<mode>2_sse_with_temp): New macroized instruction pattern and
corresponding post-reload splitters.
(*floatsi<mode>2_sse_interunit, *floatsi<mode>2_mixed_nointerunit):
New macroized instruction patterns.
(*floatsi<mode>2_i387_with_temp): New macroized instruction pattern and
corresponding post-reload splitters.
(*floatsi<mode>2_i387): New macroized instruction patterns.
Joseph Myers [Tue, 1 Apr 2008 16:38:56 +0000 (17:38 +0100)]
texi2pod.pl: Handle @samp and @url inside verbatim blocks.
contrib:
* texi2pod.pl: Handle @samp and @url inside verbatim blocks.
Handle @heading. Handle enumerated lists with starting numbers
and extra headings.
gcc:
* doc/include/gpl_v3.texi: Update for manpage generation.
* doc/gcc.texi, doc/gccint.texi: Include gpl_v3.texi instead of
gpl.texi.
* doc/sourcebuild.texi: Document gpl_v3.texi as well as gpl.texi.
* Makefile.in (TEXI_GCC_FILES, TEXI_GCCINT_FILES): Include
gpl_v3.texi instead of gpl.texi.
(gpl.pod): New.
gcc/fortran:
* gfortran.texi: Include gpl_v3.texi instead of gpl.texi
* Make-lang.in (GFORTRAN_TEXI): Include gpl_v3.texi instead of
gpl.texi.
gcc/java:
* gcj.texi: Include gpl_v3.texi instead of gpl.texi
* Make-lang.in (TEXI_JAVA_FILES): Include gpl_v3.texi instead of
gpl.texi.
Jakub Jelinek [Tue, 1 Apr 2008 10:58:02 +0000 (12:58 +0200)]
re PR pch/13675 (#including a precompiled header more than once in the same unit fails)
PR pch/13675
* files.c (struct _cpp_file): Remove pch field.
(pch_open_file): Don't set file->pch, just file->pchname.
(should_stack_file): After pfile->cb.read_pch call
free pchname and clear pchname, don't close file->fd.
Test file->pchname instead of file->pch. Don't close fd after cb.
(_cpp_stack_include): Test file->pchname instead of file->pch.
* c-pch.c (c_common_read_pch): On error close (fd) resp. fclose (f).
Seongbae Park [Mon, 31 Mar 2008 21:52:10 +0000 (21:52 +0000)]
common.opt (fprofile-dir=, [...]): New options
gcc/ChangeLog:
2008-03-31 Seongbae Park <seongbae.park@gmail.com>
* common.opt (fprofile-dir=, fprofile-use=, fprofile-generate=):
New options
(fprofile-use): Add var flag_profile_use
* coverage.c (coverage_begin_output): Do not open a gcno file for output
only if -ftest-coverage is set.
Do not add getpwd() to gcda file path.
(build_gcov_info): Check the new flag
flag_profile_datafile_relative_path.
(coverage_init): Use profile_data_prefix.
Read profile counter only if flag_profile_use is set.
* opts.c (common_handle_option): New option fprofile-use=,
fprofile-dir=, fprofile-generate=.
* toplev.c (profile_data_prefix): New variable definition.
* toplev.h (profile_data_prefix): New declaration.
* doc/invoke.tex (Option Summary, Optimization Options):
Add new options.
gcc/testsuite/ChangeLog:
2008-03-31 Seongbae Park <seongbae.park@gmail.com>
* g++.db/bprob/bprob.exp: Do not check gcno files.
Use -fprofile-use for profile use.
* gcc.misc-tests/bprob.exp: Ditto.
* g++.dg/tree-pro/tree-prof.exp: Do not check gcno files.
* gcc.dg/matrix/matrix.exp: Ditto.
* gcc.dg/struct/struct-reorg.exp: Ditto.
* gcc.dg/tree-prof/tree-prof.exp: Ditto.
* gcc.dg/profile-dir-1.c: New test.
* gcc.dg/profile-dir-2.c: New test.
* gcc.dg/profile-dir-3.c: New test.
ChangeLog:
2008-03-31 Seongbae Park <seongbae.park@gmail.com>
Andrew Pinski [Mon, 31 Mar 2008 18:22:05 +0000 (18:22 +0000)]
re PR tree-optimization/30186 (accessing an element via a "pointer" on a vector does not cause vec_extract to be used (non-zero index))
2008-03-31 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/30186
* fold-const.c (fold_indirect_ref_1): Support accessing non first
element of the vector via a pointer.
2008-03-31 Andrew Pinski <andrew_pinski@playstation.sony.com>
PR middle-end/30186
* gcc.dg/tree-ssa/vector-1.c: New testcase.
* gcc.c-torture/execute/vector-1.c: New testcase.
* gcc.c-torture/execute/vector-2.c: New testcase.