LGTM.
Cheers,
Tobias
Thanks! My 2 (actually 4) cents below.
> +if ($#ARGV == 1 && ("$ARGV[0]" eq "-i" || "$ARGV[0]" eq "--inline")) {
> + $diff = $ARGV[1];
Can we shift here and then just set $diff to $ARGV[0] unconditionally?
> + if ($diff eq "-") {
> + die "Reading from - and using -i are not compatibl
On 04/08/2014 08:09, Roman Gareev wrote:
Those waw dependences seem to be correct. Should even the previous analysis
only mark the j-loop as parallel?
The previous and the current analysis mark the j-loop as
nonparallelizable. (Possibly, I don't fully understand the question.
Could you please r
On 08/01/2014 07:53 PM, Jakub Jelinek wrote:
I think we should use David Malcolm's approach i.e. add some --report-bug
flag
to driver. This could be enabled by default at configure time via
--with-spec.
-freport-bug or whatever we call it should not be, at least if it attempts
to communicate ove
Hi,
For some TARGET, like ARM THUMB1, the offset in load/store should be nature
aligned. But in function get_address_cost, when computing max_offset, it
only tries byte-aligned offsets:
((unsigned HOST_WIDE_INT) 1 << i) - 1
which can not meet thumb_legitimate_offset_p check called from
thumb1_
> Those waw dependences seem to be correct. Should even the previous analysis
> only mark the j-loop as parallel?
The previous and the current analysis mark the j-loop as
nonparallelizable. (Possibly, I don't fully understand the question.
Could you please reformulate it?)
--
Hi,
libcilkrts is compiled with "-nostdlib", that means we have to
explicitly specify the pthread library we should link with (e.g. we
don't have such problem with libgomp, because it is C). And, indeed,
"-lpthread" is hard-coded in the Makefile for cilkrts. For Android
this doesn't work, because
On Jul 17, 2014, at 5:34 AM, Jeff Law 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 debu
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
Backport r212453 from trunk
2014-07-11 Samuel Bronson
Matth
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
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
===
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
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 abo
* 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
===
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 reloc
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
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 comment
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
===
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
===
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
===
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
===
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
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
===
---
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
==
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 expres
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.
(record_hard
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 la
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 (get_p
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
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
==
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
+++ gcc/reg
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: gcc/regcprop.c
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
===
--- gc
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: gc
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 20
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.
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
===
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 accord
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 +01
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 2014-08-03
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
=
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
=
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)
(i
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.
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 11:25:10
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 prec
> 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 dime
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, add_const_value_
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.
(ipa_dev
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 FOR_EA
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
===
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 for
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
===
--- gcc/ddg.c
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
=
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): Up
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 dead_debug_in
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
===
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. D
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 11
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
==
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
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
===
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
===
--- gcc/combine.
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
===
-
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 ps
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, btr_refere
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
+
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 ::add_single_to_queue)
(generic_subrtx_iterator ::add_subrtxes_to_queue)
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 pa
Bootstrapped/regtested on x86_64-linux, applying to trunk.
2014-08-02 Marek Polacek
* 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 gcc/c-family/c-comm
70 matches
Mail list logo