Re: [PATCH 2/4] libcpp/init: remove unnecessary `struct` keyword

2024-05-14 Thread Richard Biener
On Sat, May 4, 2024 at 5:06 PM Ben Boeckel wrote: > > The initial P1689 patches were written in 2019 and ended up having code > move around over time ended up introducing a `struct` keyword to the > implementation of `cpp_finish`. Remove it to match the rest of the file > and its declaration in

Re: [PATCH v5 5/5] Add documentation for musttail attribute

2024-05-14 Thread Richard Biener
On Sun, May 5, 2024 at 8:16 PM Andi Kleen wrote: > > gcc/ChangeLog: > > * doc/extend.texi: Document [[musttail]] > --- > gcc/doc/extend.texi | 22 -- > 1 file changed, 20 insertions(+), 2 deletions(-) > > diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi > index

Re: [PATCH v5 1/5] Improve must tail in RTL backend

2024-05-14 Thread Richard Biener
On Sun, May 5, 2024 at 8:16 PM Andi Kleen wrote: > > - Give error messages for all causes of non sibling call generation > - Don't override choices of other non sibling call checks with > must tail. This causes ICEs. The must tail attribute now only > overrides flag_optimize_sibling_calls

Re: Ping [PATCH/RFC] target, hooks: Allow a target to trap on unreachable [PR109267].

2024-05-14 Thread Richard Biener
On Wed, May 8, 2024 at 9:37 PM Iain Sandoe wrote: > > Hi Folks, > > I’d like to land a viable solution to this issue if possible, (it is a show- > stopper for the aarch64-darwin development branch). I was looking as to how we handle __builtin_trap (whether we have an optab for it) - we seem to

Re: [PATCH v4 2/3] VECT: Support new IFN SAT_ADD for unsigned vector int

2024-05-14 Thread Richard Biener
On Mon, May 6, 2024 at 4:49 PM wrote: > > From: Pan Li > > This patch depends on below scalar enabling patch: > > https://gcc.gnu.org/pipermail/gcc-patches/2024-May/650822.html > > For vectorize, we leverage the existing vect pattern recog to find > the pattern similar to scalar and let the

Re: [PATCH v4 1/3] Internal-fn: Support new IFN SAT_ADD for unsigned scalar int

2024-05-14 Thread Richard Biener
On Mon, May 6, 2024 at 4:48 PM wrote: > > From: Pan Li > > This patch would like to add the middle-end presentation for the > saturation add. Aka set the result of add to the max when overflow. > It will take the pattern similar as below. > > SAT_ADD (x, y) => (x + y) | (-(TYPE)((TYPE)(x + y) <

Re: [RFC][PATCH] PR tree-optimization/109071 - -Warray-bounds false positive warnings due to code duplication from jump threading

2024-05-14 Thread Richard Biener
; +{ > + int *val = >vals[index]; /* { dg-bogus "is above array bounds" } */ > + > + assign(0,ptr, index); > + assign(*val, ptr, index); > +} > diff --git a/gcc/tree-ssa-threadupdate.cc b/gcc/tree-ssa-threadupdate.cc > index fa61ba9512b7..9f338dd4d54d 100644 > --- a/gcc/tree-ssa-threadupdate.cc > +++ b/gcc/tree-ssa-threadupdate.cc > @@ -2371,6 +2371,17 @@ back_jt_path_registry::adjust_paths_after_duplication > (unsigned curr_path_num) > } > } > > +/* Set all the stmts in the basic block BB as IS_SPLITTED. */ > + > +static void > +set_stmts_in_bb_is_splitted (basic_block bb) > +{ > + gimple_stmt_iterator gsi; > + for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next ()) > +gimple_set_is_splitted (gsi_stmt (gsi), true); > + return; > +} > + > /* Duplicates a jump-thread path of N_REGION basic blocks. > The ENTRY edge is redirected to the duplicate of the region. > > @@ -2418,6 +2429,10 @@ back_jt_path_registry::duplicate_thread_path (edge > entry, >basic_block *region_copy = XNEWVEC (basic_block, n_region); >copy_bbs (region, n_region, region_copy, , 1, _copy, loop, > split_edge_bb_loc (entry), false); > + /* Mark all the stmts in both original and copied basic blocks > + as IS_SPLITTED. */ > + set_stmts_in_bb_is_splitted (*region); > + set_stmts_in_bb_is_splitted (*region_copy); > >/* Fix up: copy_bbs redirects all edges pointing to copied blocks. The > following code ensures that all the edges exiting the jump-thread path > are > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [COMMITTED 2/5] Fix ranger when called from SCEV.

2024-05-14 Thread Richard Biener
On Mon, May 13, 2024 at 8:28 PM Jan-Benedict Glaw wrote: > > On Mon, 2024-05-13 20:19:42 +0200, Jan-Benedict Glaw > wrote: > > On Tue, 2024-04-30 17:24:15 -0400, Andrew MacLeod > > wrote: > > > Bootstrapped on x86_64-pc-linux-gnu with no regressions. pushed. > > > > Starting with this patch

Re: Avoid TYPE_MAIN_VARIANT compares in TBAA

2024-05-14 Thread Richard Biener
_ref1)) > - != TYPE_MAIN_VARIANT (TREE_TYPE (end_struct_ref2))) > + && same_type_for_tbaa (TREE_TYPE (end_struct_ref1), > + TREE_TYPE (end_struct_ref2)) != 1) > return flags | ACCESS_PATH; > >/* Now compare all handled components of the access path. > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

RE: [PATCH] vect: generate suitable convert insn for int -> int, float -> float and int <-> float.

2024-05-14 Thread Richard Biener
its = vector_element_bits (ret_type); unsigned > + int arg_elt_bits = vector_element_bits (arg_type); if (ret_elt_bits < > + arg_elt_bits) > +modifier = NARROW; > + else if (ret_elt_bits > arg_elt_bits) > +modifier = WIDEN; > + > + if (((code == FIX_TRUNC_EXPR && !flag_trappi

[PATCH] tree-optimization/99954 - redo loop distribution memcpy recognition fix

2024-05-14 Thread Richard Biener
The following revisits the fix for PR99954 which was observed as causing missed memcpy recognition and instead using memmove for non-aliasing copies. While the original fix mitigated bogus recognition of memcpy the root cause was not properly identified. The root cause is dr_analyze_indices

Re: [PATCH] internal-fn: Do not force vcond operand to reg.

2024-05-13 Thread Richard Biener
On Mon, May 13, 2024 at 4:14 PM Robin Dapp wrote: > > > What happens if we simply remove all of the force_reg here? > > On x86 I bootstrapped and tested the attached without fallout > (gcc188, so it's no avx512-native machine and therefore limited > coverage). riscv regtest is unchanged. > For

[PATCH] PR60276 fix for single-lane SLP

2024-05-13 Thread Richard Biener
When enabling single-lane SLP and not splitting groups the fix for PR60276 is no longer effective since it for unknown reason exempted pure SLP. The following removes this exemption, making gcc.dg/vect/pr60276.c PASS even with --param vect-single-lane-slp=1 Bootstrapped and tested on

[PATCH] Refactor SLP reduction group discovery

2024-05-13 Thread Richard Biener
The following refactors a bit how we perform SLP reduction group discovery possibly making it easier to have multiple reduction groups later, esp. with single-lane SLP. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. * tree-vect-slp.cc (vect_analyze_slp_instance): Remove

RE: [PATCH] Allow patterns in SLP reductions

2024-05-13 Thread Richard Biener
On Mon, 13 May 2024, Tamar Christina wrote: > > -Original Message- > > From: Richard Biener > > Sent: Friday, May 10, 2024 2:07 PM > > To: Richard Biener > > Cc: gcc-patches@gcc.gnu.org > > Subject: Re: [PATCH] Allow patterns in SLP reductions >

Re: [PATCH] tree-ssa-math-opts: Pattern recognize yet another .ADD_OVERFLOW pattern [PR113982]

2024-05-13 Thread Richard Biener
+ > +struct S > +bar (T x) > +{ > + W z = (W) x + 132; > + return (struct S) { z >> B, (T) z }; > +} > + > +struct S > +baz (T x, unsigned short y) > +{ > + W z = (W) x + y; > + return (struct S) { z >> B, (T) z }; > +} > + > +struct S > +qux (unsigned short x, T y) > +{ > + W z = (W) x + y; > + return (struct S) { z >> B, (T) z }; > +} > + > +struct S > +corge (T x, T y) > +{ > + T w = x + y; > + W z = (W) x + y; > + return (struct S) { z >> B, w }; > +} > + > +struct S > +garple (T x, T y) > +{ > + W z = (W) x + y; > + T w = x + y; > + return (struct S) { z >> B, w }; > +} > + > +/* { dg-final { scan-tree-dump-times "ADD_OVERFLOW" 6 "widening_mul" { > target { i?86-*-* x86_64-*-* } } } } */ > > Jakub > > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [PATCH] internal-fn: Do not force vcond operand to reg.

