[C PATCH] Better location for check_case_value

2014-08-03 Thread Marek Polacek
Bootstrapped/regtested on x86_64-linux, applying to trunk. 2014-08-02 Marek Polacek pola...@redhat.com * c-common.c (check_case_value): Add location_t parameter. Use it. (c_add_case_label): Pass loc to check_case_value. * gcc.dg/case-bogus-1.c: New test. diff --git

[PATCH 0/50] Faster for_each_rtx-like iterators

2014-08-03 Thread Richard Sandiford
In May I posted an RFC about a worklist-based replacement for for_each_rtx: https://gcc.gnu.org/ml/gcc-patches/2014-05/msg00435.html (see there for rationale). This series is the first part of the process. It adds the new iterators and converts all for_each_rtx users in generic code. If these

[PATCH 01/50] Add rtl-iter.h

2014-08-03 Thread Richard Sandiford
This patch adds the new iterators. gcc/ * rtl-iter.h: New file. * rtlanal.c: Include it. (rtx_all_subrtx_bounds, rtx_nonconst_subrtx_bounds): New variables. (generic_subrtx_iterator T::add_single_to_queue) (generic_subrtx_iterator T::add_subrtxes_to_queue)

[PATCH 02/50] alias.c:refs_newer_value_p

2014-08-03 Thread Richard Sandiford
gcc/ * alias.c: Include rtl-iter.h. (refs_newer_value_cb): Delete. (refs_newer_value_p): Use FOR_EACH_SUBRTX instead of for_each_rtx. Index: gcc/alias.c === --- gcc/alias.c 2014-08-03 11:25:10.551960499 +0100

[PATCH 03/50] bt-load.c:find_btr_use

2014-08-03 Thread Richard Sandiford
With the move away from for_each_rtx and the separate static variable used to communicate the found reference, there's not really any need to keep btr_referenced_p and find_btr_use separate. gcc/ * bt-load.c: Include rtl-iter.h. (btr_reference_found, find_btr_reference,

[PATCH 04/50] caller-save.c:add_used_regs

2014-08-03 Thread Richard Sandiford
As noted in https://gcc.gnu.org/ml/gcc-patches/2014-02/msg01391.html a bitmap-related cleanup turned add_used_regs_1 into a no-op for pseudo registers, because the result of: regno = reg_renumber[regno]; is never used. This patch does as Steven requested and adds an assert that no allocated

[PATCH 05/50] calls.c:internal_arg_pointer_based_exp

2014-08-03 Thread Richard Sandiford
gcc/ * calls.c: Include rtl-iter.h. (internal_arg_pointer_based_exp_1): Delete. (internal_arg_pointer_based_exp): Take a const_rtx. Use FOR_EACH_SUBRTX to iterate over subrtxes. Index: gcc/calls.c ===

[PATCH 06/50] combine.c:unmentioned_reg_p

2014-08-03 Thread Richard Sandiford
gcc/ * combine.c: Include rtl-iter.h. (unmentioned_reg_p_1): Delete. (unmentioned_reg_p): Use FOR_EACH_SUBRTX rather than for_each_rtx. Don't handle null rtxes. Index: gcc/combine.c === ---

[PATCH 07/50] combine.c:record_truncated_values

2014-08-03 Thread Richard Sandiford
gcc/ * combine.c (record_truncated_value): Turn from being a for_each_rtx callback to a function that takes an rtx and returns a bool (record_truncated_values): Use FOR_EACH_SUBRTX_VAR instead of for_each_rtx. Index: gcc/combine.c

[PATCH 08/50] Faster for_each_rtx-like iterators

2014-08-03 Thread Richard Sandiford
gcc/ * combine-stack-adj.c: Include rtl-iter.h. (record_stack_refs_data): Delete. (record_stack_refs): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Take a pointer to the reflist. Invert sense of return value

[PATCH 09/50] cfgcleanup.c:mentions_nonequal_regs

2014-08-03 Thread Richard Sandiford
gcc/ * cfgcleanup.c: Include rtl-iter.h. (mentions_nonequal_regs): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (thread_jump): Update accordingly. Index: gcc/cfgcleanup.c

[PATCH 10/50] cse.c:approx_reg_cost

2014-08-03 Thread Richard Sandiford
gcc/ * cse.c: Include rtl-iter.h. (approx_reg_cost_1): Delete. (approx_reg_cost): Use FOR_EACH_SUBRTX instead of for_each_rtx. Don't handle null rtxes. Index: gcc/cse.c === --- gcc/cse.c 2014-08-03

[PATCH 11/50] Faster for_each_rtx-like iterators

