On January 10, 2020 3:04:07 PM GMT+01:00, Jakub Jelinek
wrote:
>Hi!
>
>The C++ testcase shows we aren't able to determine constant when
>loading
>from
>const union U { struct V { int a, b; } c; long long d; } u = { { 1, 2 }
>};
>u.d, but since your patch in the summer can handle
>const union V {
ntrol folding.
> * tree-vect-loop.c (update_epilogue_vinfo): Do not fold when
> replacing tree.
>
> gcc/testsuite/ChangeLog:
> 2020-01-10 Andre Vieira
>
> PR tree-optimization/92429
> * gcc.dg/vect/pr92429.c
>
>
--
Richard Biener
On Mon, 13 Jan 2020, Jakub Jelinek wrote:
> On Sat, Jan 11, 2020 at 05:30:52PM +0100, Jakub Jelinek wrote:
> > On Sat, Jan 11, 2020 at 05:24:19PM +0100, Andreas Schwab wrote:
> > > ../../gcc/tree-ssa-forwprop.c: In function 'bool
> > > simplify_count_trailing_zeroes(gimple_stmt_iterator*)':
> > >
Status
==
Stage 3 ended, GCC trunk is open for regression and documentation
fixes only, stage 4.
Quality Data
Priority # Change from last report
--- ---
P1 20 + 14
P2 196 - 5
P3 16
On Sat, Jan 11, 2020 at 6:13 AM Jason Merrill wrote:
>
> This is a pretty rare situation since the C++11 change to make all
> destructors default to noexcept, but it is still possible to define throwing
> destructors, and if a destructor for a local variable throws during the
> return, we've alrea
On Mon, Jan 13, 2020 at 9:47 AM Martin Liška wrote:
>
> Hi.
>
> I've got a patch that restores --help=optimize to what we had for GCC 9.
> That means it will not print parameters (and the warn_inline warning).
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to
On Fri, Jan 10, 2020 at 4:04 PM Richard Sandiford
wrote:
>
> Having the "same" vector types with different modes means that we can
> end up vectorising a constructor with a different mode from the lhs.
> This patch adds a VIEW_CONVERT_EXPR in that case.
>
> This showed up on existing tests when te
alue_ids (const svalue_id_map &map)
> }
>
>/* Clear the existing values. */
> + /* FIXME: hash_map::empty and hash_table::empty make the assumption that
> + the empty value for the key is all zeroes, which isn't the case for
> + this hash_map. See
>
On Mon, Jan 13, 2020 at 3:15 AM bin.cheng wrote:
>
> --
> Sender:Richard Biener
> Sent At:2020 Jan. 9 (Thu.) 20:01
> Recipient:Bin.Cheng
> Cc:bin.cheng ; GCC Patches
>
> Subject:Re: [PATCH GCC11]Improve uninitialized warning with
-unknown-linux-gnu, will apply
momentarily.
Richard.
2020-01-14 Richard Biener
PR middle-end/93246
* alias.c (record_component_aliases): Take superset to record
into, recurse for alias-set zero fields.
(record_component_aliases): New oveerload wrapping around the
structure, of course.
Bootstrapped and tested on x86_64-unknown-linux-gnu.
Since I'm curious I'll test a variant which checks the children
are actually recorded before pushing this ... (OK, maybe I shouldn't
do this...)
Richard.
2020-01-14 Richard Biener
On Tue, 14 Jan 2020, Richard Biener wrote:
> When an alias-set is an already existing subset there is no need
> to re-record its children as childs of the parent.
>
> I noticed this when doing 1/2 as trivial opportunity to squeeze
> back some performance for the non-caching re
On Mon, 13 Jan 2020, Martin Jambor wrote:
> Hi,
>
> sorry for taking so long to reply...
>
> On Wed, Dec 18 2019, Richard Biener wrote:
> > On December 17, 2019 1:43:15 PM GMT+01:00, Martin Jambor
> > wrote:
> >>Hi,
> >>
> >>the previous
On Tue, 14 Jan 2020, Richard Biener wrote:
> On Tue, 14 Jan 2020, Richard Biener wrote:
>
> > When an alias-set is an already existing subset there is no need
> > to re-record its children as childs of the parent.
> >
> > I noticed this when doing 1/2 as trivial o
On Tue, Jan 14, 2020 at 2:37 PM Jonathan Wakely wrote:
>
> I really think people should be reviewing what they're about to push
> before doing it.
>
> OK for wwwdocs?
So I figure that first doing the git push with -n -v and then reviewing
the pushed changes (cut&paste the revision range) with git
On Tue, Jan 14, 2020 at 3:28 PM Jonathan Wakely wrote:
>
> On 14/01/20 15:08 +0100, Richard Biener wrote:
> >On Tue, Jan 14, 2020 at 2:37 PM Jonathan Wakely wrote:
> >>
> >> I really think people should be reviewing what they're about to push
> >&g
On Tue, 14 Jan 2020, Richard Biener wrote:
> On Tue, 14 Jan 2020, Richard Biener wrote:
>
> > On Tue, 14 Jan 2020, Richard Biener wrote:
> >
> > > When an alias-set is an already existing subset there is no need
> > > to re-record its children as childs o
On Wed, Jan 15, 2020 at 11:15 AM Richard Sandiford
wrote:
>
> My earlier update_epilogue_loop_vinfo patch introduced an ICE on these
> tests for AVX512. If we use pattern stmts, STMT_VINFO_GATHER_SCATTER_P
> is valid for both the original stmt and the pattern stmt, but
> STMT_VINFO_MEMORY_ACCESS_
On Wed, Jan 15, 2020 at 10:57 AM Martin Liška wrote:
>
> Hi.
>
> The patch is about caching of outer non-CLEANUP region
> for a leh_state. It's a spin off the
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93199#c19,
> now it's not using a hash_map, but a cached value in leh_state.
>
> Patch can b
te mode 100644 gcc/testsuite/g++.dg/torture/pr93273.C
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8ef85773d7a..a4d772b1c69 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2020-01-15 Richard Biener
+
+ PR middle-end/93273
+ * tree-eh.c (sink_clobbers): If we alrea
On Wed, Jan 15, 2020 at 1:37 PM Jan Hubicka wrote:
>
> > gcc/ChangeLog:
> >
> > 2020-01-15 Martin Liska
> >
> > * ipa-profile.c (ipa_profile_read_edge_summary): Do not allow
> > 2 calls of streamer_read_hwi in a function call.
>
> Good catch, Martin!
> > ---
> > gcc/ipa-profile.c |
On January 16, 2020 12:56:48 AM GMT+01:00, David Malcolm
wrote:
>Various 32-bit targets show failures in gcc.dg/analyzer/data-model-1.c
>with tests of the form:
> __analyzer_eval (q[-2].x == 107024); /* { dg-warning "TRUE" } */
> __analyzer_eval (q[-2].y == 107025); /* { dg-warning "TRUE" } */
On January 16, 2020 9:13:46 AM GMT+01:00, apin...@marvell.com wrote:
>From: Andrew Pinski
>
>Hi,
> While working on bit-field lowering pass, I came across this bug.
>The IR looks like:
> VIEW_CONVERT_EXPR(var1) = _12;
> _1 = BIT_FIELD_REF ;
>
>Where the BIT_FIELD_REF has REF_REVERSE_STORAGE_ORD
On January 16, 2020 6:08:48 AM GMT+01:00, apin...@marvell.com wrote:
>From: Andrew Pinski
>
>Commit g:f96bf49a0 added the target field to expand_operand.
>But it leaves it uninitialized when doing a full initialization
>inside create_expand_operand. This fixes the problem and improves
>the code g
On January 16, 2020 6:08:49 AM GMT+01:00, apin...@marvell.com wrote:
>From: Andrew Pinski
>
>In struct _dep, there is an implicit padding of 4bits. This
>bit-field padding is uninitialized when init_dep_1 is being called.
>This means we access uninitialized memory but never use it for
>anything.
a constant by dividing, ensuring that we're in a
> + signed representation first. */
>tree index
> - = fold_build2 (TRUNC_DIV_EXPR, integer_type_node,
> -offset_cst, byte_size);
> -
> - if (CONSTANT_CLASS_P (index))
> + = fold_binary (TRUNC_DIV_EXPR, ssizetype,
> +fold_convert (ssizetype, offset_cst),
> +fold_convert (ssizetype, byte_size));
> + if (index && TREE_CODE (index) == INTEGER_CST)
> return get_or_create_constant_svalue (index);
> }
>
>
--
Richard Biener
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
(int *d, float e)
> +{
> + float g;
> + for (int h = 0; h < 64; h++)
> +{
> + d[h] += A::foo (g < 0 ? : g > 5 ? : g);
> + A::foo (e);
> +}
> +}
>
> Jakub
>
>
--
Richard Biener
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
On Thu, Jan 16, 2020 at 1:10 PM Richard Sandiford
wrote:
>
> If a TARGET_EXPR has poly-int size, the gimplifier would treat it
> like a VLA and use gimplify_vla_decl. gimplify_vla_decl in turn
> would use an alloca and expect all references to be gimplified
> via the DECL_VALUE_EXPR. This caused
On January 17, 2020 3:22:11 PM GMT+01:00, Joseph Myers
wrote:
>On Fri, 17 Jan 2020, Joel Brobecker wrote:
>
>> The main goal of the limit is really to avoid accidents where someone
>> pushes something he shouldn't or something he didn't realize would
>> push so many commits. If the GCC repository
On Sat, Jan 18, 2020 at 2:02 PM Iain Sandoe wrote:
>
> Hi Jakub,
>
> Jakub Jelinek wrote:
>
> > On Sat, Jan 18, 2020 at 12:53:48PM +, Iain Sandoe wrote:
> > Thanks.
> >
> > Shouldn't this be mentioned in https://gcc.gnu.org/projects/cxx-status.html
> > ?
> >
> >> * This is not enabled by defa
On Mon, Jan 20, 2020 at 2:39 AM wrote:
>
> From: Andrew Pinski
>
> Reported as PR 93321, prepare_block_for_update with some huge
> recusive inlining can go past the stack limit. The loop
> at the end, could be transformed such that the last iteration goes
> back to the begining of the function i
On Wed, Jan 15, 2020 at 3:48 PM Martin Liška wrote:
>
> On 1/15/20 12:48 PM, Martin Liška wrote:
> > On 1/15/20 12:08 PM, Richard Biener wrote:
> >> On Wed, Jan 15, 2020 at 10:57 AM Martin Liška wrote:
> >>>
> >>> Hi.
> >>>
> >>&g
On Sat, Jan 18, 2020 at 1:47 AM wrote:
>
> From: Andrew Pinski
>
> On MIPS, .set noreorder/reorder needs to emitted around
> the nop. The template for the nop instruction uses %(/%) to
> do that. But default_print_patchable_function_entry uses
> fprintf rather than output_asm_insn to output the
When versioning is run the IL is already mangled and finding
a VECTORIZED_CALL IFN can fail.
Bootstrapped / tested on x86_64-unknown-linux-gnu, pushed.
Richard.
2020-01-15 Richard Biener
PR tree-optimization/93094
* tree-vectorizer.h (vect_loop_versioning): Adjust
On Wed, Jan 8, 2020 at 11:20 AM Prathamesh Kulkarni
wrote:
>
> On Tue, 5 Nov 2019 at 17:38, Richard Biener
> wrote:
> >
> > On Tue, Nov 5, 2019 at 12:17 AM Kugan Vivekanandarajah
> > wrote:
> > >
> > > Hi,
> > > Thanks for the review.
&
On Fri, Jan 17, 2020 at 10:25 AM Martin Liška wrote:
>
> Hi.
>
> The patch removes need to have a gnu_indirect_function global
> symbol. That aligns the code with what ppc64 target does.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to be installed?
Did you
.
2020-01-20 Richard Biener
PR debug/92763
* dwarf2out.c (prune_unused_types): Unconditionally mark
called function DIEs.
* g++.dg/debug/pr92763.C: New testcase.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 70b3fad13a2..fe46c7e1eee 100644
--- a/gcc
On Mon, 20 Jan 2020, Richard Sandiford wrote:
> "Kewen.Lin" writes:
> > gcc/ChangeLog
> >
> > 2020-01-16 Kewen Lin
> >
> > * config/rs6000/rs6000.c (TARGET_STRIDE_DFORM_VALID_P): New macro.
> > (rs6000_stride_dform_valid_p): New function.
> > * doc/tm.texi: Regenerate.
> > * do
On Mon, Jan 20, 2020 at 3:46 PM H.J. Lu wrote:
>
> On Mon, Jan 20, 2020 at 6:41 AM Alexander Monakov wrote:
> >
> >
> >
> > On Mon, 20 Jan 2020, H.J. Lu wrote:
> >
> > > > Bare IFUNC's don't seem to have this restriction. Why do we want to
> > > > constrain target clones this way?
> > > >
> > >
>
On Tue, Jan 21, 2020 at 10:27 AM wrote:
>
> From: Andrew Pinski
>
> Reported as PR 93321, prepare_block_for_update with some huge
> recusive inlining can go past the stack limit. Transforming this
> recursive into worklist improves the stack usage here and we no
> longer seg fault for the testcas
hard.
2020-01-21 Richard Biener
PR tree-optimization/92328
* tree-ssa-sccvn.c (vn_reference_lookup_3): Preserve
type when value-numbering same-sized store by inserting a
VIEW_CONVERT_EXPR.
(eliminate_dom_walker::eliminate_stmt): When eliminating
On Tue, 21 Jan 2020, Alexander Monakov wrote:
> On Mon, 20 Jan 2020, Joseph Myers wrote:
>
> > On Mon, 20 Jan 2020, Alexander Monakov wrote:
> >
> > > Hi,
> > >
> > > we have this paragraph in the documentation that attempts to prohibit
> > > something that is allowed by the language. Instead
On January 21, 2020 4:37:00 PM GMT+01:00, Jan Hubicka wrote:
>> On 1/21/20 4:08 PM, Jan Hubicka wrote:
>> > I think this is not enough - you need to take into consideration
>all
>> > special characters used by make and bash, such as $ and others...
>>
>> Hm, you are right. Do you have a reasonabl
On January 21, 2020 4:37:31 PM GMT+01:00, Jan Hubicka wrote:
>Hi,
>this patch fixes ICE causes by call stmt site hash going out of sync.
>For
>speculative edges it is assumed to contain a direct call so if we are
>removing it hashtable needs to be updated. I realize that the code is
>ugly
>but I
On Tue, 21 Jan 2020, Alexander Monakov wrote:
> On Tue, 21 Jan 2020, Richard Biener wrote:
>
> > Fourth. That PNVI (I assume it's the whole pointer-provenance stuff)
> > wants to get the "best" of both which can never be done since a compiler
> > needs to
On Tue, 21 Jan 2020, Alexandre Oliva wrote:
> On Jan 20, 2020, Richard Biener wrote:
>
> > On Thu, 16 Jan 2020, Alexandre Oliva wrote:
>
> >> Here it is, at last, regstrapped on x86_64-linux-gnu. Ok to install?
>
> > I'm hesitant to approve it
On Wed, 22 Jan 2020, Joseph Myers wrote:
> On Tue, 21 Jan 2020, Richard Biener wrote:
>
> > Second. Fact is RTL does not distinguish between pointers and
> > integers and thus any attempt to make something valid when you
> > use integers and invalid when you use point
On Tue, Jan 21, 2020 at 5:40 PM Nathan Sidwell wrote:
>
> On 1/21/20 11:26 AM, Richard Biener wrote:
> > On January 21, 2020 4:37:00 PM GMT+01:00, Jan Hubicka
> > wrote:
>
> >> I would say we want to fix that... Even GCC gets idea to put # info
> >> filena
On Tue, Jan 21, 2020 at 8:09 PM Jan Hubicka wrote:
>
> > On January 21, 2020 4:37:31 PM GMT+01:00, Jan Hubicka
> > wrote:
> > >Hi,
> > >this patch fixes ICE causes by call stmt site hash going out of sync.
> > >For
> > >speculative edges it is assumed to contain a direct call so if we are
> > >r
We were incorrectly assuming a merge operation is conservative enough
for not explicitely handled operations but we also need to consider
offsetting within fields when field-sensitive analysis applies.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
Richard.
2020-22 Richard
).
On the way this allows re-enabling of VN_WALKREWRITE, fixing PR91123.
This also exposes an out-of-bound array access in
real.c:clear_significand_below fixed as well.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
Richard.
2020-01-22 Richard Biener
PR tree-optimization
On Wed, Jan 22, 2020 at 11:59 AM Richard Sandiford
wrote:
>
> cfgexpand sorts variables by decreasing size, so when merging a later
> variable into an earlier one, there's usually no need to update the
> merged size.
>
> But for poly_int sizes, the sort function just uses a lexicographical
> compa
On Wed, 22 Jan 2020, Richard Biener wrote:
>
> This fixes the validity check for redundant store removal by looking
> at the actual stmt that represents the last (relevant) change to
> the TBAA state rather than the imperfectly tracked alias set in the
> expression hash table whi
On Tue, Jan 21, 2020 at 1:48 PM Martin Liška wrote:
>
> On 1/20/20 3:52 PM, Richard Biener wrote:
> > On Mon, Jan 20, 2020 at 3:46 PM H.J. Lu wrote:
> >>
> >> On Mon, Jan 20, 2020 at 6:41 AM Alexander Monakov
> >> wrote:
> >>>
&
On Wed, Jan 22, 2020 at 12:40 PM Martin Sebor wrote:
>
> On 1/22/20 8:32 AM, Richard Biener wrote:
> > On Tue, 21 Jan 2020, Alexander Monakov wrote:
> >
> >> On Tue, 21 Jan 2020, Richard Biener wrote:
> >>
> >>> Fourth. That PNVI (I assume it'
The following delays adjusting the SLP graph for converted reduction
chains to a point where the SLP build no longer can fail since we
otherwise fail to undo marking the conversion as a group.
Bootstrap & regtest running on x86_64-unknown-linux-gnu.
Richard.
2020-01-23 Richard Bi
On January 23, 2020 7:22:02 PM GMT+01:00, Jakub Jelinek
wrote:
>Hi!
>
>The following testcase is miscompiled, because the postreload pass
>changes:
>-(insn 14 13 23 2 (parallel [
>-(set (reg:DI 1 dx [94])
>-(plus:DI (reg:DI 1 dx [95])
>-(reg:DI 5 di
On Fri, Jan 24, 2020 at 11:53 PM Joseph Myers wrote:
>
> On Fri, 24 Jan 2020, Prathamesh Kulkarni wrote:
>
> > The middle-end representation issue of ERF_RETURNS_ARG still remains,
> > which restricts the attribute till first four args. The patch simply
> > emits sorry(), for arguments beyond firs
On Fri, Jan 24, 2020 at 12:46 AM Uecker, Martin
wrote:
>
> Am Donnerstag, den 23.01.2020, 14:18 +0100 schrieb Richard Biener:
> > On Wed, Jan 22, 2020 at 12:40 PM Martin Sebor wrote:
> > >
> > > On 1/22/20 8:32 AM, Richard Biener wrote:
> > > > On
Pushed.
2020-01-27 Richard Biener
PR testsuite/91171
* gcc.dg/graphite/scop-21.c: un-XFAIL.
---
gcc/testsuite/ChangeLog | 5 +
gcc/testsuite/gcc.dg/graphite/scop-21.c | 3 +--
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/gcc/testsuite
On Mon, 27 Jan 2020, Richard Sandiford wrote:
> For the 2s failures in the PR, we have a V4SF VEC_PERM_EXPR in
> which the first two elements are duplicates of one element and
> the other two are don't-care:
>
> v4sf_b = VEC_PERM_EXPR ;
>
> The heuristic was to extend this with a blend:
>
>
On Mon, Jan 27, 2020 at 10:47 PM Segher Boessenkool
wrote:
>
> Hi!
>
> On Tue, Jan 21, 2020 at 02:10:21PM +, Wilco Dijkstra wrote:
> > While code hoisting generally improves codesize, it can affect performance
> > negatively. Benchmarking shows it doesn't help SPEC and negatively affects
> > e
On Tue, Jan 28, 2020 at 8:20 AM Alexander Monakov wrote:
>
> On Tue, 28 Jan 2020, Uecker, Martin wrote:
>
> > > (*) this also shows the level of "obfuscation" needed to fool compilers
> > > to lose provenance knowledge is hard to predict.
> >
> > Well, this is exactly the problem we want to addres
On Tue, Jan 28, 2020 at 10:49 AM Richard Sandiford
wrote:
>
> Richard Sandiford writes:
> > predcom has the following code to stop one rogue load from
> > interfering with other store-load opportunities:
> >
> > /* If A is read and B write or vice versa and there is unsuitable
> >de
On Fri, Jan 24, 2020 at 7:04 AM Prathamesh Kulkarni
wrote:
>
> On Mon, 20 Jan 2020 at 15:44, Richard Biener
> wrote:
> >
> > On Wed, Jan 8, 2020 at 11:20 AM Prathamesh Kulkarni
> > wrote:
> > >
> > > On Tue, 5 Nov 2019 at 17:38, Richard Biener
>
1-28 Richard Biener
PR tree-optimization/93439
* tree-parloops.c (create_loop_fn): Move clique bookkeeping...
* tree-cfg.c (move_sese_region_to_fn): ... here.
(verify_types_in_gimple_reference): Verify used cliques are
tracked.
* gfortran.dg/grap
With SLP now being a graph with shared nodes across instances we have
to make sure to compute the load permutation of nodes once, not
overwriting the result of earlier analysis.
Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.
Richard.
2020-01-28 Richard Biener
PR tree
On Tue, Jan 28, 2020 at 5:53 PM Andrew Stubbs wrote:
>
> This patch fixes an ICE compiling fast-math-pr55281.c for amdgcn.
>
> The problem is that an "iv" is created in which both base and step are
> pointer types,
How did you get a POINTER_TYPE step? That's where the issue lies
I think.
> but
On Tue, Jan 28, 2020 at 1:24 PM Uecker, Martin
wrote:
>
> Am Dienstag, den 28.01.2020, 11:01 +0100 schrieb Richard Biener:
> > On Tue, Jan 28, 2020 at 8:20 AM Alexander Monakov
> > wrote:
> > >
> > > On Tue, 28 Jan 2020, Uecker, Martin wrote:
> > &g
On Wed, Jan 29, 2020 at 3:55 AM Jeff Law wrote:
>
>
> Here's two approaches to fix the regression in 89689. Note this only
> fixes the regression in the originally reported testcase. THe deeper
> issue Martin raises in C#1 is not addressed. Thus if we go forward
> with either patch ISTM that we
On Tue, Jan 28, 2020 at 1:02 PM Jakub Jelinek wrote:
>
> On Tue, Jan 28, 2020 at 05:09:36PM +0530, Prathamesh Kulkarni wrote:
> > On Tue, 28 Jan 2020 at 17:00, Jakub Jelinek wrote:
> > >
> > > On Tue, Jan 28, 2020 at 04:56:59PM +0530, Prathamesh Kulkarni wrote:
> > > > Thanks for the suggestions.
CL_UID (var));
> }
> + continue;
> }
> - }
>
> - bitmap_copy (tmp, candidate_bitmap);
> - EXECUTE_IF_SET_IN_BITMAP (tmp, 0, i, bi)
> -{
> - tree var = candidate (i);
> - struct access *access;
> + bool all_types_ok = true;
> + for (struct access *access = get_first_repr_for_decl (var);
> + access;
> + access = access->next_grp)
> + if (!can_totally_scalarize_forest_p (access)
> + || !scalarizable_type_p (access->type, constant_decl_p (var)))
> + {
> + all_types_ok = false;
> + break;
> + }
> + if (!all_types_ok)
> + continue;
>
> - access = sort_and_splice_var_accesses (var);
> - if (!access || !build_access_trees (access))
> - disqualify_candidate (var,
> - "No or inhibitingly overlapping accesses.");
> -}
> + if (dump_file && (dump_flags & TDF_DETAILS))
> + {
> + fprintf (dump_file, "Will attempt to totally scalarize ");
> + print_generic_expr (dump_file, var);
> + fprintf (dump_file, " (UID: %u): \n", DECL_UID (var));
> + }
> + bool scalarized = true;
> + for (struct access *access = get_first_repr_for_decl (var);
> + access;
> + access = access->next_grp)
> + if (!is_gimple_reg_type (access->type)
> + && !totally_scalarize_subtree (access))
> + {
> + scalarized = false;
> + break;
> + }
>
> - propagate_all_subaccesses ();
> + if (scalarized)
> + for (struct access *access = get_first_repr_for_decl (var);
> +access;
> +access = access->next_grp)
> + access->grp_total_scalarization = true;
> + }
>
>if (flag_checking)
> verify_all_sra_access_forests ();
> @@ -3804,25 +4092,39 @@ initialize_constant_pool_replacements (void)
>tree var = candidate (i);
>if (!constant_decl_p (var))
> continue;
> - vec *access_vec = get_base_access_vector (var);
> - if (!access_vec)
> - continue;
> - for (unsigned i = 0; i < access_vec->length (); i++)
> +
> + struct access *access = get_first_repr_for_decl (var);
> +
> + while (access)
> {
> - struct access *access = (*access_vec)[i];
> - if (!access->replacement_decl)
> - continue;
> - gassign *stmt
> - = gimple_build_assign (get_access_replacement (access),
> -unshare_expr (access->expr));
> - if (dump_file && (dump_flags & TDF_DETAILS))
> + if (access->replacement_decl)
> {
> - fprintf (dump_file, "Generating constant initializer: ");
> - print_gimple_stmt (dump_file, stmt, 0);
> - fprintf (dump_file, "\n");
> + gassign *stmt
> + = gimple_build_assign (get_access_replacement (access),
> +unshare_expr (access->expr));
> + if (dump_file && (dump_flags & TDF_DETAILS))
> + {
> + fprintf (dump_file, "Generating constant initializer: ");
> + print_gimple_stmt (dump_file, stmt, 0);
> + fprintf (dump_file, "\n");
> + }
> + gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
> + update_stmt (stmt);
> + }
> +
> + if (access->first_child)
> + access = access->first_child;
> + else if (access->next_sibling)
> + access = access->next_sibling;
> + else
> + {
> + while (access->parent && !access->next_sibling)
> + access = access->parent;
> + if (access->next_sibling)
> + access = access->next_sibling;
> + else
> + access = access->next_grp;
> }
> - gsi_insert_after (&gsi, stmt, GSI_NEW_STMT);
> - update_stmt (stmt);
> }
> }
>
>
--
Richard Biener
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
+true, false);
> + propagate_subaccesses_from_lhs (lchild, new_acc);
> + ret = true;
> +}
> + return ret;
> +}
> +
> /* Propagate all subaccesses across assignment links. */
>
> static void
> propagate_all_subaccesses (void)
> {
> - while (work_queue_head)
> + while (rhs_work_queue_head)
> {
> - struct access *racc = pop_access_from_work_queue ();
> + struct access *racc = pop_access_from_rhs_work_queue ();
>struct assign_link *link;
>
>if (racc->group_representative)
> racc= racc->group_representative;
> - gcc_assert (racc->first_link);
> + gcc_assert (racc->first_rhs_link);
>
> - for (link = racc->first_link; link; link = link->next)
> + for (link = racc->first_rhs_link; link; link = link->next_rhs)
> {
> struct access *lacc = link->lacc;
>
> @@ -2739,22 +2870,47 @@ propagate_all_subaccesses (void)
> {
> if (!lacc->grp_write)
> {
> - subtree_mark_written_and_enqueue (lacc);
> + subtree_mark_written_and_rhs_enqueue (lacc);
> reque_parents = true;
> }
> }
> - else if (propagate_subaccesses_across_link (lacc, racc))
> + else if (propagate_subaccesses_from_rhs (lacc, racc))
> reque_parents = true;
>
> if (reque_parents)
> do
> {
> - add_access_to_work_queue (lacc);
> + add_access_to_rhs_work_queue (lacc);
> lacc = lacc->parent;
> }
> while (lacc);
> }
> }
> +
> + while (lhs_work_queue_head)
> +{
> + struct access *lacc = pop_access_from_lhs_work_queue ();
> + struct assign_link *link;
> +
> + if (lacc->group_representative)
> + lacc = lacc->group_representative;
> + gcc_assert (lacc->first_lhs_link);
> +
> + if (!bitmap_bit_p (candidate_bitmap, DECL_UID (lacc->base)))
> + continue;
> +
> + for (link = lacc->first_lhs_link; link; link = link->next_lhs)
> + {
> + struct access *racc = link->racc;
> +
> + if (racc->group_representative)
> + racc = racc->group_representative;
> + if (!bitmap_bit_p (candidate_bitmap, DECL_UID (racc->base)))
> + continue;
> + if (propagate_subaccesses_from_lhs (lacc, racc))
> + add_access_to_lhs_work_queue (racc);
> + }
> +}
> }
>
> /* Return true if the forest beginning with ROOT does not contain
>
--
Richard Biener
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
ue or parameter
> @@ -3666,10 +3915,14 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator
> *gsi, bool write)
> be accessed as a different type too, potentially creating a need for
> type conversion (see PR42196) and when scalarized unions are
> involved
> in assembler statements (see PR42398). */
> - if (!useless_type_conversion_p (type, access->type))
> + tree actual_type
> + = access->reg_acc_type ? access->reg_acc_type : access->type;
> +
> + if (!useless_type_conversion_p (type, actual_type))
> {
> tree ref;
>
> + tree repl = get_access_replacement (access);
> ref = build_ref_for_model (loc, orig_expr, 0, access, gsi, false);
>
> if (write)
> @@ -3696,7 +3949,21 @@ sra_modify_expr (tree *expr, gimple_stmt_iterator
> *gsi, bool write)
> }
> }
>else
> - *expr = repl;
> + {
> + gassign *conversion;
> + tree repl = get_reg_access_replacement (loc, access, write,
> + &conversion);
> + *expr = repl;
> +
> + if (conversion)
> + {
> + if (write)
> + gsi_insert_after (gsi, conversion, GSI_NEW_STMT);
> + else
> + gsi_insert_before (gsi, conversion, GSI_SAME_STMT);
> + }
> + }
> +
>sra_stats.exprs++;
> }
>else if (write && access->grp_to_be_debug_replaced)
> @@ -3806,7 +4073,8 @@ load_assign_lhs_subreplacements (struct access *lacc,
> gassign *stmt;
> tree rhs;
>
> - racc = find_access_in_subtree (sad->top_racc, offset, lacc->size);
> + racc = find_access_in_subtree (sad->top_racc, offset, lacc->size,
> + false);
> if (racc && racc->grp_to_be_replaced)
> {
> rhs = get_access_replacement (racc);
> @@ -3857,7 +4125,7 @@ load_assign_lhs_subreplacements (struct access *lacc,
> tree drhs;
> struct access *racc = find_access_in_subtree (sad->top_racc,
> offset,
> - lacc->size);
> + lacc->size, false);
>
> if (racc && racc->grp_to_be_replaced)
> {
> @@ -4010,8 +4278,11 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator
> *gsi)
>loc = gimple_location (stmt);
>if (lacc && lacc->grp_to_be_replaced)
> {
> - lhs = get_access_replacement (lacc);
> + gassign *lhs_conversion = NULL;
> + lhs = get_reg_access_replacement (loc, lacc, true, &lhs_conversion);
>gimple_assign_set_lhs (stmt, lhs);
> + if (lhs_conversion)
> + gsi_insert_after (gsi, lhs_conversion, GSI_NEW_STMT);
>modify_this_stmt = true;
>if (lacc->grp_partial_lhs)
> force_gimple_rhs = true;
> @@ -4020,7 +4291,10 @@ sra_modify_assign (gimple *stmt, gimple_stmt_iterator
> *gsi)
>
>if (racc && racc->grp_to_be_replaced)
> {
> - rhs = get_access_replacement (racc);
> + gassign *rhs_conversion = NULL;
> + rhs = get_reg_access_replacement (loc, racc, false, &rhs_conversion);
> + if (rhs_conversion)
> + gsi_insert_before (&orig_gsi, rhs_conversion, GSI_SAME_STMT);
>modify_this_stmt = true;
>if (racc->grp_partial_lhs)
> force_gimple_rhs = true;
>
--
Richard Biener
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
gfor_fndecl_associated = gfc_build_library_function_decl_with_spec (
> @@ -4398,6 +4406,8 @@ convert_CFI_desc (gfc_wrapped_block * bl
> while CFI_desc is the descriptor itself. */
>if (DECL_LANG_SPECIFIC (sym->backend_decl))
> CFI_desc = GFC_DECL_SAVED_DESCRIPTOR (sym->backend_decl);
> + else if (GFC_DESCRIPTOR_TYPE_P (TREE_TYPE (TREE_TYPE (sym->backend_decl
> +CFI_desc = sym->backend_decl;
>else
> CFI_desc = NULL;
>
>
> Jakub
>
>
--
Richard Biener
SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg,
Germany; GF: Felix Imendörffer; HRB 36809 (AG Nuernberg)
On Wed, Jan 29, 2020 at 3:00 PM Uecker, Martin
wrote:
>
> Am Mittwoch, den 29.01.2020, 09:45 +0100 schrieb Richard Biener:
> > On Tue, Jan 28, 2020 at 1:24 PM Uecker, Martin
> > wrote:
>
> > > >
> > > > Note for the current PTA implementation
somebody things we want this right now.
Richard.
2020-01-30 Richard Biener
PR tree-optimization/93508
* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle _CHK like
non-_CHK variants. Valueize their length arguments.
* gcc.dg/tree-ssa/ssa-fre-85.c: New testcase
This wraps { ... } in _Literal (type) for consumption by the GIMPLE FE.
Bootstrap & regtest ongoing on x86_64-unknown-linux-gnu, will push
to trunk since it eases debugging.
Richard.
2020-01-30 Richard Biener
* tree-pretty-print.c (dump_generic_node): Wrap VECTOR_CST
On Thu, Jan 30, 2020 at 5:31 AM Prathamesh Kulkarni
wrote:
>
> On Tue, 28 Jan 2020 at 17:17, Richard Biener
> wrote:
> >
> > On Fri, Jan 24, 2020 at 7:04 AM Prathamesh Kulkarni
> > wrote:
> > >
> > > On Mon, 20 Jan 2020 at 15:44, Richard Biener
On Thu, Jan 30, 2020 at 11:49 AM Prathamesh Kulkarni
wrote:
>
> On Wed, 29 Jan 2020 at 14:38, Richard Biener
> wrote:
> >
> > On Tue, Jan 28, 2020 at 1:02 PM Jakub Jelinek wrote:
> > >
> > > On Tue, Jan 28, 2020 at 05:09:36PM +0530, Prathamesh Kulkarni w
On Thu, Jan 30, 2020 at 2:04 PM Bin.Cheng wrote:
>
> On Thu, Jan 30, 2020 at 8:53 PM Andrew Stubbs wrote:
> >
> > On 29/01/2020 08:24, Richard Biener wrote:
> > > On Tue, Jan 28, 2020 at 5:53 PM Andrew Stubbs
> > > wrote:
> > >>
> > >&g
On Thu, Jan 30, 2020 at 6:09 PM Uecker, Martin
wrote:
>
> Am Donnerstag, den 30.01.2020, 16:50 + schrieb Michael Matz:
> > Hi,
> >
> > On Thu, 30 Jan 2020, Uecker, Martin wrote:
> >
> > > > guarantees face serious implementation difficulties I think
> > > > so the only alternative to PVNI (whi
On Fri, Jan 31, 2020 at 12:53 AM Vitor Guidi wrote:
>
> Hi.
>
> This patch adds a new optimization to avoid the redundant calculation
> tanh(x)/sinh(x) by replacing it for 1.0/cosh(x), for all cases where x is a
> double, a long double or a float.
>
> There should be no need for numerical stabilit
On Thu, Jan 30, 2020 at 3:09 PM Andrew Stubbs wrote:
>
> On 30/01/2020 13:49, Richard Biener wrote:
> > On Thu, Jan 30, 2020 at 2:04 PM Bin.Cheng wrote:
> >>
> >> On Thu, Jan 30, 2020 at 8:53 PM Andrew Stubbs
> >> wrote:
> >>>
> >>>
On Fri, Jan 31, 2020 at 12:06 PM Marc Glisse wrote:
>
> On Thu, 30 Jan 2020, Vitor Guidi wrote:
>
> >> + /* Simplify tanh (x) / sinh (x) -> 1.0 / cosh (x). */
> >> + (simplify
> >> + (rdiv (TANH @0) (SINH @0))
> >> + (rdiv {build_one_cst (type);} (COSH @0)))
>
> The existing
>
> (simplify
>
On Fri, Jan 31, 2020 at 1:05 PM Uecker, Martin
wrote:
>
> Am Freitag, den 31.01.2020, 09:02 +0100 schrieb Richard Biener:
> > On Thu, Jan 30, 2020 at 6:09 PM Uecker, Martin
> > wrote:
> > >
> > > Am Donnerstag, den 30.01.2020, 16:50 + schrieb Michael Matz
create more GIMPLE stmts than
before.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
Richard.
2020-01-31 Richard Biener
PR tree-optimization/92819
* tree-ssa-forwprop.c (simplify_vector_constructor): Avoid
generating more stmts than before
.
Bootstrapped on x86_64-unknown-linux-gnu, testing in progress.
Richard.
2020-01-31 Richard Biener
PR tree-optimization/91123
* tree-ssa-sccvn.c (vn_walk_cb_data::finish): New method.
(vn_walk_cb_data::last_vuse): New member.
(vn_walk_cb_data::saved_operands
On Tue, Feb 4, 2020 at 1:44 AM Martin Sebor wrote:
>
> PR 93519 reports a false positive -Wrestrict issued for an inlined call
> to strcpy that carefully guards against self-copying. This is caused
> by the caller's arguments substituted into the call during inlining and
> before dead code elimin
On Tue, Feb 4, 2020 at 2:45 PM Martin Liška wrote:
>
> Hi.
>
> The patch is about enhancement of the documentation, where
> we do not support ASLR for Precompiled Headers.
>
> Ready for trunk?
I think we support ASLR just fine?
> Thanks,
> Martin
>
> gcc/ChangeLog:
>
> 2020-02-04 Martin Liska
On Sat, Feb 1, 2020 at 1:04 AM Uecker, Martin
wrote:
>
>
>
> Hi Richard and Joseph,
>
> for discussion: here is my simple patch
> for __builtin_escape/__builtin_bless.
>
> Maybe it does something stupid.
I'd use an internal function once the frontend inserts the calls,
we shouldn't expose those t
On Mon, Feb 3, 2020 at 12:37 PM Prathamesh Kulkarni
wrote:
>
> On Thu, 30 Jan 2020 at 19:10, Richard Biener
> wrote:
> >
> > On Thu, Jan 30, 2020 at 5:31 AM Prathamesh Kulkarni
> > wrote:
> > >
> > > On Tue, 28 Jan 2020 at 17:17, Richard Biener
This adds back a folding that worked in GCC 4.5 times by amending
the pattern that handles other cases of address vs. SSA name
comparisons.
Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed.
Richard.
2020-02-04 Richard Biener
PR tree-optimization/93538
* match.pd
On Mon, Feb 3, 2020 at 7:45 PM Jeff Law wrote:
>
> On Fri, 2020-01-31 at 12:04 -0700, Martin Sebor wrote:
> > Attached is a reworked patch since the first one didn't go far
> > enough to solve the major problems. The new solution relies on
> > get_range_strlen_dynamic the same way as the sprintf
On February 4, 2020 5:30:42 PM GMT+01:00, Jeff Law wrote:
>On Tue, 2020-02-04 at 10:34 +0100, Richard Biener wrote:
>> On Tue, Feb 4, 2020 at 1:44 AM Martin Sebor wrote:
>> > PR 93519 reports a false positive -Wrestrict issued for an inlined
>call
>> > to strcpy
On Tue, Feb 4, 2020 at 4:09 PM Martin Liška wrote:
>
> On 2/4/20 2:59 PM, Jakub Jelinek wrote:
> > On Tue, Feb 04, 2020 at 02:55:31PM +0100, Richard Biener wrote:
> >> On Tue, Feb 4, 2020 at 2:45 PM Martin Liška wrote:
> >>>
> >>> Hi.
>
On Tue, Feb 4, 2020 at 6:40 PM Segher Boessenkool
wrote:
>
> Hi!
>
> On Mon, Feb 03, 2020 at 08:26:01PM -0600, Bill Schmidt wrote:
> > The current built-in support in the rs6000 back end requires at least
> > a master's degree in spelunking to comprehend. It's full of cruft,
> > redundancy, and u
On Tue, Feb 4, 2020 at 6:44 PM Richard Sandiford
wrote:
>
> Richard Sandiford writes:
> > [...]
> >> I'm not sure given the issues you've introduced if I could actually
> >> fill out the matrix of answers without more underlying information.
> >> ie, when can we get symbols without source level d
On Tue, Feb 4, 2020 at 11:02 PM Martin Sebor wrote:
>
> On 2/4/20 2:31 PM, Jeff Law wrote:
> > On Tue, 2020-02-04 at 13:08 -0700, Martin Sebor wrote:
> >> On 2/4/20 12:15 PM, Richard Biener wrote:
> >>> On February 4, 2020 5:30:42 PM GMT+01:00, Jeff Law
> >
On Fri, Jan 31, 2020 at 6:01 PM Ulrich Weigand wrote:
>
> Hello,
>
> we've noticed some inconsistencies in how the component flags of -ffast-math
> are handled, see the discussion on the GCC list starting here:
> https://gcc.gnu.org/ml/gcc/2020-01/msg00365.html
>
> This patch fixes those inconsist
1101 - 1200 of 26740 matches
Mail list logo