2024-05-13 Thread Richard Biener
On Mon, May 13, 2024 at 8:18 AM Robin Dapp wrote: > > > How does this make a difference in the end? I'd expect say forwprop to > > fix things? > > In general we try to only add the masking "boilerplate" of our > instructions at split time so fwprop, combine et al. can do their > work uninhibited

Re: [PATCH] Don't reduce estimated unrolled size for innermost loop.

2024-05-13 Thread Richard Biener
On Mon, May 13, 2024 at 4:29 AM liuhongt wrote: > > As testcase in the PR, O3 cunrolli may prevent vectorization for the > innermost loop and increase register pressure. > The patch removes the 1/3 reduction of unr_insn for innermost loop for UL_ALL. > ul != UR_ALL is needed since some small loop

Re: [PATCH 1/4] rs6000: Make all 128 bit scalar FP modes have 128 bit precision [PR112993]

2024-05-13 Thread Richard Biener
On Mon, May 13, 2024 at 3:39 AM Kewen.Lin wrote: > > Hi Joseph and Richi, > > Thanks for the suggestions and comments! > > on 2024/5/10 14:31, Richard Biener wrote: > > On Thu, May 9, 2024 at 9:12 PM Joseph Myers wrote: > >> > >> On Wed, 8 May 2024, K

[PATCH] tree-optimization/114998 - use-after-free with loop distribution

2024-05-10 Thread Richard Biener
When loop distribution releases a PHI node of the original IL it can end up clobbering memory that's re-used when it upon releasing its RDG resets all stmt UIDs back to -1, even those that got released. The fix is to avoid resetting UIDs based on stmts in the RDG but instead reset only those

Re: [PATCH] internal-fn: Do not force vcond operand to reg.

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 3:18 PM Robin Dapp wrote: > > Hi, > > this only forces the first comparison operator into a register if it is > not already suitable. > > Bootstrap and regtest is running on x86 and aarch64, successful on p10. > Regtested on riscv. How does this make a difference in the

Re: [PATCH] Allow patterns in SLP reductions

2024-05-10 Thread Richard Biener
On Fri, Mar 1, 2024 at 10:21 AM Richard Biener wrote: > > The following removes the over-broad rejection of patterns for SLP > reductions which is done by removing them from LOOP_VINFO_REDUCTIONS > during pattern detection. That's also insufficient in case the > patte