2014-08-03 Thread Richard Sandiford
The order of the arguments matches canon_anti_dependence rather than the order of the old structure fields. gcc/ * cse.c (check_dependence_data): Delete. (check_dependence): Change from being a for_each_rtx callback to being a function that examines all subrtxes itself.

[PATCH 12/50] cse.c:check_for_label_ref

2014-08-03 Thread Richard Sandiford
gcc/ * cse.c (check_for_label_ref): Move earlier in file. Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (cse_extended_basic_block): Update call accordingly. Index: gcc/cse.c

[PATCH 13/50] cse.c:is_dead_debug_insn

2014-08-03 Thread Richard Sandiford
gcc/ * cse.c (is_dead_reg): Change argument to const_rtx. (dead_debug_insn_data): Delete. (is_dead_debug_insn): Expand commentary. Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Take the fields of

[PATCH 14/50] cse.c:cse_change_cc_mode

2014-08-03 Thread Richard Sandiford
gcc/ * cse.c (change_cc_mode_args): Delete. (cse_change_cc_mode): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Take the fields of change_cc_mode_args as argument and return void. (cse_change_cc_mode_insn):

[PATCH 15/50] ddg.c:mark_mem_use

2014-08-03 Thread Richard Sandiford
gcc/ * ddg.c: Include rtl-iter.h. (mark_mem_use_1): Rename to... (mark_mem_use): ...deleting old mark_mem_use. Use FOR_EACH_SUBRTX instead of for_each_rtx. (mem_read_insn_p): Update accordingly. Index: gcc/ddg.c

[PATCH 16/50] ddg.c:insns_may_alias_p

2014-08-03 Thread Richard Sandiford
gcc/ * ddg.c (walk_mems_2, walk_mems_1): Delete. (insns_may_alias_p): Use FOR_EACH_SUBRTX rather than for_each_rtx to iterate over subrtxes. Return a bool rather than an int. Index: gcc/ddg.c === ---

[PATCH 17/50] df-problems.c:find_memory

2014-08-03 Thread Richard Sandiford
This also fixes what I think is a bug: find_memory used to stop at the first MEM it found. If that MEM was nonvolatile and nonconstant, we'd return MEMREF_NORMAL even if there was another volatile MEM. gcc/ * df-problems.c: Include rtl-iter.h. (find_memory): Turn from being a

[PATCH 18/50] dse.c:check_mem_read_use

2014-08-03 Thread Richard Sandiford
gcc/ * dse.c: Include rtl-iter.h. (check_mem_read_rtx): Change void * parameter to real type. Remove return value. (check_mem_read_use): Fix comment. Use FOR_EACH_SUBRTX_PTR instead of for_each_rtx. Don't handle null rtxes. Index: gcc/dse.c

[PATCH 19/50] dwarf2out.c:const_ok_for_output

2014-08-03 Thread Richard Sandiford
gcc/ * dwarf2out.c: Include rtl-iter.h. (const_ok_for_output_1): Take the rtx instead of a pointer to it. Remove unused data parameter. Return a bool, inverting the result so that 0/false means not ok. (const_ok_for_output): Update accordingly. Use

Fix -Wsuggest-final-types warning

2014-08-03 Thread Jan Hubicka
Hi, this patch fixes thinko and makes the type warned about to be output right. Thanks to Trevor for noticing that. Bootstrapped/regtested x86_64-linux, comitted. Honza * ipa-devirt.c (odr_type_warn_count): Add type. (possible_polymorphic_call_targets): Set it.

[PATCH 20/50] dwarf2out.c:resolve_one_addr

