[debug-early] remove file_table_last_lookup

2015-01-30 Thread Aldy Hernandez
We haven't been using this for a looong time. It never even gets defined. Removed and committed to branch. Aldy commit a8076b015cad17538e369c153f8c7cf888433840 Author: Aldy Hernandez Date: Tue Jan 27 11:24:53 2015 -0800 * dwarf2out.c (file_table_last_lookup): Remove unset var

Re: [debug-early] remove file_table_last_lookup

2015-01-30 Thread Aldy Hernandez
On 01/30/2015 11:01 AM, Aldy Hernandez wrote: We haven't been using this for a looong time. It never even gets defined. Removed and committed to branch. Aldy Ughh, I'm having git rebase issues. I was missing part of the patch. Here's the rest. Committed to branch. Aldy d

Re: [debug-early] C++ clones and limbo DIEs

2015-01-30 Thread Aldy Hernandez
On 01/28/2015 10:51 AM, Jason Merrill wrote: On 01/28/2015 01:29 PM, Aldy Hernandez wrote: + /* It is rather unfortunate that Cilk creates trees this late + (during gimplification). However, until this gets fixed, + specially handle emitting DWARF for this new function and + immediately clean

Re: [debug-early] C++ clones and limbo DIEs

2015-01-30 Thread Aldy Hernandez
On 01/30/2015 02:04 PM, Jason Merrill wrote: On 01/30/2015 03:36 PM, Aldy Hernandez wrote: /* It is possible to have both DECL_ABSTRACT_P and DECLARATION be true if we started to generate the abstract instance of an inline, decided to output its containing class, and proceeded to

Re: [debug-early] C++ clones and limbo DIEs

2015-02-01 Thread Aldy Hernandez
On 01/31/2015 10:22 PM, Jason Merrill wrote: On 01/30/2015 06:49 PM, Aldy Hernandez wrote: + FOR_EACH_FUNCTION_WITH_GIMPLE_BODY (node) +if (DECL_ABSTRACT_ORIGIN (node->decl)) If we do this for all functions, not just those with DECL_ABSTRACT_ORIGIN set... + /* FIXME: What does this

Re: [debug-early] C++ clones and limbo DIEs

2015-02-04 Thread Aldy Hernandez
Howdy! Such simple requests. Such a pain in the ass to implement :). I know Richard will be tickled pink with the attached patch-- well, at least with the general approach, as generically handling DECLs has been his desire all along. I hope I got it right, as it was a royal pain to get the

Re: [debug-early] C++ clones and limbo DIEs

2015-02-05 Thread Aldy Hernandez
And what about namespace-scope variables? Maybe instead of checking for TRANSLATION_UNIT_DECL context this should check non-function context. Done. + /* This is the second iteration through the global symbols. Here we + pick up function statics that have been discovered by the call

Re: [debug-early] C++ clones and limbo DIEs

2015-02-06 Thread Aldy Hernandez
+&& DECL_CONTEXT (snode->decl) +&& TREE_CODE (DECL_CONTEXT (snode->decl)) != FUNCTION_DECL) I think this should be !decl_function_context (snode->decl), in case there's a class or BLOCK between the symbol and its enclosing function. Done, also for the iteration through reachable func

Re: [PATCH] Fix DECL_ABSTRACT_P/BLOCK_ABSTRACT handling in dwarf2out.c (PR middle-end/64937)

2015-02-06 Thread Aldy Hernandez
Richard Biener writes: > Looks good to me. I wonder if this will also help Aldyh... Hmmm, I ran into something very similar. We solved it on the debug-early branch by avoiding recursively setting DECL_ABSTRACT_P if the parent was *not* DECL_ABSTRACT_P. Like this: @@ -18274,7 +18312,8 @@ dwarf

Re: [debug-early] C++ clones and limbo DIEs

2015-02-06 Thread Aldy Hernandez
OK with that change. Sweet! Thanks for everything. Though he's been silent, I bet Richi is secretly dancing :-).

Re: [debug-early] C++ clones and limbo DIEs

2015-02-12 Thread Aldy Hernandez
On 02/10/2015 02:52 AM, Richard Biener wrote: On Fri, Feb 6, 2015 at 5:42 PM, Aldy Hernandez wrote: Of course I wonder why you need to separate handling of functions and variables The variables need to be handled earlier, else the call to analyze_functions() will remove some optimized

Re: [debug-early] C++ clones and limbo DIEs

2015-02-16 Thread Aldy Hernandez
On 02/12/2015 11:27 AM, Jason Merrill wrote: On 02/12/2015 01:04 PM, Aldy Hernandez wrote: On 02/10/2015 02:52 AM, Richard Biener wrote: On Fri, Feb 6, 2015 at 5:42 PM, Aldy Hernandez wrote: Of course I wonder why you need to separate handling of functions and variables The variables

[patch] PR debug/46102 Disable -feliminate-dwarf2-dups when reading a PCH

2015-02-19 Thread Aldy Hernandez
possibly permanently, unless we really care about it). OK for mainline pending tests? Aldy commit c0814b101417a5639fe70b41526b4e2d7a56ee52 Author: Aldy Hernandez Date: Thu Feb 19 07:35:59 2015 -0800 PR debug/46102 * c-pch.c (c_common_read_pch): Disable -feliminate-dwarf2

[patch] PR debug/58123: Set correct location for TRY blocks

2015-02-19 Thread Aldy Hernandez
commit 119b6f5c628831706ac8fa26a906d80cf996bbe3 Author: Aldy Hernandez Date: Wed Feb 18 13:31:41 2015 -0800 PR debug/58123 * gimplify.c (gimplify_expr): Prefer location of TRY_FINALLY_EXPR over input_location. testsuite/ * g++.dg/debug/dwarf2/deallocator.C: Adjust for c

Re: [patch] PR debug/46102 Disable -feliminate-dwarf2-dups when reading a PCH

2015-02-19 Thread Aldy Hernandez
On 02/19/2015 08:50 AM, Jakub Jelinek wrote: On Thu, Feb 19, 2015 at 08:45:08AM -0800, Aldy Hernandez wrote: [And this time, actually CCing the list :)]. Gentlemen! Reading in the compiler state for pch (gt_pch_restore) obliterates the DIE table, and consequently the DW_TAG_GNU_[BE]INCL* DIEs

[debug-early] emit locals early patchset

2014-10-27 Thread Aldy Hernandez
line. Phew... that's basically it. Kind words greatly appreciated. Basically I'm looking for feedback and positive reinforcement that this is all eventually useful :). Aldy p.s. Committed to branch. commit 850d7f8460c1be9865ba4c45c6c56c346b4199e0 Author: Aldy Herna

Re: [debug-early] emit locals early patchset

2014-10-28 Thread Aldy Hernandez
On 10/28/14 07:40, Michael Matz wrote: Hi, On Mon, 27 Oct 2014, Aldy Hernandez wrote: Here I use a new tree bit (BLOCK_DIE) to store the DIE<->block relationship. This will have to be adapted and streamed for LTO. You might consider using an on-the-side tree->hash map. Saves me

PING*2: Re: abstract out EH propagation cleanups

2019-05-22 Thread Aldy Hernandez
PING*2 On 5/15/19 12:36 PM, Aldy Hernandez wrote: Sorry, I meant to PING this one. Aldy On Wed, May 8, 2019 at 5:08 PM Aldy Hernandez wrote: On 5/8/19 2:30 AM, Richard Biener wrote: On Tue, May 7, 2019 at 11:55 PM Jeff Law wrote: On 5/7/19 3:45 AM, Richard Biener wrote: On Tue, May 7

Re: Simplify more EXACT_DIV_EXPR comparisons

2019-05-27 Thread Aldy Hernandez
On 5/21/19 5:53 AM, Richard Biener wrote: On Tue, May 21, 2019 at 4:13 AM Martin Sebor wrote: On 5/20/19 3:16 AM, Richard Biener wrote: On Mon, May 20, 2019 at 10:16 AM Marc Glisse wrote: On Mon, 20 May 2019, Richard Biener wrote: On Sun, May 19, 2019 at 6:16 PM Marc Glisse wrote:

Re: Simplify more EXACT_DIV_EXPR comparisons

2019-05-27 Thread Aldy Hernandez
I don't know if there's the -Walloca pass would benefit from merging with any of the others or vice versa, but superficially it seems like it might be worth thinking about integrating the -Walloc-larger-than warnings into the -Walloca pass, if only to keep similar functionality in the same plac

undefined behavior in value_range::equiv_add()?

2019-05-29 Thread Aldy Hernandez
As per the API, and the original documentation to value_range, VR_UNDEFINED and VR_VARYING should never have equivalences. However, equiv_add is tacking on equivalences blindly, and there are various regressions that happen if I fix this oversight. void value_range::equiv_add (const_tree var,

Re: undefined behavior in value_range::equiv_add()?

2019-05-29 Thread Aldy Hernandez
On 5/29/19 9:24 AM, Richard Biener wrote: On Wed, May 29, 2019 at 2:18 PM Aldy Hernandez wrote: As per the API, and the original documentation to value_range, VR_UNDEFINED and VR_VARYING should never have equivalences. However, equiv_add is tacking on equivalences blindly, and there are

Re: undefined behavior in value_range::equiv_add()?

2019-05-29 Thread Aldy Hernandez
On 5/29/19 12:12 PM, Jeff Law wrote: On 5/29/19 9:58 AM, Aldy Hernandez wrote: On 5/29/19 9:24 AM, Richard Biener wrote: On Wed, May 29, 2019 at 2:18 PM Aldy Hernandez wrote: As per the API, and the original documentation to value_range, VR_UNDEFINED and VR_VARYING should never have

value_range_base::{non_zero_p, set_zero, set_non_zero}

2019-05-29 Thread Aldy Hernandez
with these changes, as well as the pending intersect patch, we've cleaned up the remaining value_range uses where we actually wanted to use value_range_base. Or at least the remaining "value_range tem" business. OK? Aldy commit 55294d340a0727dbe985ee4bf3c1969a19bcbe6d Author: Aldy

Re: Simplify more EXACT_DIV_EXPR comparisons

2019-05-31 Thread Aldy Hernandez
I've never been too happy with the too large due to cast warnings. For that matter, it seems like a lot of the unbounded alloca warning variants were artifacts of the way we couldn't get precise ranges after vrp asserts had disappeared and we were trying to guess at what the actual range in the ori

Re: value_range_base::{non_zero_p, set_zero, set_non_zero}

2019-05-31 Thread Aldy Hernandez
Thanks. I will adjust accordingly. On Fri, May 31, 2019, 02:26 Martin Sebor wrote: > On 5/30/19 12:58 AM, Aldy Hernandez wrote: > > Hi. > > > > We have zero_p in the API, but we don't have non_zero_p. Instead we use > > a non-API function range_is_nonnull. I&#x

Re: Simplify more EXACT_DIV_EXPR comparisons

2019-05-31 Thread Aldy Hernandez
Sure. No problem. Thanks for looking at this. Aldy On Fri, May 31, 2019, 17:48 Marc Glisse wrote: > On Fri, 31 May 2019, Aldy Hernandez wrote: > > > I've never been too happy with the too large due to cast warnings. For > that > > matter, it seems like a lot of th

Re: undefined behavior in value_range::equiv_add()?

2019-06-03 Thread Aldy Hernandez
On 5/31/19 5:00 AM, Richard Biener wrote: On Fri, May 31, 2019 at 2:27 AM Jeff Law wrote: On 5/29/19 10:20 AM, Aldy Hernandez wrote: On 5/29/19 12:12 PM, Jeff Law wrote: On 5/29/19 9:58 AM, Aldy Hernandez wrote: On 5/29/19 9:24 AM, Richard Biener wrote: On Wed, May 29, 2019 at 2:18 PM

Re: undefined behavior in value_range::equiv_add()?

2019-06-06 Thread Aldy Hernandez
Meanwhile I have bootstrapped / tested the following which does the VARYING thing. Applied to trunk. I think we need to backport this since this is a latent wrong-code issue. We can see to improve things on the trunk incrementally. Folks, thanks so much for taking care of this. After Richard

Remove value_range_constant_singleton

2019-06-11 Thread Aldy Hernandez
We already have value_range::singleton_p. No need for a separate external function with the same functionality. OK? commit 42981b54247461fcaa43d14315efa6fd3abbf949 Author: Aldy Hernandez Date: Tue Jun 4 18:42:33 2019 +0200 Remove value_range_constant_singleton in favor of value_range

Add value_range_base::contains_p

2019-06-11 Thread Aldy Hernandez
s. OK? commit eac5cbfa507146166498e395d9347efdf46d3ef4 Author: Aldy Hernandez Date: Tue Jun 4 09:11:22 2019 +0200 value_range_base::contains_p and may_contains_p. diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bee0a75a000..4f5c1798751 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,17

Re: Add value_range_base::contains_p

2019-06-11 Thread Aldy Hernandez
On 6/11/19 9:45 AM, Richard Biener wrote: On Tue, Jun 11, 2019 at 12:40 PM Aldy Hernandez wrote: This patch cleans up the various contains, may_contain, and value_inside_range variants we have throughout, in favor of one-- contains_p. There should be no changes in functionality. I have

Re: Add value_range_base::contains_p

2019-06-11 Thread Aldy Hernandez
On 6/11/19 12:17 PM, Martin Sebor wrote: On 6/11/19 9:05 AM, Aldy Hernandez wrote: On 6/11/19 9:45 AM, Richard Biener wrote: On Tue, Jun 11, 2019 at 12:40 PM Aldy Hernandez wrote: This patch cleans up the various contains, may_contain, and value_inside_range variants we have throughout

Re: Add value_range_base::contains_p

2019-06-11 Thread Aldy Hernandez
On 6/11/19 12:52 PM, Martin Sebor wrote: On 6/11/19 10:26 AM, Aldy Hernandez wrote: On 6/11/19 12:17 PM, Martin Sebor wrote: On 6/11/19 9:05 AM, Aldy Hernandez wrote: On 6/11/19 9:45 AM, Richard Biener wrote: On Tue, Jun 11, 2019 at 12:40 PM Aldy Hernandez wrote: This patch cleans

Re: Add value_range_base::contains_p

2019-06-12 Thread Aldy Hernandez
On 6/12/19 5:33 AM, Richard Biener wrote: On Wed, Jun 12, 2019 at 1:57 AM Martin Sebor wrote: On 6/11/19 3:02 PM, Aldy Hernandez wrote: On 6/11/19 12:52 PM, Martin Sebor wrote: On 6/11/19 10:26 AM, Aldy Hernandez wrote: On 6/11/19 12:17 PM, Martin Sebor wrote: On 6/11/19 9:05 AM, Aldy

value_range and irange unification

2019-06-21 Thread Aldy Hernandez
Hi Richard. Hi folks. In order to unify the APIs for value_range and irange, we'd like to make some minor changes to value_range. We believe most of these changes could go in now, and would prefer so, to get broader testing and minimize the plethora of changes we drag around on our branch.

types for VR_VARYING

2019-08-12 Thread Aldy Hernandez
on x86-64 Linux. OK? Aldy commit dad943a48ff2fccc203bf11839b7e3016e44dfe1 Author: Aldy Hernandez Date: Mon Jul 22 10:04:43 2019 +0200 Add type to VR_VARYING. diff --git a/gcc/gimple-ssa-evrp-analyze.c b/gcc/gimple-ssa-evrp-analyze.c index 4c68af847e1..0184703a13c 100644 --- a/gcc/gimpl

enforce canonicalization of value_range's

2019-08-12 Thread Aldy Hernandez
. Tested on x86-64 Linux. OK (assuming ChangeLog entries)? Aldy commit ea908bdbfc8cdb4bb63e7d42630d01203edbac41 Author: Aldy Hernandez Date: Mon Jul 15 18:09:27 2019 +0200 Enforce canonicalization in value_range. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 594ee9adc17..de2f39d8487

Re: types for VR_VARYING

2019-08-13 Thread Aldy Hernandez
On 8/12/19 7:46 PM, Jeff Law wrote: On 8/12/19 12:43 PM, Aldy Hernandez wrote: This is a fresh re-post of: https://gcc.gnu.org/ml/gcc-patches/2019-07/msg6.html Andrew gave me some feedback a week ago, and I obviously don't remember what it was because I was about to leave o

Re: enforce canonicalization of value_range's

2019-08-13 Thread Aldy Hernandez
On 8/12/19 7:32 PM, Jeff Law wrote: On 8/12/19 12:48 PM, Aldy Hernandez wrote: This is a ping of: https://gcc.gnu.org/ml/gcc-patches/2019-07/msg8.html I have addressed the comments Jeff mentioned there. This patch goes before the VR_VARYING + types patch, but I can adapt either one to

Re: types for VR_VARYING

2019-08-14 Thread Aldy Hernandez
On 8/14/19 9:50 AM, Andrew MacLeod wrote: On 8/13/19 8:39 PM, Aldy Hernandez wrote: Yes, it was 2X. I noticed that Richi made some changes to the lattice handling for VARYING while the discussion was on-going.  I missed these, and had failed to adapt the patch for it.  I would

Re: types for VR_VARYING

2019-08-15 Thread Aldy Hernandez
On 8/14/19 1:37 PM, Jeff Law wrote: On 8/13/19 6:39 PM, Aldy Hernandez wrote: On 8/12/19 7:46 PM, Jeff Law wrote: On 8/12/19 12:43 PM, Aldy Hernandez wrote: This is a fresh re-post of: https://gcc.gnu.org/ml/gcc-patches/2019-07/msg6.html Andrew gave me some feedback a week ago, and I

Re: enforce canonicalization of value_range's

2019-08-15 Thread Aldy Hernandez
On 8/14/19 1:53 PM, Jeff Law wrote: On 8/13/19 6:51 PM, Aldy Hernandez wrote: Presumably this was better than moving the implementation earlier. Actually, it was for ease of review.  I made some changes to the function, and I didn't want the reviewer to miss them because I had move

Re: types for VR_VARYING

2019-08-15 Thread Aldy Hernandez
On 8/15/19 7:23 AM, Richard Biener wrote: On Thu, Aug 15, 2019 at 12:40 PM Aldy Hernandez wrote: On 8/14/19 1:37 PM, Jeff Law wrote: On 8/13/19 6:39 PM, Aldy Hernandez wrote: On 8/12/19 7:46 PM, Jeff Law wrote: On 8/12/19 12:43 PM, Aldy Hernandez wrote: This is a fresh re-post of

Re: types for VR_VARYING

2019-08-15 Thread Aldy Hernandez
On 8/15/19 7:23 AM, Richard Biener wrote: On Thu, Aug 15, 2019 at 12:40 PM Aldy Hernandez wrote: On 8/14/19 1:37 PM, Jeff Law wrote: On 8/13/19 6:39 PM, Aldy Hernandez wrote: On 8/12/19 7:46 PM, Jeff Law wrote: On 8/12/19 12:43 PM, Aldy Hernandez wrote: This is a fresh re-post of

Re: types for VR_VARYING

2019-08-15 Thread Aldy Hernandez
On 8/15/19 12:06 PM, Aldy Hernandez wrote: On 8/15/19 7:23 AM, Richard Biener wrote: On Thu, Aug 15, 2019 at 12:40 PM Aldy Hernandez wrote: On 8/14/19 1:37 PM, Jeff Law wrote: On 8/13/19 6:39 PM, Aldy Hernandez wrote: On 8/12/19 7:46 PM, Jeff Law wrote: On 8/12/19 12:43 PM, Aldy

Re: types for VR_VARYING

2019-08-24 Thread Aldy Hernandez
On 8/23/19 4:27 PM, Martin Sebor wrote: On 8/15/19 10:06 AM, Aldy Hernandez wrote: Hey Aldy, After enabling EVRP for the strlen pass (as part of the sprintf integration) I get a SEGV in the return statement in the function below.  Backing out this change gets rid of the ICE and lets my

Re: VRP: undefined shifting calculation should not need sign bit

2018-10-17 Thread Aldy Hernandez
On 9/13/18 3:33 AM, Richard Sandiford wrote: Aldy Hernandez writes: On 09/12/2018 12:57 PM, Richard Sandiford wrote: Aldy Hernandez writes: diff --git a/gcc/wide-int-range.h b/gcc/wide-int-range.h index 589fdea4df6..e9ee418e5b2 100644 --- a/gcc/wide-int-range.h +++ b/gcc/wide-int-range.h

Re: VRP: rewrite the division code (to handle corner cases including 0)

2018-10-17 Thread Aldy Hernandez
On 8/23/18 8:51 AM, Richard Biener wrote: On Tue, Aug 21, 2018 at 7:35 PM Aldy Hernandez wrote: On 08/21/2018 05:46 AM, Richard Biener wrote: On Wed, Aug 15, 2018 at 3:33 AM Aldy Hernandez wrote: Yeah, nice work. Few comments: + TYPE_OVERFLOW_UNDEFINED

Re: VRP: undefined shifting calculation should not need sign bit

2018-10-17 Thread Aldy Hernandez
On 10/17/18 6:52 AM, Richard Sandiford wrote: Aldy Hernandez writes: On 9/13/18 3:33 AM, Richard Sandiford wrote: Aldy Hernandez writes: On 09/12/2018 12:57 PM, Richard Sandiford wrote: Aldy Hernandez writes: diff --git a/gcc/wide-int-range.h b/gcc/wide-int-range.h index 589fdea4df6

Re: [patch] new API for value_range

2018-10-17 Thread Aldy Hernandez
On 10/17/18 6:50 AM, Richard Biener wrote: On Thu, Oct 11, 2018 at 8:25 PM Aldy Hernandez wrote: On 10/11/18 5:47 AM, Richard Biener wrote: On Thu, Oct 11, 2018 at 10:19 AM Aldy Hernandez wrote: Hi Richard. Thanks for reviewing. On 10/10/18 6:27 AM, Richard Biener wrote: On Tue

Re: [PATCH] Fix some EVRP stupidness

2018-10-18 Thread Aldy Hernandez
On 10/18/18 8:11 AM, Richard Biener wrote: On Thu, 18 Oct 2018, Richard Biener wrote: At some point we decided to not simply intersect all ranges we get via register_edge_assert_for. Instead we simply register them in-order. That causes things like replacing [64, +INF] with ~[0, 0]. The

Re: [patch] new API for value_range

2018-10-21 Thread Aldy Hernandez
Is this fixed by Richard's patch to 87640? if so, perhaps this is a duplicate of said PR. On Sun, Oct 21, 2018 at 3:34 AM H.J. Lu wrote: > > On Wed, Oct 17, 2018 at 7:39 AM Aldy Hernandez wrote: > > > > > > > > On 10/17/18 6:50 AM, Richard Biener wrote: &g

Re: [PATCH] Fix PR87640

2018-10-22 Thread Aldy Hernandez
On 10/22/18 6:21 AM, Richard Biener wrote: Bootstrapped and tested on x86_64-unknown-linux-gnu, applied. Richard. 2018-10-22 Richard Biener PR tree-optimization/87640 * tree-vrp.c (set_value_range_with_overflow): Decompose incomplete result. (extract_rang

Re: [PATCH] Fix some EVRP stupidness

2018-10-23 Thread Aldy Hernandez
+ if (tem.kind () == old_vr->kind () + && tem.min () == old_vr->min () + && tem.max () == old_vr->max ()) + continue; I think it would be cleaner to use tem.ignore_equivs_equal_p (*old_vr). The goal was to use == when the equivalence

Re: [PATCH] Fix some EVRP stupidness

2018-10-23 Thread Aldy Hernandez
Thanks! On Tue, Oct 23, 2018, 13:37 Richard Biener wrote: > On Tue, 23 Oct 2018, Richard Biener wrote: > > > On Tue, 23 Oct 2018, Aldy Hernandez wrote: > > > > > > > > > + if (tem.kind () == old_vr->kind () > > > > + &&am

Implement {get,set}_range_info() variants that work with value_range's

2018-11-08 Thread Aldy Hernandez
get/set_range_info() currently returns the extremes of a range. I have implemented overloaded variants that return a proper range. In the future we should use actual ranges throughout, and not depend on range extremes, as depending on this behavior could causes us to lose precision. I am als

vr_values::{get,update}_value_range: use value_range API

2018-11-08 Thread Aldy Hernandez
As per $SUBJECT. Depends on get_range_info() API changes I have just submitted. OK for trunk? commit 01b8d323f896692d2e999b607f4464861d9ccd8f Author: Aldy Hernandez Date: Thu Nov 8 12:56:41 2018 +0100 * vr-values.c (vr_values::get_value_range): Use value_range API

expr_not_equal_to: use value_range API

2018-11-08 Thread Aldy Hernandez
o_tree (TREE_TYPE (t), w))) Ain't it grand? OK for trunk, depending on get_range_info changes of course? Aldy commit 3a3fa7eb1baba60d17b4b7731972951173c5d615 Author: Aldy Hernandez Date: Thu Nov 8 13:04:59 2018 +0100 * fold-const.c (expr_not_equal_to): Use value_range API. diff -

record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-08 Thread Aldy Hernandez
This one's rather obvious and does not depend on any get_range_info API change. OK for trunk? * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::record_ranges_from_incoming_edge): Use value_range API instead of piecing together ranges. diff --git a/gcc/gimple-

[committed] value_range::may_contain_p: Do not access extremes directly

2018-11-08 Thread Aldy Hernandez
This is an obvious patch I will commit once testing completes. Aldy * tree-vrp.c (may_contain_p): Do not access m_min/m_max directly. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 17b0b6c6037..7af676a416d 100644 --- a/gcc/tree-vrp.c +++ b/gcc/tree-vrp.c @@ -250,10 +250,10 @@ val

misc VRP cleanups for value_range API

2018-11-08 Thread Aldy Hernandez
Stupid boring changes. OK? * tree-vrp.c (value_range::check): Do not access internals directly. (value_range::singleton_p): Same. (value_range::type): Same. (vrp_finalize): Use value_range API. diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp

implement value_range::domain_p()

2018-11-08 Thread Aldy Hernandez
I believe I've seen this idiom more than once. I know for sure I've used it in our ssa-range branch :). I'll hunt for the other uses and adjust accordingly. OK? * tree-vrp.h (value_range::domain_p): New. * tree-vrp.c (value_range::domain_p): New. * tree-ssa

cleanups and unification of value_range dumping code

2018-11-08 Thread Aldy Hernandez
[Richard, you're right. An overloaded debug() is better than this->dump(). Anyone who thinks different is wrong. End of discussion.] There's no reason to have multiple ways of dumping a value range. And I'm not even talking about ipa-prop.* which decided that they should implement their ow

Re: Implement {get,set}_range_info() variants that work with value_range's

2018-11-08 Thread Aldy Hernandez
On 11/8/18 8:59 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 12:52 PM Aldy Hernandez wrote: get/set_range_info() currently returns the extremes of a range. I have implemented overloaded variants that return a proper range. In the future we should use actual ranges throughout, and not

Re: expr_not_equal_to: use value_range API

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:21 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:09 PM Aldy Hernandez wrote: All this nonsense: - rtype = get_range_info (t, &min, &max); - if (rtype == VR_RANGE) - { - if (wi::lt_p (max, w, TYPE_SIGN (TREE_TYPE (t - ret

Re: record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:24 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:17 PM Aldy Hernandez wrote: This one's rather obvious and does not depend on any get_range_info API change. OK for trunk? Hmm, no - that's broken. IIRC m_equiv are shared bitmaps if you do tem = *old_vr so you

Re: misc VRP cleanups for value_range API

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:31 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:42 PM Aldy Hernandez wrote: Stupid boring changes. OK? Well, IMHO using m_min is making clear you are accessing a member while using min () does not. There is already prior art here. I believe I discussed this before

Re: implement value_range::domain_p()

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:34 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:52 PM Aldy Hernandez wrote: I believe I've seen this idiom more than once. I know for sure I've used it in our ssa-range branch :). I'll hunt for the other uses and adjust accordingly. domain_p?! Isn

Re: Implement {get,set}_range_info() variants that work with value_range's

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:41 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:05 PM Aldy Hernandez wrote: On 11/8/18 8:59 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 12:52 PM Aldy Hernandez wrote: get/set_range_info() currently returns the extremes of a range. I have implemented

Re: expr_not_equal_to: use value_range API

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:43 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:27 PM Aldy Hernandez wrote: On 11/8/18 9:21 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:09 PM Aldy Hernandez wrote: All this nonsense: - rtype = get_range_info (t, &min, &max); - i

Re: record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:49 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:31 PM Aldy Hernandez wrote: On 11/8/18 9:24 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:17 PM Aldy Hernandez wrote: This one's rather obvious and does not depend on any get_range_info API change. OK for

Re: record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:56 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:54 PM Aldy Hernandez wrote: On 11/8/18 9:49 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:31 PM Aldy Hernandez wrote: On 11/8/18 9:24 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:17 PM Aldy Hernandez

Re: implement value_range::domain_p()

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:53 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:40 PM Aldy Hernandez wrote: On 11/8/18 9:34 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:52 PM Aldy Hernandez wrote: I believe I've seen this idiom more than once. I know for sure I've used it in our

Re: implement value_range::domain_p()

2018-11-08 Thread Aldy Hernandez
On 11/8/18 10:24 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 4:05 PM Aldy Hernandez wrote: On 11/8/18 9:53 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:40 PM Aldy Hernandez wrote: On 11/8/18 9:34 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:52 PM Aldy Hernandez

Re: expr_not_equal_to: use value_range API

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:55 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:50 PM Aldy Hernandez wrote: On 11/8/18 9:43 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 3:27 PM Aldy Hernandez wrote: On 11/8/18 9:21 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 1:09 PM Aldy Hernandez

Re: cleanups and unification of value_range dumping code

2018-11-08 Thread Aldy Hernandez
On 11/8/18 9:39 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 2:32 PM Aldy Hernandez wrote: [Richard, you're right. An overloaded debug() is better than this->dump(). Anyone who thinks different is wrong. End of discussion.] There's no reason to have multiple ways of du

Re: Implement {get,set}_range_info() variants that work with value_range's

2018-11-09 Thread Aldy Hernandez
On 11/8/18 4:47 PM, Martin Sebor wrote: On 11/08/2018 04:52 AM, Aldy Hernandez wrote: get/set_range_info() currently returns the extremes of a range.  I have implemented overloaded variants that return a proper range.  In the future we should use actual ranges throughout, and not depend on

Re: record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-09 Thread Aldy Hernandez
Patches welcome! On Fri, Nov 9, 2018, 12:30 Richard Biener On Thu, Nov 8, 2018 at 4:27 PM Jeff Law wrote: > > > > On 11/8/18 8:14 AM, Richard Biener wrote: > > > On Thu, Nov 8, 2018 at 4:00 PM Aldy Hernandez > wrote: > > >> > > >> > &

Re: cleanups and unification of value_range dumping code

2018-11-09 Thread Aldy Hernandez
On 11/9/18 6:37 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 5:03 PM Aldy Hernandez wrote: On 11/8/18 9:39 AM, Richard Biener wrote: On Thu, Nov 8, 2018 at 2:32 PM Aldy Hernandez wrote: [Richard, you're right. An overloaded debug() is better than this->dump(). Anyone wh

Re: [PATCH] Add value_range_base (w/o equivs)

2018-11-09 Thread Aldy Hernandez
On 11/9/18 9:19 AM, Richard Biener wrote: This adds value_range_base, a base class of class value_range with all members but the m_equiv one. First of all, thanks so much for doing this! I have looked into the sole GC user, IPA propagation, and replaced the value_range use there with value_

Re: cleanups and unification of value_range dumping code

2018-11-12 Thread Aldy Hernandez
I have rebased my value_range dumping patch after your value_range_base changes. I know you are not a fan of the gimple-pretty-print.c chunk, but I still think having one set of dumping code is preferable to catering to possible GC corruption while debugging. If you're strongly opposed (as,

Re: [PATCH] Add value_range_base (w/o equivs)

2018-11-12 Thread Aldy Hernandez
On 11/11/18 3:53 AM, Richard Biener wrote: On Fri, 9 Nov 2018, Aldy Hernandez wrote: On 11/9/18 9:19 AM, Richard Biener wrote: This adds value_range_base, a base class of class value_range with all members but the m_equiv one. First of all, thanks so much for doing this! I have

Re: [PATCH] Add value_range_base (w/o equivs)

2018-11-12 Thread Aldy Hernandez
Ug ok. On Mon, Nov 12, 2018, 12:10 Richard Biener On Mon, 12 Nov 2018, Aldy Hernandez wrote: > > > > > > > On 11/11/18 3:53 AM, Richard Biener wrote: > > > On Fri, 9 Nov 2018, Aldy Hernandez wrote: > > > > > > > On 11/9/18 9:19 AM,

Re: [PATCH] More value_range API cleanup

2018-11-12 Thread Aldy Hernandez
On 11/12/18 7:12 AM, Richard Biener wrote: This mainly tries to rectify the workaround I put in place for ipa-cp.c needing to build value_range instead of value_range_base for calling extract_range_from_unary_expr. To make this easier I moved more set_* functions to methods. Then for some reas

Re: [PATCH] More value_range API cleanup

2018-11-13 Thread Aldy Hernandez
The tricky part starts in the prologue for if (vr0->undefined_p ()) { vr0->deep_copy (vr1); return; } but yes, we probably can factor out a bit more common code here. I'll see to followup with more minor cleanups this week (noticed a few details myself). Like thi

Re: [PATCH] More value_range API cleanup

2018-11-13 Thread Aldy Hernandez
On 11/13/18 3:07 AM, Richard Biener wrote: On Tue, 13 Nov 2018, Aldy Hernandez wrote: The tricky part starts in the prologue for if (vr0->undefined_p ()) { vr0->deep_copy (vr1); return; } but yes, we probably can factor out a bit more common code here.

Re: [PATCH] More value_range API cleanup

2018-11-13 Thread Aldy Hernandez
On 11/13/18 8:58 AM, Richard Biener wrote: On Tue, 13 Nov 2018, Aldy Hernandez wrote: On 11/13/18 3:07 AM, Richard Biener wrote: On Tue, 13 Nov 2018, Aldy Hernandez wrote: The tricky part starts in the prologue for if (vr0->undefined_p ()) { vr0->deep_cop

Re: cleanups and unification of value_range dumping code

2018-11-13 Thread Aldy Hernandez
On 11/13/18 3:12 AM, Richard Biener wrote: On Mon, Nov 12, 2018 at 10:50 AM Aldy Hernandez wrote: I have rebased my value_range dumping patch after your value_range_base changes. I know you are not a fan of the gimple-pretty-print.c chunk, but I still think having one set of dumping code

Re: record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-13 Thread Aldy Hernandez
With your cleanups, the main raison d'etre for my patch goes away, but here is the promised removal of ignore_equivs_equal_p. I think the == operator is a bit confusing, and equality intent should be clearly specified. I am providing the following for the derived class (with no hidden default

Re: record_ranges_from_incoming_edge: use value_range API for creating new range

2018-11-14 Thread Aldy Hernandez
On 11/13/18 1:47 PM, Richard Biener wrote: On November 13, 2018 5:40:59 PM GMT+01:00, Aldy Hernandez wrote: With your cleanups, the main raison d'etre for my patch goes away, but here is the promised removal of ignore_equivs_equal_p. I think the == operator is a bit confusing, and equ

Re: value_range and irange unification

2019-06-25 Thread Aldy Hernandez
On 6/24/19 9:24 AM, Richard Biener wrote: On Fri, Jun 21, 2019 at 1:41 PM Aldy Hernandez wrote: Hi Richard. Hi folks. In order to unify the APIs for value_range and irange, we'd like to make some minor changes to value_range. We believe most of these changes could go in now, and

[range-ops] patch 00/04: Summary

2019-07-01 Thread Aldy Hernandez
I'm happy to finally contribute the range-ops part of the ranger work. This is the infrastructure for folding unary and binary ranges of tree_codes into a resulting range. It is the ranger counterpart of extract_range_from_*_expr in tree-vrp.c (not the similarly called callers in vr-values.c).

[range-ops] patch 01/04: types for VR_UNDEFINED and VR_VARYING

2019-07-01 Thread Aldy Hernandez
doing, but I'll be happy to take the blame and address anything that needs doing. Tested on x86-64 Linux with --enable-languages=all. Aldy commit 24c3a6a2cb7424a9c022930cada3a5f3c84a388a Author: Aldy Hernandez Date: Fri Jun 28 11:00:10 2019 +0200 VR_UNDEFINED and VR_VARYING now ha

[range-ops] patch 02/04: enforce canonicalization in value_range

2019-07-01 Thread Aldy Hernandez
te of things to come. It may not be an issue, but just something to keep in mind. Tested on x86-64 Linux with --enable-languages=all. Aldy commit d220a3eeb77615b39260e532e34815a3810e8348 Author: Aldy Hernandez Date: Fri Jun 28 11:15:03 2019 +0200 Enforce canonicalization in value_range.

[range-ops] patch 03/04: abstract out a few things from extract_range_from*

2019-07-01 Thread Aldy Hernandez
ly for the constructors as our internal implementation has no need for this field. The ranger accesses things with the higher-level num_pairs(), lower/upper_bound(), etc. Tested on x86-64 Linux with --enable-languages=all. Aldy commit e58c0f8b8a27fa91fe22f1f12d19f3d37cc729ae Author: Aldy Herna

[range-ops] patch 04/04: range-ops proper (PLACEHOLDER)

2019-07-01 Thread Aldy Hernandez
cc/range-op.cc @@ -0,0 +1,2096 @@ +/* Code for range operators. + Copyright (C) 2017-2019 Free Software Foundation, Inc. + Contributed by Andrew MacLeod + and Aldy Hernandez . + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify +it under the terms of the

[range-ops] patch 05/04: bonus round!

2019-07-01 Thread Aldy Hernandez
ed to conservatively add anything to the result. Tested on x86-64 Linux with --enable-languages=all. Aldy commit 4f9aa7bd1066267eee92f622ff29d78534158e20 Author: Aldy Hernandez Date: Fri Jun 28 11:34:19 2019 +0200 Do not try to further refine a VR_UNDEFINED result when intersecting value_r

Re: [range-ops] patch 01/04: types for VR_UNDEFINED and VR_VARYING

2019-07-03 Thread Aldy Hernandez
On 7/3/19 4:28 AM, Richard Biener wrote: On Mon, Jul 1, 2019 at 10:52 AM Aldy Hernandez wrote: As discussed before, this enforces types on undefined and varying, which makes everything more regular, and removes some special casing throughout range handling. I don't like it too much

Re: [range-ops] patch 02/04: enforce canonicalization in value_range

2019-07-03 Thread Aldy Hernandez
On 7/2/19 5:36 PM, Jeff Law wrote: I don't see anything inherently concerning here. I do wonder if there's any value in having a debugging function in the class that would iterate over the ranges and check them for proper canonicalization, verify that VR_{VARYING,UNDEFINED} objects do not have

<    1   2   3   4   5   6   7   8   9   10   >