Re: [PATCH] tree-optimization/114760 - check variants of >> and << in loop-niter

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 12:55 PM Di Zhao OS wrote: > > This patch tries to fix pr114760 by checking for the > variants explicitly. When recognizing bit counting idiom, > include pattern "x * 2" for "x << 1", and "x / 2" for > "x >> 1" (given x is unsigned). > > Bootstrapped and tested on

Re: [PATCH] rtlanal: Correct cost regularization in pattern_cost

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 12:54 PM Segher Boessenkool wrote: > > On Fri, May 10, 2024 at 12:19:35PM +0200, Richard Biener wrote: > > On Fri, May 10, 2024 at 11:06 AM Segher Boessenkool > > wrote: > > > *All* code using a cost will have to be inspected and possibly a

Re: [PATCH] Adjust range type of calls into fold_range for IPA passes [PR114985]

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 11:24 AM Aldy Hernandez wrote: > > There are various calls into fold_range() that have the wrong type > associated with the range temporary used to hold the result. This > used to work, because we could store either integers or pointers in a > Value_Range, but is no

Re: [PATCH] rtlanal: Correct cost regularization in pattern_cost

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 11:06 AM Segher Boessenkool wrote: > > On Fri, May 10, 2024 at 04:50:10PM +0800, HAO CHEN GUI wrote: > > Hi Richard, > > Thanks for your comments. > > > > 在 2024/5/10 15:16, Richard Biener 写道: > > > But if targets return sth

Re: [COMMITTED] Remove obsolete Solaris 11.3 support

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 10:54 AM John Paul Adrian Glaubitz wrote: > > Hello Rainer, > > On Fri, 2024-05-10 at 10:20 +0200, Rainer Orth wrote: > > > > Support for Solaris 11.3 had already been obsoleted in GCC 13. However, > > > > since the only Solaris system in the cfarm was running 11.3, I've

Re: [PATCH] rtlanal: Correct cost regularization in pattern_cost

2024-05-10 Thread Richard Biener
On Fri, May 10, 2024 at 4:25 AM HAO CHEN GUI wrote: > > Hi, >The cost return from set_src_cost might be zero. Zero for > pattern_cost means unknown cost. So the regularization converts the zero > to COSTS_N_INSNS (1). > >// pattern_cost >cost = set_src_cost (SET_SRC (set), GET_MODE

Re: gcc/DATESTAMP wasn't updated since 20240507

2024-05-10 Thread Richard Biener
On Thu, 9 May 2024, Jakub Jelinek wrote: > On Thu, May 09, 2024 at 12:14:43PM +0200, Jakub Jelinek wrote: > > On Thu, May 09, 2024 at 12:04:38PM +0200, Rainer Orth wrote: > > > I just noticed that gcc/DATESTAMP wasn't updated yesterday and today, > > > staying at 20240507. > > > > I think it is

Re: Ping: [PATCH v3] doc: Correction of Tree SSA Passes info.

2024-05-10 Thread Richard Biener
computations out of loops. > > -The pass is located in @file{tree-ssa-loop.cc} and described by > > +The pass is located in @file{tree-ssa-loop-im.cc} and described by > > @code{pass_lim}. > > > > -@item Loop nest optimizations > > - > > -This is a family of loop transformations that works on loop nests. It > > -includes loop interchange, scaling, skewing and reversal and they are > > -all geared to the optimization of data locality in array traversals > > -and the removal of dependencies that hamper optimizations such as loop > > -parallelization and vectorization. The pass is located in > > -@file{tree-loop-linear.c} and described by > > -@code{pass_linear_transform}. > > - > > -@item Removal of empty loops > > - > > -This pass removes loops with no code in them. The pass is located in > > -@file{tree-ssa-loop-ivcanon.cc} and described by > > -@code{pass_empty_loop}. > > - > > @item Unrolling of small loops > > > > This pass completely unrolls loops with few iterations. The pass > > > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [PATCH 1/4] rs6000: Make all 128 bit scalar FP modes have 128 bit precision [PR112993]

2024-05-10 Thread Richard Biener
On Thu, May 9, 2024 at 9:12 PM Joseph Myers wrote: > > On Wed, 8 May 2024, Kewen.Lin wrote: > > > to widen IFmode to TFmode. To make build_common_tree_nodes > > be able to find the correct mode for long double type node, > > it introduces one hook mode_for_longdouble to offer target > > a way to

Re: [PATCH] [RFC] Add function filtering to gcov

2024-05-08 Thread Richard Biener
On Fri, Mar 29, 2024 at 8:02 PM Jørgen Kvalsvik wrote: > > This is a prototype for --include/--exclude flags, and I would like a > review of both the approach and architecture, and the implementation, > plus feedback on the feature itself. I did not update the manuals or > carefully extend

Re: [PATCH] tree-ssa-sink: Improve code sinking pass

2024-05-08 Thread Richard Biener
On Wed, Mar 13, 2024 at 2:56 PM Ajit Agarwal wrote: > > Hello Richard: > > Currently, code sinking will sink code at the use points with loop having same > nesting depth. The following patch improves code sinking by placing the sunk > code in begining of the block after the labels. > > For

[PATCH] Fix SLP reduction initial value for pointer reductions

2024-05-08 Thread Richard Biener
For pointer reductions we need to convert the initial value to the vector component integer type. Re-bootstrap and regtest running on x86_64-unknown-linux-gnu. I've ran into this latent bug on the force-slp branch. Richard. * tree-vect-loop.cc (get_initial_defs_for_reduction): Convert

[PATCH] Fix non-grouped SLP load/store accounting in alignment peeling

2024-05-08 Thread Richard Biener
When we have a non-grouped access we bogously multiply by zero. This shows most with single-lane SLP but also happens with the multi-lane splat case. Re-bootstrap & regtest running on x86_64-unknown-linux-gnu. I've ran into this latent bug on the force-slp branch. Richard. *

Re: [PATCH] tree-ssa-loop-prefetch.cc: Honour -fno-unroll-loops