2014-08-03 Thread Richard Sandiford
gcc/ * dwarf2out.c (resolve_one_addr): Remove unused data parameter. Return a bool, inverting the result so that 0/false means not ok. Use FOR_EACH_SUBRTX_PTR instead of for_each_rtx to iterate over subrtxes of a CONST. (mem_loc_descriptor,

Re: [GSoC] checking for the loop parallelism

2014-08-03 Thread Roman Gareev
This looks very similar to what we reported to the isl mailing list. It is definitely not the best test case for the parallelism patch. In fact, I doubt this requires the parallelism test at all. I've found out, that Graphite generates the expected code using the separate option for all

[PATCH 21/50] Faster for_each_rtx-like iterators

2014-08-03 Thread Richard Sandiford
The switch statement in the old code seemed overly cautious. It's well established elsewhere that the first operand of an RTX_AUTOINC is the automodified register. If anyone wanted to add a new code for which that wasn't true they should (a) reconsider or (b) go through all RTX_AUTOINCs as a

[PATCH 22/50] final.c:mark_symbol_refs_as_used

2014-08-03 Thread Richard Sandiford
gcc/ * final.c: Include rtl-iter.h. (mark_symbol_ref_as_used): Delete. (mark_symbol_refs_as_used): Use FOR_EACH_SUBRTX instead of for_each_rtx. Index: gcc/final.c === --- gcc/final.c 2014-08-03

[PATCH 23/50] function.c:instantiate_virtual_regs_in_rtx

2014-08-03 Thread Richard Sandiford
gcc/ * function.c: Include rtl-iter.h (instantiate_virtual_regs_in_rtx): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Return the changed flag. (instantiate_virtual_regs_in_insn, instantiate_decl_rtl)

Re: [GSoC] checking for the loop parallelism

2014-08-03 Thread Roman Gareev
Sorry for misprints Graphite successfully passes all the tests from libgomp/testsuite/libgomp.graphite except graphite-isl-ast-to-gimple.c and graphite-poly.h except force-parallel-5.c and force-parallel-8.c -- Cheers, Roman Gareev.

[PATCH 24/50] fwprop.c:varying_mem_p

2014-08-03 Thread Richard Sandiford
gcc/ * fwprop.c: Include rtl-iter.h. (varying_mem_p): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (propagate_rtx): Update accordingly. Index: gcc/fwprop.c

[PATCH 25/50] ira.c:set_paradoxical_subreg

2014-08-03 Thread Richard Sandiford
gcc/ * ira.c: Include rtl-iter.h. (set_paradoxical_subreg): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Remove handling of null rtxes. (update_equiv_regs): Update call accordingly. Index: gcc/ira.c

[PATCH 26/50] jump.c:returnjump_p

2014-08-03 Thread Richard Sandiford
gcc/ * jump.c: Include rtl-iter.h. (returnjump_p_1): Delete. (returnjump_p): Use FOR_EACH_SUBRTX rather than for_each_rtx. Remove handling of null rtxes. Index: gcc/jump.c === --- gcc/jump.c

[PATCH 27/50] jump.c:eh_returnjump_p

2014-08-03 Thread Richard Sandiford
gcc/ * jump.c (eh_returnjump_p_1): Delete. (eh_returnjump_p): Use FOR_EACH_SUBRTX rather than for_each_rtx. Remove handling of null rtxes. Index: gcc/jump.c === --- gcc/jump.c 2014-08-03 11:25:27.442127486

[PATCH 28/50] loop-iv.c:replace_single_def_regs

2014-08-03 Thread Richard Sandiford
gcc/ * loop-iv.c: Include rtl-iter.h. (find_single_def_src): New function. (replace_single_def_regs): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (replace_in_expr, simplify_using_initial_values): Update

[PATCH 29/50] loop-iv.c:altered_reg_used

2014-08-03 Thread Richard Sandiford
gcc/ * loop-iv.c (altered_reg_used): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (simplify_using_condition, simplify_using_initial_values): Update accordingly. Index: gcc/loop-iv.c

[PATCH 31/50] lower-subreg.c:resolve_debug

2014-08-03 Thread Richard Sandiford
gcc/ * lower-subreg.c (adjust_decomposed_uses): Delete. (resolve_debug): Use FOR_EACH_SUBRTX_PTR rather than for_each_rtx. Remove handling of null rtxes. Index: gcc/lower-subreg.c === --- gcc/lower-subreg.c

[PATCH 30/50] lower-subreg.c:resolve_subreg_use

2014-08-03 Thread Richard Sandiford
gcc/ * lower-subreg.c: Include rtl-iter.h. (resolve_subreg_use): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Remove handling of null rtxes. (resolve_reg_notes, resolve_simple_move): Update accordingly.

[PATCH 32/50] lower-subreg.c:find_decomposable_subregs

2014-08-03 Thread Richard Sandiford
Mostly just reindentation. gcc/ * lower-subreg.c (find_decomposable_subregs): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Remove handling of null rtxes. (decompose_multiword_subregs): Update accordingly. Index:

[PATCH 33/50] reg-stack.c:subst_all_stack_regs_in_debug_insn

2014-08-03 Thread Richard Sandiford
gcc/ * reg-stack.c: Include rtl-iter.h. (subst_stack_regs_in_debug_insn): Delete. (subst_all_stack_regs_in_debug_insn): Use FOR_EACH_SUBRTX_PTR instead of for_each_rtx. Index: gcc/reg-stack.c === ---

[PATCH 34/50] regcprop.c:kill_autoinc_value

2014-08-03 Thread Richard Sandiford
gcc/ * regcprop.c: Include rtl-iter.h. (kill_value): Take a const_rtx. (kill_autoinc_value): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (copyprop_hardreg_forward_1): Update accordingly. Index:

[PATCH 35/50] regcprop.c:cprop_find_used_regs

2014-08-03 Thread Richard Sandiford
gcc/ * regcprop.c (cprop_find_used_regs_1): Delete. (cprop_find_used_regs): Use FOR_EACH_SUBRTX instead of for_each_rtx. Index: gcc/regcprop.c === --- gcc/regcprop.c 2014-08-03 11:25:29.603148851 +0100 +++

[PATCH 36/50] reload1.c:note_reg_elim_costly

2014-08-03 Thread Richard Sandiford
gcc/ * reload1.c: Include rtl-iter.h. (note_reg_elim_costly): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (eliminate_regs_1, elimination_costs_in_insn): Update accordingly. Index: gcc/reload1.c

Re: [GSoC] checking for the loop parallelism

2014-08-03 Thread Tobias Grosser
On 03/08/2014 16:05, Roman Gareev wrote: This looks very similar to what we reported to the isl mailing list. It is definitely not the best test case for the parallelism patch. In fact, I doubt this requires the parallelism test at all. I've found out, that Graphite generates the expected code

[PATCH 37/50] rtlanal.c:rtx_referenced_p

2014-08-03 Thread Richard Sandiford
The old function handled constant pool SYMBOL_REFs by going straight to the underlying constant, which meant you couldn't test for the SYMBOL_REF itself. gcc/ * rtl.h (get_pool_constant, rtx_referenced_p): Replace rtx parameters with const_rtx parameters. * varasm.c

[PATCH 38/50] rtlanal.c:replace_label

2014-08-03 Thread Richard Sandiford
The main change here is to handle ADDR_VEC and ADDR_DIFF_VECs specially, since they can have many elements and are a relatively important case for this function. This is for speed rather than correctness. gcc/ * rtl.h (replace_label_data): Delete. (replace_label): Take the old

[PATCH 39/50] rtlanal.c:record_hard_reg_uses

2014-08-03 Thread Richard Sandiford
find_all_hard_regs seems like a useful function so I split it out of the note_uses callback and exposed it in rtl.h. I have (or had) other patches that make use of it. gcc/ * rtl.h (find_all_hard_regs): Declare. * rtlanal.c (find_all_hard_regs): New function.

[PATCH 40/50] rtlanal.c:for_each_inc_dec

2014-08-03 Thread Richard Sandiford
The old for_each_inc_dec callback had a for_each_rtx-like return value, with 0 being returned directly, 0 meaning continue and 0 meaning skip subrtxes. But there's no reason to distinguish the latter two cases since auto-inc/dec expressions aren't allowed to contain other auto-inc/dec

[PATCH 41/50] rtlanal.c:tls_referenced_p

2014-08-03 Thread Richard Sandiford
gcc/ * rtl.h (tls_referenced_p): Take a const_rtx rather than an rtx. * rtlanal.c (tls_referenced_p_1): Delete. (tls_referenced_p): Take a const_rtx rather than an rtx. Use FOR_EACH_SUBRTX rather than for_each_rtx. Index: gcc/rtl.h

[PATCH 42/50] sel-sched.c:count_occurrences_equiv

2014-08-03 Thread Richard Sandiford
gcc/ * sel-sched.c: Include rtl-iter.h (count_occurrences_1): Delete. (count_occurrences_equiv): Turn rtxes into const_rtxes. Use FOR_EACH_SUBRTX rather than for_each_rtx. Index: gcc/sel-sched.c ===

[PATCH 43/50] store-motion.c:extract_mentioned_regs

2014-08-03 Thread Richard Sandiford
gcc/ * store-motion.c: Include rtl-iter.h. (extract_mentioned_regs_1): Delete. (extract_mentioned_regs): Use FOR_EACH_SUBRTX_VAR rather than for_each_rtx to iterate over subrtxes. Index: gcc/store-motion.c

[PATCH 44/50] var-tracking.c:rtx_debug_expr_p

2014-08-03 Thread Richard Sandiford
gcc/ * var-tracking.c: Include rtl-iter.h. (rtx_debug_expr_p): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (use_type): Update accordingly. Index: gcc/var-tracking.c

[PATCH 45/50] var-tracking.c:non_suitable_const

2014-08-03 Thread Richard Sandiford
gcc/ * var-tracking.c (non_suitable_const): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. Remove handling of null rtxes. (add_uses): Update accordingly. Index: gcc/var-tracking.c

[PATCH 46/50] var-tracking.c:use_narrower_mode_test

2014-08-03 Thread Richard Sandiford
gcc/ * var-tracking.c (use_narrower_mode_test): Turn from being a for_each_rtx callback to being a function that examines each subrtx itself. (adjust_mems): Update accordingly. Index: gcc/var-tracking.c

[PATCH 47/50] var-tracking.c:add_uses

2014-08-03 Thread Richard Sandiford
gcc/ * var-tracking.c (add_uses): Take an rtx rather than an rtx *. Give real type of data parameter. Remove return value. (add_uses_1): Use FOR_EACH_SUBRTX_VAR rather than for_each_rtx to iterate over subrtxes. Index: gcc/var-tracking.c

[PATCH 48/50] varasm.c:const_rtx_hash

2014-08-03 Thread Richard Sandiford
const_rtx_hash_1 had code to hash all elements of a CONST_VECTOR, but const_rtx_hash also hashes all subrtxes, so we'd end up hashing the same thing twice. This looked unintentional so I just removed the CONST_VECTOR case. If instead it was a deliberate decision then I think it deserves a

[PATCH 49/50] varasm.c:mark_constants

2014-08-03 Thread Richard Sandiford
gcc/ * varasm.c (mark_constant): Replace this for_each_rtx callback with... (mark_constants_in_pattern): ...this new function to iterate over all the subrtxes. (mark_constants): Update accordingly. Index: gcc/varasm.c

[PATCH 50/50] varasm.c:compute_reloc_for_rtx

2014-08-03 Thread Richard Sandiford
There's no point calling for_each_rtx/FOR_EACH_SUBRTX on a LABEL_REF or SYMBOL_REF. We can just handle them directly instead. gcc/ * varasm.c (compute_reloc_for_rtx_1): Take a const_rtx. Remove the pointer to the cumulative reloc value and return the value for this

[RFA] Introdue warning_n; fix singulars in the final keyword wanrings

2014-08-03 Thread Jan Hubicka
* diagnostic.c (warning_n): New function. * diagnostic-core.h (warning_n): Declare. * ipa-devirt.c (ipa_devirt): Handle singulars correctly; output dynamic counts when available. Index: diagnostic.c ===

[PATCH] Add D demangling support to libiberty

2014-08-03 Thread Iain Buclaw
Hi, This adds a demangler for the D programming language to libiberty, intended to be used in GDB and Binutils. GDB already has a trimmed down implementation of this, but have been advised that here would be a better location to house it. Notes that I think are of interest / questions I have

Aw: RE: RE: Re: [MIPS r5900] libgcc floating point fixes

2014-08-03 Thread Jürgen Urban
Hello, Fixes for high level libraries should also be high level (dmult vs __FLT_MAX_EXP__); i.e. there should be no change in a different package which is specific for MIPS. The type double should stay double and is handled without a problem when the FPU is 32 bit in ABI

Replacement of isl_int by isl_val

2014-08-03 Thread Mircea Namolaru
Hello, In the isl library used by Graphite, isl_val replaces isl_int (that become obsolete). This patch implements the required changes in Graphite. No regressions for c/c++/fortran on x86-64 Linux. Mircea Index: gcc/graphite-poly.c

Re: [PATCH 2/2] Enable elimination of zext/sext

2014-08-03 Thread Kugan
On 02/08/14 02:03, Kugan wrote: if (rhs_uns) return wi::ge_p (min, 0); // if min = 0 then range contains positive values else return wi::le_p (max, wi::max_value (TYPE_PRECISION (TREE_TYPE (ssa)), SIGNED); // if max = signed-max-of-type then range doesn't need sign-extension I

[PATCH 4.9] libstdc++ pretty-printers: Backport Python 3 support from mainline

2014-08-03 Thread Samuel Bronson
Since Jonathan Wakely independantly committed some of the changes I was preparing, I had to backport two commits, r210625 and r212453 (git commits 3a30bda and b0a6074). 2014-08-02 Samuel Bronson naes...@gmail.com Backport r212453 from trunk 2014-07-11 Samuel Bronson

Re: [PATCH] Add statistical printout of rank_for_schedule decisions

2014-08-03 Thread Maxim Kuvyrkov
On Jul 17, 2014, at 5:34 AM, Jeff Law l...@redhat.com wrote: On 07/13/14 22:17, Maxim Kuvyrkov wrote: Hi, This patch adds dump printouts for scheduling heuristics in rank_for_schedule. Rank_for_schedule is one of the cornerstones of haifa scheduler, yet its decisions are hard to track and