Steven Bosscher [Fri, 30 Nov 2012 09:46:02 +0000 (09:46 +0000)]
coretypes.h (struct pretty_print_info): Make a coretype.
* coretypes.h (struct pretty_print_info): Make a coretype.
(typedef pretty_printer): Likewise.
* pretty-print.h (typedef pretty_printer): Not needed here anymore.
* pretty-print.c (pp_write_text_as_dot_label_to_stream): New function.
* rtl.h (str_pattern_slim): New prototype.
(print_value, print_pattern, print_insn): Adjust prototypes to take
a pretty-printer rather than a char buffer.
* sched-vis.c (safe_concat): Remove.
(print_exp): Print into a pretty-printer.
(print_value): Likewise.
(print_pattern): Likewise.
(print_insn): Likewise.
(print_insn_with_notes): New static function.
(init_rtl_slim_pretty_print): New function.
(dump_value_slim): Simplify. Print into and flush a pretty-printer.
(dump_insn_slim): Likewise.
(dump_rtl_slim): Likewise.
(str_pattern_slim): New function.
* haifa-sched.c (model_recompute): Use str_pattern_slim instead of
static buffers.
(model_record_pressures): Likewise.
(schedule_insn): Likewise.
* sel-sched-dump.c (dump_insn_rtx_1): Likewise.
(sel_prepare_string_for_dot_label): Refer to graph.c CFG dumper code.
* graph.c: Include pretty-print.h.
(init_graph_slim_pretty_print): New function.
(print_escaped_line): Removed here, and reincarnated as
pp_write_text_as_dot_label_to_stream.
(draw_cfg_node): Print into a pretty printer.
(draw_cfg_node_succ_edges): Likewise.
(print_rtl_graph_with_bb): Likewise.
* Makefile.in (graph.o): Fix dependencies.
(tree-optimize.o, toplev.o, sched-vis.o): Likewise.
Jakub Jelinek [Fri, 30 Nov 2012 08:48:02 +0000 (09:48 +0100)]
tsan.c (is_load_of_const_p): Removed.
* tsan.c (is_load_of_const_p): Removed.
(instrument_expr): Use result of get_inner_reference
instead of get_base_address, avoid some unnecessary tests,
use !pt_solution_includes and !may_be_aliased tests to
check whether base might escape current function.
Jason Merrill [Thu, 29 Nov 2012 20:12:58 +0000 (15:12 -0500)]
re PR c++/53137 (g++ segfault)
PR c++/53137
* pt.c (tsubst_expr) [DECL_EXPR]: Set LAMBDA_EXPR_THIS_CAPTURE here.
(tsubst_copy_and_build) [LAMBDA_EXPR]: And clear it here.
(instantiate_class_template_1): Not here.
Vladimir Makarov [Thu, 29 Nov 2012 19:00:38 +0000 (19:00 +0000)]
re PR middle-end/55456 (454.calculix in SPEC CPU 2006 is miscompiled)
2012-11-29 Vladimir Makarov <vmakarov@redhat.com>
PR middle-end/55456
* lra-int.h (lra_new_regno_start): New external.
* lra.c (lra_new_regno_start): New global.
(lra): Set up lra_new_regno_start.
* lra-constraints.c (match_reload): Sync values only for original
pseudos.
Richard Earnshaw [Thu, 29 Nov 2012 17:51:40 +0000 (17:51 +0000)]
re PR target/55073 (Wrong Neon code generation at -O2 caused by -fschedule-insns)
PR target/55073
* arm/neon.md (neon_vtrn<mode>_internal): Split into expand
and insn patterns. Re-order insn arguments to tie inputs to
outputs.
(neon_vzip<mode>_internal): Likewise.
(neon_vuzp<mode>_internal): Likewise.
Richard Biener [Thu, 29 Nov 2012 13:53:42 +0000 (13:53 +0000)]
tree-ssa-pre.c (get_expr_value_id): Do not add expr to the set of value expressions here.
2012-11-29 Richard Biener <rguenther@suse.de>
* tree-ssa-pre.c (get_expr_value_id): Do not add expr
to the set of value expressions here.
(add_to_exp_gen, make_values_for_phi): Fold into ...
(compute_avail): ... here, and avoid useless work. Dump
avail sets in processing order.
(do_pre): Do not dump avail sets here.
Oleg Raikhman [Thu, 29 Nov 2012 03:05:23 +0000 (03:05 +0000)]
epiphany.h (FIXED_REGISTERS, [...]): Make r40..r43 call-used.
* config/epiphany/epiphany.h (FIXED_REGISTERS, CALL_USED_REGISTERS):
Make r40..r43 call-used.
(REG_ALLOC_ORDER): Sort r40..r43 into the call-used registers.
Jakub Jelinek [Wed, 28 Nov 2012 23:01:03 +0000 (00:01 +0100)]
re PR debug/36728 ([stack]: gdb doesn't work with stack alignment)
PR debug/36728
PR debug/55467
PR middle-end/55507
PR bootstrap/55511
* cselib.c (cselib_process_insn): If cselib_preserve_constants,
don't reset table and exit early on volatile insns and setjmp.
Reset table afterwards on setjmp.
* gcc.dg/guality/pr36728-1.c: Include "../nop.h", make sure the asm
are non-empty and add dependency between the first and second asm.
* gcc.dg/guality/pr36728-2.c: Likewise.
* gcc.dg/guality/pr36728-3.c: New test.
* gcc.dg/guality/pr36728-4.c: New test.
Andrew Pinski [Wed, 28 Nov 2012 22:11:29 +0000 (22:11 +0000)]
re PR other/54279 (first stage build with g++ fails with "." as the first component of $PATH)
2012-11-28 Andrew Pinski <apinski@cavium.com>
PR bootstrap/54279
* configure.ac (CXX_FOR_TARGET): Change over to use xg++.
* configure: Regenerate.
* Makefile.tpl (POSTSTAGE1_CXX_EXPORT): Change over to use xg++.
* Makefile.in: Regenerate.
2012-11-28 Andrew Pinski <apinski@cavium.com>
PR bootstrap/54279
* Makefile.in (${QMTEST_DIR}/context): Use xg++ instead of g++.
2012-11-28 Andrew Pinski <apinski@cavium.com>
PR bootstrap/54279
* Make-lang.in (g++$(exeext)): Rename to
(xg++$(exeext)): This.
(g++-cross$(exeext)): Use xg++$(exeext) instead of g++$(exeext).
(c++.start.encap): Likewise.
(c++.install-common): Likewise.
2012-11-28 Andrew Pinski <apinski@cavium.com>
PR bootstrap/54279
* lib/g++.exp (g++_init): Search for xg++ instead of g++ in the build
directories.
* lib/obj-c++.exp (obj-c++_init): Likewise.
2012-11-28 Andrew Pinski <apinski@cavium.com>
PR bootstrap/54279
* scripts/testsuite_flags.in (--build-cxx): Use xg++ instead of g++.
* testsuite/lib/libstdc++.exp (libstdc++_init): Likewise.
re PR middle-end/55438 (tmpdir-gcc.dg-struct-layout-1/t001 - t028, gcc.c-torture/execute/991118-1.c, gcc.c-torture/execute/bf64-1.c, ICE)
gcc/
PR middle-end/55438
* expmed.c (simple_mem_bitfield_p): New function, extracted from
store_bit_field_1 and extract_bit_field_1. Use GET_MODE_ALIGNMENT
rather than bitsize when checking the alignment.
(store_bit_field_1, extract_bit_field_1): Call it.
* stor-layout.c (bit_field_mode_iterator::bit_field_mode_iterator):
Don't limit ALIGN_. Assume that memory is mapped in chunks of at
least word size, regardless of BIGGEST_ALIGNMENT.
(bit_field_mode_iterator::get_mode): Use GET_MODE_ALIGNMENT rather
than unit when checking the alignment.
(get_best_mode): Use GET_MODE_ALIGNMENT.
Joern Rennecke [Wed, 28 Nov 2012 16:10:18 +0000 (16:10 +0000)]
epiphany.opt (mfp-iarith): New option.
* config/epiphany/epiphany.opt (mfp-iarith): New option.
* config/epiphany/epiphgany.md (addsi3): Check for TARGET_FP_IARITH.
(subsi3, iadd, isub): Rename to ..
(subsi3_i, iadd_i, isub_i): .. This.
(subsi3, iadd, isub): New define_expands.
* config/epiphany/epiphgany.md (attribute type): Add v2fp.
(attribute fp_mode): Test for v2fp.
(<float_operation:insn_opname>v2sf3_i): Change type to v2fp.
* config/epiphany/epiphgany-sched.md (fp_arith_nearest, fp_arith_trunc):
Combine to ..
(fp_arith): .. this.
(v2fp_arith): New insn reservation.
Joern Rennecke [Wed, 28 Nov 2012 15:36:13 +0000 (15:36 +0000)]
predicates.md (move_double_src_operand): Check that misaligned addresses are offsettable.
* config/epiphany/predicates.md (move_double_src_operand):
Check that misaligned addresses are offsettable.
(move_dest_operand): Likewise.
* config/epiphany/epiphany.c (REG_OK_FOR_BASE_P): Don't force a
misaligned stack address to reg+index.
Eric Botcazou [Wed, 28 Nov 2012 10:51:19 +0000 (10:51 +0000)]
stor-layout.c (layout_type): Do not clear TREE_OVERFLOW on overflowed zeroes, except in one specific case.
* stor-layout.c (layout_type) <ARRAY_TYPE>: Do not clear TREE_OVERFLOW
on overflowed zeroes, except in one specific case.
ada/
* gcc-interface/decl.c (gnat_to_gnu_entity) <object>: Use
valid_constant_size_p to detect too large objects.
<E_Subprogram_Type>: Likewise for too large return types.
(allocatable_size_p): Call valid_constant_size_p in the fixed case.
(annotate_value) <INTEGER_CST>: Simplify.
<BIT_AND_EXPR>: Deal with negative values here.
* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Use
valid_constant_size_p to detect too large objects on the LHS.
* gcc-interface/misc.c (default_pass_by_ref): Likewise for large types.
And use TYPE_SIZE_UNIT throughout.
(must_pass_by_ref): Likewise.
* gcc-interface/utils.c (max_size) <tcc_unary>: Split from common case.
<tcc_binary>: Likewise. Call size_binop instead of fold_build2.
<tcc_expression>: Simplify.
* gcc-interface/utils2.c (build_allocator): Use valid_constant_size_p
to detect too large allocations.
Richard Biener [Wed, 28 Nov 2012 09:27:10 +0000 (09:27 +0000)]
re PR c/35634 (operand of pre-/postin-/decrement not promoted)
2012-11-28 Richard Biener <rguenther@suse.de>
PR c/35634
* gimple.h (gimplify_self_mod_expr): Declare.
* gimplify.c (gimplify_self_mod_expr): Export. Take a different
type for performing the arithmetic in.
(gimplify_expr): Adjust.
* tree-vect-loop-manip.c (vect_can_advance_ivs_p): Strip
sign conversions we can re-apply after adjusting the IV.
c-family/
* c-gimplify.c (c_gimplify_expr): Gimplify self-modify expressions
here and use a type with proper overflow behavior for types that would
need to be promoted for the arithmetic.
* gcc.dg/torture/pr35634.c: New testcase.
* g++.dg/torture/pr35634.C: Likewise.
* gcc.dg/vect/pr18536.c: Mark worker function noinline.
Steven Bosscher [Wed, 28 Nov 2012 00:17:34 +0000 (00:17 +0000)]
re PR rtl-optimization/55006 (aermod.f90 is miscompiled with '-m64 -O2 -funroll-loops' after revision 192526)
PR rtl-optimization/55006
* loop-unroll.c (struct iv_to_split): Add new 'orig_var' member.
(analyze_iv_to_split_insn): Record it.
(maybe_strip_eq_note_for_split_iv): New function to remove REG_EQUAL
notes that refer to IVs that are being split.
(apply_opt_in_copies): Use maybe_strip_eq_note_for_split_iv. Twice.
Use FOR_BB_INSNS_SAFE.
Bin Cheng [Tue, 27 Nov 2012 09:55:33 +0000 (09:55 +0000)]
arm.c (thumb1_reorg): New function.
* config/arm/arm.c (thumb1_reorg): New function.
(arm_reorg): Call thumb1_reorg.
(thumb1_final_prescan_insn): Record src operand in thumb1_cc_op0.
* config/arm/arm.md : Remove peephole2 patterns which rewrite move
into subtract of ZERO.
Steven Bosscher [Tue, 27 Nov 2012 00:17:25 +0000 (00:17 +0000)]
loop-invariant.c (check_invariant_table_size): Take sizeof of the right type.
* loop-invariant.c (check_invariant_table_size): Take sizeof of
the right type.
* reorg.c (resource_conflicts_p): Use hard_reg_set_intersect_p.
(rare_destination): Remove.
(mostly_true_jump): Simplify. Base result on REG_BR_PROP notes if
available, otherwise assume branches are not taken.
(fill_eager_delay_slots): Update mostly_true_jump call.
(relax_delay_slots): Likewise.