2024-05-08 Thread Richard Biener
On Wed, May 8, 2024 at 9:56 AM Stefan Schulze Frielinghaus wrote: > > On s390 the following tests fail > > FAIL: gcc.dg/vect/pr109011-1.c -flto -ffat-lto-objects scan-tree-dump-times > optimized " = .CLZ (vect" 1 > FAIL: gcc.dg/vect/pr109011-1.c -flto -ffat-lto-objects scan-tree-dump-times

[PATCH] Fix and speedup IDF pruning by dominator

2024-05-08 Thread Richard Biener
When insert_updated_phi_nodes_for tries to skip pruning the IDF to blocks dominated by the nearest common dominator of the set of definition blocks it compares against ENTRY_BLOCK but that's never going to be the common dominator. In fact if it ever were the code fails to copy IDF to PRUNED_IDF,

Re: [PATCH] reassoc: Fix up optimize_range_tests_to_bit_test [PR114965]

2024-05-08 Thread Richard Biener
case '_': > + case '+': > + a = *x; > + x++; > + continue; > + default: > + break; > + } > + break; > +} > + if (a == '0' || a == '+') > +__builtin_abort (); > +} > + > +int > +main () > +{ > + foo ("_"); > +} > > Jakub > > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [PATCH] rs6000: Adjust -fpatchable-function-entry* support for dual entry [PR112980]

2024-05-08 Thread Richard Biener
On Wed, May 8, 2024 at 7:50 AM Kewen.Lin wrote: > > Hi, > > As the discussion in PR112980, although the current > implementation for -fpatchable-function-entry* conforms > with the documentation (making N NOPs be consecutive), > it's inefficient for both kernel and userspace livepatching > (see

Re: [PATCH] match: `a CMP nonnegative ? a : ABS` simplified to just `ABS` [PR112392]

2024-05-08 Thread Richard Biener
On Wed, May 8, 2024 at 5:25 AM Andrew Pinski wrote: > > We can optimize `a == nonnegative ? a : ABS`, `a > nonnegative ? a : > ABS` > and `a >= nonnegative ? a : ABS` into `ABS`. This allows removal of > some extra comparison and extra conditional moves in some cases. > I don't remember where I

Re: [PATCH] MATCH: Add some more value_replacement simplifications (a != 0 ? expr : 0) to match

2024-05-08 Thread Richard Biener
On Tue, May 7, 2024 at 10:56 PM Andrew Pinski wrote: > > On Tue, May 7, 2024 at 1:45 PM Jeff Law wrote: > > > > > > > > On 4/30/24 9:21 PM, Andrew Pinski wrote: > > > This adds a few more of what is currently done in phiopt's > > > value_replacement > > > to match. I noticed this when I was

Re: [V2][PATCH] gcc-14/changes.html: Deprecate a GCC C extension on flexible array members.

2024-05-08 Thread Richard Biener
hdr > members from struct flex now (f->hdr.foo instead of f->foo). Sometimes > this can be avoided by using a union, as I did in a recent refactoring > in Linux: [4] > > For more complex cases in Linux we've handled this by using our > "struct_group"[5] macro, which allows for a union and tagged struct to > be constructed: > > struct flex { > __struct_group(flex_hdr, hdr,, > int foo; > int bar; > ); > char data[]; > }; > struct mid_flex { struct flex_hdr hdr; int n; int o; }; > > Then struct flex member names don't have to change, but if anything is > trying to get at struct flex::data through struct mid_flex::hdr, that'll > need casting. But it _shouldn't_ since it has "n" and "o". > > -Kees > > [1] https://gcc.gnu.org/pipermail/gcc-patches/2023-May/620122.html > [2] https://github.com/RTEMS/rtems > [3] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/linux/container_of.h#n10 > [4] https://git.kernel.org/linus/896880ff30866f386ebed14ab81ce1ad3710cfc4 > [5] > https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/stddef.h?h=v6.8#n11 > > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [PATCH] PR middle-end/111701: signbit(x*x) vs -fsignaling-nans

2024-05-08 Thread Richard Biener
On Tue, May 7, 2024 at 10:44 PM Joseph Myers wrote: > > On Fri, 3 May 2024, Richard Biener wrote: > > > So what I do not necessarily agree with is that we need to preserve > > the multiplication with -fsignaling-nans. Do we consider a program doing > > > >

Re: [PATCH] expansion: Use __trunchfbf2 calls rather than __extendhfbf2 [PR114907]

2024-05-07 Thread Richard Biener
> Am 07.05.2024 um 18:02 schrieb Jakub Jelinek : > > Hi! > > The HF and BF modes have the same size/precision and neither is > a subset nor superset of the other. > So, using either __extendhfbf2 or __trunchfbf2 is weird. > The expansion apparently emits __extendhfbf2, but on the libgcc side

Re: [PATCH] tree-inline: Remove .ASAN_MARK calls when inlining functions into no_sanitize callers [PR114956]

2024-05-07 Thread Richard Biener
> Am 07.05.2024 um 17:54 schrieb Jakub Jelinek : > > Hi! > > In r9-5742 we've started allowing to inline always_inline functions into > functions which have disabled e.g. address sanitization even when the > always_inline function is implicitly from command line options sanitized. > > This

[PATCH] Fix guard for IDF pruning by dominator

2024-05-07 Thread Richard Biener
When insert_updated_phi_nodes_for tries to skip pruning the IDF to blocks dominated by the nearest common dominator of the set of definition blocks it compares against ENTRY_BLOCK but that's never going to be the common dominator, instead it will be at most its single successor. Re-bootstrap and

[PATCH] Avoid re-allocating vector

2024-05-07 Thread Richard Biener
The following avoids re-allocating the var map BB vector by pre-allocating it to the exact size needed when operating on the whole function. Re-bootstrap and regtest running on x86_64-unknown-linux-gnu. * tree-ssa-live.cc (init_var_map): Pre-allocate vec_bbs vector to the correct

[PATCH] Fix block index check in insert_updated_phi_nodes_for

2024-05-07 Thread Richard Biener
This replaces a >= 0 block index check with the appropriate NUM_FIXED_BLOCKs, the check is from times ENTRY_BLOCK was negative. Re-bootstrap and regtest running on x86_64-unknown-linux-gnu. * tree-into-ssa.cc (insert_updated_phi_nodes_for): Fix block index check. ---

[PATCH] middle-end/27800 - avoid unnecessary temporary during gimplification

2024-05-07 Thread Richard Biener
This avoids a tempoary when gimplifying reg = a ? b : c, re-using the LHS of an assignment if that's a register. Re-bootstrap and regtest running on x86_64-unknown-linux-gnu. PR middle-end/27800 * gimplify.cc (gimplify_modify_expr_rhs): For a COND_EXPR avoid a temporary

[PATCH] Remove redundant check

2024-05-07 Thread Richard Biener
operand_equal_p already has checking code to verify the hash is equal, avoid doing that again in gimplify_hasher::equal. Re-bootstrap & regtest running on x86_64-unknown-linux-gnu. * gimplify.cc (gimplify_hasher::equal): Remove redundant checking. --- gcc/gimplify.cc | 4 1

Re: [PATCH] middle-end/114931 - type_hash_canon and structual equality types

2024-05-07 Thread Richard Biener
On Mon, 6 May 2024, Martin Uecker wrote: > Am Montag, dem 06.05.2024 um 11:07 +0200 schrieb Richard Biener: > > On Mon, 6 May 2024, Martin Uecker wrote: > > > > > Am Montag, dem 06.05.2024 um 09:00 +0200 schrieb Richard Biener: > > > > On

Re: [middle-end PATCH] Constant fold {-1,-1} << 1 in simplify-rtx.cc

2024-05-07 Thread Richard Biener
On Fri, Jan 26, 2024 at 7:26 PM Roger Sayle wrote: > > > This patch addresses a missed optimization opportunity in the RTL > optimization passes. The function simplify_const_binary_operation > will constant fold binary operators with two CONST_INT operands, > and those with two CONST_VECTOR

Re: [PATCH] tree-optimization/110490 - bitcount for narrow modes

2024-05-07 Thread Richard Biener
On Tue, May 7, 2024 at 10:58 AM Stefan Schulze Frielinghaus wrote: > > Ping. Ok for mainline? OK. Thanks, Richard. > On Thu, Apr 25, 2024 at 09:26:45AM +0200, Stefan Schulze Frielinghaus wrote: > > Bitcount operations popcount, clz, and ctz are emulated for narrow modes > > in case an

[PATCH] Use unsigned for stack var indexes during RTL expansion

2024-05-07 Thread Richard Biener
We're currently using size_t but at the same time storing them into bitmaps which only support unsigned int index. The following makes it unsigned int throughout, saving memory as well. Re-bootstrap and regtest running on x86_64-unknown-linux-gnu. Richard. * cfgexpand.cc

GCC 14.1.1 Status Report (2024-05-07)

2024-05-07 Thread Richard Biener
Status == The GCC 14.1 release tarballs have been created, the releases/gcc-14 branch is open again for regression and documentation bugfixing. GCC 14.2 can be expected in about two months unless something serious changes the plans. Quality Data Priority # Change

Re: [PATCH] Mention that some options are turned on by `-Ofast` in their descriptions [PR97263]

2024-05-07 Thread Richard Biener
On Mon, May 6, 2024 at 11:28 PM Andrew Pinski wrote: > > Like was done for -ffast-math in r0-105946-ga570fc16fa8056, we should > document that -Ofast enables -fmath-errno, -funsafe-math-optimizations, > -finite-math-only, -fno-trapping-math in their documentation. > > Note this changes the

[PATCH] tree-optimization/100923 - re-do VN with contextual PTA info fix

2024-05-06 Thread Richard Biener
The following implements the gist of the PR100923 fix in a leaner (and more complete) way by realizing that all ao_ref_init_from_vn_reference uses need to have an SSA name in the base valueized with availability in mind. Instead of re-valueizing the whole chain of operands we can simply only and

[PATCH] Complete ao_ref_init_from_vn_reference for all refs

2024-05-06 Thread Richard Biener
This makes sure we can create ao_refs from all VN operands we create. Bootstrapped and tested on x86_64-unknown-linux-gnu. Will push later. Richard. * tree-ssa-sccvn.cc (ao_ref_init_from_vn_reference): Add TARGET_MEM_REF support. Handle more bases. --- gcc/tree-ssa-sccvn.cc |

[PATCH] tree-optimization/114921 - _Float16 -> __bf16 isn't noop fixup

2024-05-06 Thread Richard Biener
The following further strengthens the check which convert expressions we allow to vectorize as simple copy by resorting to tree_nop_conversion_p on the vector components. Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. PR tree-optimization/114921 *

Re: [PATCH] Driver: Reject output filenames with the same suffixes as source files [PR80182]

2024-05-06 Thread Richard Biener
On Mon, May 6, 2024 at 10:29 AM Peter0x44 wrote: > > On Mon May 6, 2024 at 8:14 AM BST, Richard Biener wrote: > > On Sat, May 4, 2024 at 9:36 PM Peter Damianov wrote: > > > > > > Currently, commands like: > > > gcc -o file.c -lm > > > will delete

Re: [PATCH] sra: Do not leave work for DSE (that it can sometimes not perform)

2024-05-06 Thread Richard Biener
ptimization opportunities. */ > if (access_has_children_p (lacc)) > - generate_subtree_copies (lacc->first_child, rhs, lacc->offset, > - 0, 0, gsi, true, true, loc); > + { > + generate_subtree_copies (lacc->first_c

Re: [PATCH] middle-end/114931 - type_hash_canon and structual equality types

2024-05-06 Thread Richard Biener
On Mon, 6 May 2024, Martin Uecker wrote: > Am Montag, dem 06.05.2024 um 09:00 +0200 schrieb Richard Biener: > > On Sat, 4 May 2024, Martin Uecker wrote: > > > > > Am Freitag, dem 03.05.2024 um 21:16 +0200 schrieb Jakub Jelinek: > > > > > On Fri, May 03,

Re: [PATCH] testsuite: c++: Skip g++.dg/analyzer on Solaris [PR111475]

2024-05-06 Thread Richard Biener
On Sun, 5 May 2024, Rainer Orth wrote: > Rainer Orth writes: > > >> On Fri, May 03, 2024 at 09:31:08AM -0400, David Malcolm wrote: > >>> Jakub, Richi, Rainer: this is a non-trivial change that cleans up > >>> analyzer C++ testsuite results on Solaris, but has a slight risk of > >>> affecting

Re: [PATCH] Driver: Reject output filenames with the same suffixes as source files [PR80182]

2024-05-06 Thread Richard Biener
On Sat, May 4, 2024 at 9:36 PM Peter Damianov wrote: > > Currently, commands like: > gcc -o file.c -lm > will delete the user's code. Since there's an error from the linker in the end (missing 'main'), I wonder if the linker can avoid truncating/opening the output file instead? A trivial

Re: [V2][PATCH] gcc-14/changes.html: Deprecate a GCC C extension on flexible array members.

2024-05-06 Thread Richard Biener
On Sat, 4 May 2024, Sebastian Huber wrote: > On 07.08.23 16:22, Qing Zhao via Gcc-patches wrote: > > Hi, > > > > This is the 2nd version of the patch. > > Comparing to the 1st version, the only change is to address Richard's > > comment on refering a warning option for diagnosing deprecated

Re: [PATCH] middle-end/114931 - type_hash_canon and structual equality types

2024-05-06 Thread Richard Biener
t; causes all sorts of problems with the Fortran frontend. */ > > > if (TREE_CODE (type1) == ARRAY_TYPE > > > && TREE_CODE (type2) == ARRAY_TYPE) > > > return -1; > > > ... > > > and later compares alias sets and the like. > > > So

Re: [PATCH] middle-end/114931 - type_hash_canon and structual equality types

2024-05-03 Thread Richard Biener
> Am 03.05.2024 um 20:37 schrieb Martin Uecker : > > Am Freitag, dem 03.05.2024 um 20:18 +0200 schrieb Jakub Jelinek: >>> On Fri, May 03, 2024 at 08:04:18PM +0200, Martin Uecker wrote: >>> A change that is not optimal but would avoid a lot of trouble is to >>> only use the tag of the struct

Re: [PATCH] middle-end/114931 - type_hash_canon and structual equality types

2024-05-03 Thread Richard Biener
> Am 03.05.2024 um 17:33 schrieb Martin Uecker : > > Am Freitag, dem 03.05.2024 um 14:13 +0200 schrieb Richard Biener: >> TYPE_STRUCTURAL_EQUALITY_P is part of our type system so we have >> to make sure to include that into the type unification done via >> type

[PATCH] middle-end/114931 - type_hash_canon and structual equality types

2024-05-03 Thread Richard Biener
TYPE_STRUCTURAL_EQUALITY_P is part of our type system so we have to make sure to include that into the type unification done via type_hash_canon. This requires the flag to be set before querying the hash which is the biggest part of the patch. Bootstrapped and tested on x86_64-unknown-linux-gnu

Re: [PATCH 3/3] Add parentheses around DECL_INIT for .original [PR23872]

2024-05-03 Thread Richard Biener
On Thu, May 2, 2024 at 11:40 PM Andrew Pinski wrote: > > When we have : > `void f (int y, int z) { int x = ( z++,y); }` > > This would have printed the decl's initializer without > parentheses which can confusion if you think that is defining > another variable rather than the compound

Re: [PATCH 2/3] Improve DECL_EXPR printing in .original [PR23872]

2024-05-03 Thread Richard Biener
On Thu, May 2, 2024 at 11:40 PM Andrew Pinski wrote: > > Right now we don't print that a DECL_EXPR and we get > basically double output of the decls and it looks confusing. > This fixes that. > for the simple example: > `void foo () { int result = 0;}` > This gives: > ``` > { > int result = 0;

Re: [PATCH 1/3] Fix printing COMPOUND_EXPR in .original [PR23872]

2024-05-03 Thread Richard Biener
On Thu, May 2, 2024 at 11:40 PM Andrew Pinski wrote: > > Starting with the merge of the openmp branch into the trunk > (r0-73077-g953ff28998b59b), COMPOUND_EXPR started to be printed > as `expr; , expr` which is wrong. This was due to the wrong > conversion of dumping_stmts into `!(flags &

[PATCH] Add default bitmap obstack allocation check

2024-05-03 Thread Richard Biener
The following adds a check that the global bitmap obstack is initialized when allocating a bitmap from it. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. * bitmap.cc (bitmap_alloc): When using the global bitmap obstack assert that is initialized. --- gcc/bitmap.cc

Re: [PATCH v2] Silence two instances of -Wcalloc-transposed-args

2024-05-03 Thread Richard Biener
On Fri, May 3, 2024 at 10:03 AM Peter Damianov wrote: > > libgcc/ > * libgcov-util.c (tag_counters): Swap order of arguments to xcalloc. > (topen_to_memory_representation): Likewise. Thanks, I pushed this for you. Richard. > Signed-off-by: Peter Damianov > --- >

Re: [PATCH] libstdc++: Update powerpc-linux-gnu baseline_symbols

2024-05-03 Thread Richard Biener
On Fri, May 3, 2024 at 12:55 PM Jonathan Wakely wrote: > > On Fri, 3 May 2024 at 11:51, Jonathan Wakely wrote: > > > > On Fri, 3 May 2024 at 10:30, Andreas Schwab wrote: > > > > > > * config/abi/post/powerpc-linux-gnu/baseline_symbols.txt: Update. > > > *

[PATCH] Avoid changing type in the type_hash_canon hash

2024-05-03 Thread Richard Biener
When building a type and type_hash_canon returns an existing type avoid changing it, in particular its TYPE_CANONICAL. Bootstrapped and tested on x86_64-unknown-linux-gnu for all languages. OK for trunk? Thanks, Richard. PR middle-end/114931 * tree.cc (build_array_type_1):

Re: [PATCH] PR middle-end/111701: signbit(x*x) vs -fsignaling-nans

2024-05-03 Thread Richard Biener
On Thu, May 2, 2024 at 3:48 PM Roger Sayle wrote: > > > > From: Richard Biener > > On Thu, May 2, 2024 at 11:34 AM Roger Sayle > > wrote: > > > > > > > > > > From: Richard Biener On Fri, Apr 26, > > > > 2024 at 10:19 AM Roger

Re: [PATCH] tree-inline: Add __builtin_stack_{save,restore} pair about inline calls with calls to alloca [PR113596]

2024-05-03 Thread Richard Biener
times "__builtin_stack_restore \\\(" 3 > "einline" } } */ > + > +void baz (char *p, int n); > +volatile int v; > + > +static inline __attribute__((always_inline)) void > +foo (int n) > +{ > + ++v; > + { > +char *p = __builtin_alloca (n); > +baz (p, n); > + } > + ++v; > +} > + > +static inline __attribute__((always_inline)) void > +bar (int n) > +{ > + ++v; > + { > +char p[n]; > +baz (p, n); > + } > + ++v; > +} > + > +void > +qux (int n) > +{ > + foo (n); > + bar (n); > +} > > Jakub > > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [Backport] ifcvt: Don't lower bitfields with non-constant offsets [PR 111882]

2024-05-03 Thread Richard Biener
On Fri, 3 May 2024, Richard Ball wrote: > Hi, > > Requesting permission to backport: > https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=24cf1f600b8ad34c68a51f48884e72d01f729893 > to gcc-13 in order to fix: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=111882 > > Applies cleanly and with no

Re: cfgrtl: Fix MEM_EXPR update in duplicate_insn_chain [PR114924]

2024-05-03 Thread Richard Biener
tion/114924 > * cfgrtl.cc (duplicate_insn_chain): When updating MEM_EXPRs, > don't strip (e.g.) ARRAY_REFs from the final MEM_EXPR. > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-05-02 Thread Richard Biener
On Thu, 2 May 2024, Manolis Tsamis wrote: > On Thu, May 2, 2024 at 4:00 PM Richard Biener wrote: > > > > On Tue, 23 Apr 2024, Manolis Tsamis wrote: > > > > > The original motivation for this pattern was that the following function > > > does > > >

[PATCH][v3] tree-optimization/114921 - _Float16 -> __bf16 isn't noop

2024-05-02 Thread Richard Biener
The vectorizer handles a _Float16 to __bf16 conversion through vectorizable_assignment, thinking it's a noop. The following fixes this by requiring the same vector component mode when checking for CONVERT_EXPR_CODE_P, being stricter than for VIEW_CONVERT_EXPR. This variant splits the check for

[PATCH] Improve SLP dump and graph

2024-05-02 Thread Richard Biener
The following notes which lanes are considered live and adds an overload to produce a graphviz graph for multiple entries into an SLP graph. Bootstrapped on x86_64-unknown-linux-gnu, testing in progress. * tree-vect-slp.cc (vect_print_slp_tree): Mark live lanes. (dot_slp_tree):

Re: [PATCH] MATCH: Maybe expand (T)(A + C1) * C2 and (T)(A + C1) * C2 + C3 [PR109393]

2024-05-02 Thread Richard Biener
,16 @@ > +/* PR tree-optimization/109393 */ > +/* { dg-do compile } */ > +/* { dg-options "-O2 -fdump-tree-optimized" } */ > +/* { dg-final { scan-tree-dump-times "return 1;" 2 "optimized" } } */ > + > +int foo(int *a, int j) > +{ > + int k = j - 1; > + return a[j - 1] == a[k]; > +} > + > +int bar(int *a, int j) > +{ > + int k = j - 1; > + return ([j + 1] - 2) == [k]; > +} > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

Re: [Backport] tree-optimization/114672 - WIDEN_MULT_PLUS_EXPR type mismatch

2024-05-02 Thread Richard Biener
and gcc-13. I'm fine with backporting if you have bootstrapped/tested them. Richard. > Thanks, > Richard > -- Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)

[PATCH] tree-optimization/114921 - _Float16 -> __bf16 isn't noop

2024-05-02 Thread Richard Biener
The vectorizer handles a _Float16 to __bf16 conversion through vectorizable_assignment, thinking it's a noop. The following fixes this by making the same-size check stricter, requiring the same vector component mode. Posted again for the arm CI PR tree-optimization/114921 *

Re: [PATCH] tree-optimization/114921 - _Float16 -> __bf16 isn't noop

2024-05-02 Thread Richard Biener
On Thu, 2 May 2024, Richard Biener wrote: > The vectorizer handles a _Float16 to __bf16 conversion through > vectorizable_assignment, thinking it's a noop. The following > fixes this by making the same-size check stricter, requiring > the same vector component mode. > > B

[PATCH] tree-optimization/114921 - _Float16 -> __bf16 isn't noop

2024-05-02 Thread Richard Biener
The vectorizer handles a _Float16 to __bf16 conversion through vectorizable_assignment, thinking it's a noop. The following fixes this by making the same-size check stricter, requiring the same vector component mode. Bootstrap & regtest running on x86_64-unknown-linux-gnu. I couldn't manage to

Re: [PATCH] Silence two instances of -Wcalloc-transposed-args

2024-05-02 Thread Richard Biener
On Mon, Apr 29, 2024 at 1:48 AM Peter Damianov wrote: > > Signed-off-by: Peter Damianov > --- > > Fixes these warnings: > > ../../gcc/gcc/../libgcc/libgcov-util.c: In function 'void > tag_counters(unsigned int, int)': > ../../gcc/gcc/../libgcc/libgcov-util.c:214:59: warning: 'void*

Re: [PATCH] PR middle-end/111701: signbit(x*x) vs -fsignaling-nans

2024-05-02 Thread Richard Biener
On Thu, May 2, 2024 at 11:34 AM Roger Sayle wrote: > > > > From: Richard Biener > > On Fri, Apr 26, 2024 at 10:19 AM Roger Sayle > > wrote: > > > > > > This patch addresses PR middle-end/111701 where optimization of > > > signbit(x

Re: [C PATCH] PR c/109618: ICE-after-error from error_mark_node.

2024-05-02 Thread Richard Biener
in c_parser_sizeof_expression (parser= > out>) > > > at ../../gcc/gcc/c/c-parser.cc:9932 > > > > > > > > > I hope this explains what's happening. The size_binop_loc call is a > > > bit of a red herring that returns the same tree it is give

Re: [PATCH v3 1/2] Driver: Add new -truncate option

2024-05-02 Thread Richard Biener
On Mon, Apr 29, 2024 at 1:27 AM Peter0x44 wrote: > > 29 Apr 2024 12:16:26 am Peter Damianov : > > > This commit adds a new option to the driver that truncates one file > > after > > linking. > > > > Tested likeso: > > > > $ gcc hello.c -c > > $ du -h hello.o > > 4.0K hello.o > > $ gcc hello.o

Re: [PATCH] PR tree-opt/113673: Avoid load merging from potentially trapping additions.

2024-05-02 Thread Richard Biener
On Sun, Apr 28, 2024 at 11:11 AM Roger Sayle wrote: > > > This patch fixes PR tree-optimization/113673, a P2 ice-on-valid regression > caused by load merging of (ptr[0]<<8)+ptr[1] when -ftrapv has been > specified. When the operator is | or ^ this is safe, but for addition > of signed integer

Re: [PATCH] Update libbid according to the latest Intel Decimal Floating-Point Math Library.

2024-05-02 Thread Richard Biener
On Sun, Apr 28, 2024 at 7:53 AM liuhongt wrote: > > The Intel Decimal Floating-Point Math Library is available as open-source on > Netlib[1]. > > [1] https://www.netlib.org/misc/intel/. > > Bootstrapped and regtested on x86_64-pc-linux-gnu{-m32,}. > Ok for trunk? OK for trunk. Thanks, Richard.

Re: [PATCH] PR middle-end/111701: signbit(x*x) vs -fsignaling-nans

2024-05-02 Thread Richard Biener
On Fri, Apr 26, 2024 at 10:19 AM Roger Sayle wrote: > > > This patch addresses PR middle-end/111701 where optimization of signbit(x*x) > using tree_nonnegative_p incorrectly eliminates a floating point > multiplication when the operands may potentially be signaling NaNs. > > The above bug fix

[PATCH] Make graph dumps use graphviz format

2024-05-02 Thread Richard Biener
SLP build eventually uses graphds graphs, the following makes its dump use graphviz format so you can easily visualize it. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. * graphds.cc (dump_graph): Dump in graphviz format. --- gcc/graphds.cc | 17 ++--- 1 file

Re: [PATCH] c++/c-common: Fix convert_vector_to_array_for_subscript for qualified vector types [PR89224]

2024-05-02 Thread Richard Biener
On Tue, Apr 30, 2024 at 9:13 PM Jason Merrill wrote: > > On 4/30/24 12:04, Andrew Pinski wrote: > > On Tue, Apr 30, 2024 at 11:54 AM Jason Merrill wrote: > >> > >> On 2/20/24 19:06, Andrew Pinski wrote: > >>> After r7-987-gf17a223de829cb, the access for the elements of a vector > >>> type would

Re: [PATCH][Backport][GCC13] match.pd: Only merge truncation with conversion for -fno-signed-zeros

2024-04-30 Thread Richard Biener
On Mon, Apr 29, 2024 at 5:12 PM Joe Ramsay wrote: > > This optimisation does not honour signed zeros, so should not be > enabled except with -fno-signed-zeros. > > Cherry-pick of 7dd3b2b09cbeb6712ec680a0445cb0ad41070423. > > Applies cleanly on releases/gcc-13, regression-tested with no new >

Re: [C PATCH] PR c/109618: ICE-after-error from error_mark_node.

2024-04-30 Thread Richard Biener
ith a TREE_TYPE of error_mark_node. > > As Andrew Pinski writes in comment #3, this one is trickier than average. > > A more comprehensive fix might be to write deep_error_operand_p which does > more of a tree traversal checking error_operand_p within the unary and binary > operators of an ex

Re: [PATCH] vect: Adjust vect_transform_reduction assertion [PR114883]

2024-04-30 Thread Richard Biener
r = bar() > + u = 1 > + do i = 1,a > +do k = 1,1011 > + km1 = max0(k-1,1) > + h(k) = c(k) * e(k-1) * d(km1) > + f = g(k) + h(k) > + if(f.gt.1.e-6)then > +p = max(p,r) > + endif > +end do > +q = 0.9_8 * p > +t = integer(b/

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