>
> I wonder why we bother producing summaries for things that do not
> bind locally? The summary->kills.length () has an upper bound?
Because of local aliases.
The size of the array is capped by param_max_modref_accesses which is
16.
>
> > + && summary->kills.length ())
> > + {
> > +
Hi,
this patch fixes bug I introduced while breaking up the bigger change.
We currently can not use pure/const to discover looping pures
since lack of global memory writes/stores does not imply we can CSE on
the function. THis is witnessed by testsuite doing volatile asm
or also can happen if
Hi,
this is updated patch. It moves the summary walk checking if we can
possibly suceed on dse to summary->finalize member function so it is done
once per summary and refactors dse_optimize_call to be called from
dse_optimize_stmt after early checks.
I did not try to handle the special case of
Hi,
this patch extends tree-ssa-dse to use modref kill summary to clear
live_bytes. This makes it possible to remove calls that are killed
in parts.
I noticed that DSE duplicates the logic of tree-ssa-alias that is mathing bases
of memory accesses. Here operands_equal_p (base1, base,
Hi,
This patch adds tracking of two new flags in ipa-modref: nondeterministic and
calls_interposable. First is set when function does something that is not
guaranteed to be the same if run again (volatile memory access, volatile asm or
external function call). Second is set if function calls
> >
> > I think you want get_addr_base_and_unit_offset here. All
> > variable indexed addresses are in separate stmts. That also means
> > you can eventually work with just byte sizes/offsets?
>
> Will do. The access range in modref summary is bit based (since we want
> to disabiguate
> This improves value-numbering of calls that read memory, calls
> to const functions with aggregate arguments and calls to
> pure functions where the latter include const functions we
> demoted to pure for the fear of interposing with a less
> optimized version. Note that for pure functions we
>
> Yes, note that we don't have callused unless IPA PTA is enabled,
> but it might be salveagable from IPA reference info? What we're
> missing is a stmt_clobbers_pt_solution_p, or rather a reasonably
> cheap way to construct an ao_ref covering all of a points-to
> solution. The not-so-cheap
Hi,
Profile-report was never properly updated after switch to new profile
representation. This patch fixes the way profile mismatches are
calculated: we used to collect separately count and freq mismatches,
while now we have only counts & probabilities. So we verify
- in count: that total
Hi,
this patch adds simple code to dump and compare frequencies of basic blocks
read from the profile feedback and frequencies guessed statically.
It dumps basic blocks in the order of decreasing frequencies from feedback
along with guessed frequencies and histograms.
It makes it to possible spot
> Hi,
>
> IPA_JF_ANCESTOR jump functions are constructed also when the formal
> parameter of the caller is first checked whether it is NULL and left
> as it is if it is NULL, to accommodate C++ casts to an ancestor class.
>
> The jump function type was invented for devirtualization and IPA-CP
>
Hi,
this patch fixes wrong code issue where modref did not propagate flags
for static chain in ipa_merge_modref_summary_after_inlininig. It is a
place I missed to update in original patch extending return slot
tracking to static chain. Unlike return slot we need to propagate flags
here (return
Hi,
it turns out that I made testcase for value range propagation (which was
disabled by accidental return statement) but the testcase was confused
by partial inlininig. The right number of inlines is 2, since the
function in question is first split and then both function and the split
part
Hi
update_escape_summary_1 has thinko where it compues proper min_flags but then
stores original value (ignoring the fact whether there was a dereference
in the escape point).
Bootstrapped/regtested and comitted.
PR ipa/103432
* ipa-modref.c (update_escape_summary_1): Fix handling
Hi,
while working on analyzing the previous miscomple I made dumps easier to
read by dumping cgraph_node name rather then cfun name in function being
analysed and I also fixed minor issue with ECF flags merging when
updating inline summary.
gcc/ChangeLog:
2021-11-26 Jan Hubicka
*
>
> gcc/ChangeLog:
>
> 2021-11-23 Martin Jambor
>
> PR ipa/103227
> * ipa-prop.h (ipa_get_param): New overload. Move bits of the existing
> one to the new one.
> * ipa-param-manipulation.h (ipa_param_adjustments): New member
> function
> The only use of get_alias_symbol is gated by a gcc_unreachable (),
> so the following patch gets rid of it.
>
> Bootstrapped and tested on x86_64-unknown-linux-gnu, OK?
OK,
thanks!
Honza
Hi,
this pach removes gimple_call_cahin checkin ref_maybe_used_by_call_p that
disables check for CONST functions. I suppose it was meant to allow consts
to read variables from the static chain but this is not what other places
do. The testcase:
int
main()
{
int a =0;
> We have quite a number of "default" returns that cannot be reached.
> One is particularly interesting since it says (see patch below):
>
> default:
>gcc_unreachable ();
> }
>/* We can get here with --disable-checking. */
>return false;
>
> which suggests that _maybe_
Hi,
on exchange2 benchamrk we miss some useful propagation because modref gives
up very early on analyzing accesses through pointers. For example in
int test (int *a)
{
int i;
for (i=0; a[i];i++);
return i+a[i];
}
We are not able to determine that a[i] accesses are relative to a.
This is
Hi,
this patch adds debug counters for pure/const discover and fixes
somewhat embarrasing pasto I made while breaking out ipa_make_function_*
helpers out of propagate_pure_const which led to wrong function being
marked as pure that in turn leads to wrong code.
My apologizes for that.
> Hi Honza,
>
> On Thu, 11 Nov 2021 17:39:18 +0100
> Jan Hubicka via Gcc-patches wrote:
>
> > diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
> > index 422b52fba4b..550bdeded16 100644
> > --- a/gcc/ipa-pure-const.c
> > +++ b/gcc/
Fix wrong code with pure functions
I introduced bug into find_func_aliases_for_call in handling pure functions.
Instead of reading global memory pure functions are believed to write global
memory. This results in misoptimization of the testcase at -O1.
The change to pta-callused.c updates the
> > >
> > > I think the patch causes the following on x86_64-linux-gnu:
> > > FAIL: gfortran.dg/inline_matmul_17.f90 -O scan-tree-dump-times
> > > optimized "matmul_r4" 2
> >
> > I get that failure even with d70ef65692f (from before the patches
> > I committed today).
>
> Sorry, you are
Hi,
This patch fixes a bug that caused some optimizations to be dropped with
-fdump-ipa-inline.
gcc/ChangeLog:
2021-11-17 Jan Hubicka
PR ipa/103246
* ipa-modref.c (ipa_merge_modref_summary_after_inlining): Fix clearing
of to_info_lto
diff --git a/gcc/ipa-modref.c
> modref_tree::merge(modref_tree*, vec va_heap, vl_ptr>*, modref_parm_map*, bool)
>
> is called with modref_parm_map chain_map;
>
> The variable has uninitialized m.parm_offset_known and it is accessed
> here:
>
> gcc/ipa-modref-tree.h:572 a.parm_offset_known &= m.parm_offset_known;
>
> Ready
Hi,
ipa-modref gets confused by EAF flags of memcpy becuase parameter 1 is
escaping but used only directly. In modref we do not track values saved to
memory and thus we clear all other flags on each store. This needs to also
happen when called function escapes parameter.
gcc/ChangeLog:
> >
> > In ipa-modref I precompute this to map so we do not need to walk all
> > params, but the loop is probably not bad since functions do not have
> > tens of thousdands parameters :)
>
> The most I have seen is about 70 and those were big outliers.
>
> I was thinking of precomputing it
> > + /* Unlike alias oracle we can not skip subtrees based on TBAA check.
> > + Count the size of the whole tree to verify that we will not need too
> > many
> > + tests. */
> > + FOR_EACH_VEC_SAFE_ELT (summary->stores->bases, i, base_node)
> > +FOR_EACH_VEC_SAFE_ELT
Hi,
>
> No, I think if it turns out useful then we want a way to have such ref
> represented by an ao_ref. Note that when we come from a
> ref tree we know handled-components only will increase offset,
> only the base MEM_REF can contain a pointer subtraction (but
> the result of that is the
Hi,
This patch enables optimization of stores that are killed by calls.
Modref summary is extended by array containing list of access ranges, relative
to function parameters, that are known to be killed by the function.
This array is collected during local analysis and optimized (so separate
Hi,
this patch adds EAF_NOT_RETURNED_DIRECTLY which works similarly as
EAF_NODIRECTESCAPE. Values pointed to by a given argument may be returned but
not the argument itself. This helps PTA quite noticeably because we mostly
care about tracking points to which given memory location can escape.
I
Hi,
this patch is a small refactoring of ipa-modref to make it bit more
C++y by moving logic analyzing ssa name flags to a class
and I also moved the anonymous namespace markers so we do not
export unnecessary stuff. There are no functional changes.
Bootstrapped/regtested x86_64-linux, will
> See above comments from Iain, even if that pre-initialization is removed it is
> still miscompiled. And, the testcase fails not because of the padding bits
> not
> being zero, but because the address of self stored into one of the fields
> isn't
> there or modref thinks it can't be changed or
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103040
>
> --- Comment #15 from Iain Buclaw ---
> Got it. The difference between D and C++ is a matter of early inlining.
>
> The C++ example Jakub posted fails in the same way that D does if you compile
> with: -O1 -fno-inline
Great, I will take a
> It broke GCC bootstrap:
>
> https://gcc.gnu.org/pipermail/gcc-regression/2021-November/075676.html
>
> In file included from ../../src-master/gcc/coretypes.h:474,
> from ../../src-master/gcc/expmed.c:26:
> In function ‘poly_uint16 mode_to_bytes(machine_mode)’,
> inlined
Hi,
this patch fixes (quite nasty) thinko in how I propagate EAF flags from callee
to caller. In this case some flags needs to be changed. In particular
- EAF_NOT_RETURNED in callee does not really mean EAF_NOT_RETURNED in caller
since we speak of different return values
- if callee
> Not seen on Haswell (but w/o PGO). Is this PGO specific? There's another
> large jump visible end of 2019.
It is between 2019-11-15 and 18 but the revisions does not exist at git
- perhaps they reffer to the old git mirror. Martin will know better.
In that range there are many of Richard's
>
> fixup_cfg already removes write-only stores so that seems fit for that
> purpose.
>
> Btw,
>
> static int x = 1;
>
> int main()
> {
> x = 1;
> }
>
> should ideally be handled as well as maybe the more common(?)
>
> static int x[128];
>
> int main()
> {
> memset (x, 0, 128*4);
> }
>
> On Tue, 26 Oct 2021, Xionghu Luo wrote:
>
> >
> >
> > On 2021/10/21 18:55, Richard Biener wrote:
> > > On Thu, 21 Oct 2021, Xionghu Luo wrote:
> > >
> > >>
> > >>
> > >> On 2021/10/15 13:51, Xionghu Luo via Gcc-patches wrote:
> > >>>
> > >>>
> > >>> On 2021/9/23 20:17, Richard Biener wrote:
> >
> That said, likely the profile update cannot be done uniformly
> for all blocks of a loop?
For the loop:
for (i = 0; i < n; i = inc (i))
{
if (ga)
ga = do_something ();
}
to:
for (i = 0; i < x; i = inc (i))
{
if (true)
ga = do_something ();
if
>
> gcc/ChangeLog:
>
> * tree-ssa-loop-split.c (split_loop): Fix incorrect probability.
> (do_split_loop_on_cond): Likewise.
> ---
> gcc/tree-ssa-loop-split.c | 25 -
> 1 file changed, 16 insertions(+), 9 deletions(-)
>
> diff --git
> As discussed yesterday, for loop of form
>
> for (...)
> if (cond)
> cond = something();
> else
> something2
>
> Split as
>
Say "if (cond)" has probability p, then individual statements scale as
follows:
loop1:
pfor (...)
p if (true)
1cond = something();
1
> On Wed, 27 Oct 2021, Jan Hubicka wrote:
>
> > >
> > > gcc/ChangeLog:
> > >
> > > * tree-ssa-loop-split.c (split_loop): Fix incorrect probability.
> > > (do_split_loop_on_cond): Likewise.
> > > ---
> > > gcc/tree-ssa-loop-split.c | 25 -
> > > 1 file changed, 16
> Hi,
>
> my recent patch to improve debug experience when there are removed
> parameters (by ipa-sra or ipa-split) was not careful to unshare the
> expressions that were then put into debug statements, which manifests
> itself as PR 103099. This patch adds unsharing them using
>
Hi,
the workaround seems to be no longer necessary - it seems that all the
issues was isolated to wrong beaviour of can_be_interposed wrt
partitioned functions.
Honza
* gimple.c (gimple_call_static_chain_flags): Revert the workaround
allowing interposition since issues with
Hi,
this patch moves uncprop after modref and pure/const pass and adds a comment
that
this pass should alwasy be last since it is only supposed to help PHI lowering.
The pass replaces constant by SSA names that are known to be constant at the
place which hardly helps other passes.
Modref now
Hi,
since at the time we compute local solution during late modref the
summaries from IPA are readily available (and I added logic to compare
them), it is easy to intersect both solutions to get around cases
where late optimization obstructate code enough so flags are no longer
analyzed correctly.
> > + }
> > + if (!(flags & EAF_UNUSED))
> > + lags |= past;
> ^
>
>
> Broke bootstrap.
Martin just fixed it. Sorry for that.
Diff complained about 8 spaces instead of tab and I did not rebuild
after replacing it bit too overzelaously.
Honza
>
> jeff
>
Hi,
I hoped that I am done with EAF flags related changes, but while looking into
the Fortran testcases I noticed that I have designed them in unnecesarily
restricted way. I followed the scheme of NOESCAPE and NODIRECTESCAPE which is
however the only property tht is naturally transitive.
This
> On Thu, Nov 04, 2021 at 05:13:41PM +0100, Jan Hubicka via Gcc-patches wrote:
> > this patch workarounds ICE in gimple_static_chain_flags. I added a
> > sanity check that the nested function is never considered interposable
> > because such situation makes no sense:
> Hello.
>
> This strips .gk from aux_base_name in coverage.c.
> Do you like the implementation of endswith, or do we have the functionality
> somewhere?
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to be installed?
> Thanks,
> Martin
>
> PR
Hi,
ubsan is complaining about left shift of negative value which is
undefined in c++11..c++17. Replaced by multiplication.
Bootstrapped/regtested x86_64-linux, comitted.
Honza
gcc/ChangeLog:
PR ipa/103082
* ipa-modref-tree.h (struct modref_access_node): Avoid left shift
Hi,
this patch makes insert_access to ignore accesses that are paradoxical
(i.e. their max_size is smaller than size) which can happen for example
when VRP proves that the access happens past the end of array bounds.
It also checks for zero sized accesses and verifies that max_size is
never
> On 11/4/21 15:12, Jan Hubicka via Gcc-patches wrote:
> > |Bootstrapped/regtested x86_64-linux, plan to commit after bit more
> > testing.|
>
> Can you please install the patch after the current MOD REF crashes are fixed?
> It will help us with the future bisection.
> On Thu, Nov 04, 2021 at 05:13:41PM +0100, Jan Hubicka via Gcc-patches wrote:
> > this patch workarounds ICE in gimple_static_chain_flags. I added a
> > sanity check that the nested function is never considered interposable
> > because such situation makes no sense:
> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102943
>
> Aldy Hernandez changed:
>
>What|Removed |Added
>
> Depends on||103058
>
> --- Comment
> Hello.
>
> The renaming patch fixes a -Wodr warning seen and reported in the PR.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> PR bootstrap/102828
>
> gcc/ChangeLog:
>
> * ipa-fnsummary.c (edge_predicate_pool): Rename predicate class to
>
Hi,
this patch implements the (long promised) intraprocedural dataflow for
propagating eaf flags, so we can handle parameters that participate
in loops in SSA graphs. Typical example are acessors that walk linked
lists, for example.
I implemented dataflow using the standard iteration over BBs in
Hi,
this patch workarounds ICE in gimple_static_chain_flags. I added a
sanity check that the nested function is never considered interposable
because such situation makes no sense: nested functions have no static
API and can not be safely merged across translation units.
It turns out however that
>
> This PR is still open, at least for slowdown in the threader with LTO. The
> issue is ranger wide, so it may also cause slowdowns on non-LTO builds for
> WRF, though I haven't checked.
I just wanted to record the fact somewhere since I was looking up the
revision range mostly to figure out
Hi,
can_be_discarded_p is testing DECL_EXTERNAL flag to see if the symbol
can be discarded by linker if unreachable. This is meant to catch
extern inline functions (which is bit side case and it is intded to
avoid gcc from producing new references to them if there were no
refernces before) but it
Hi,
I have commited the patch now. On the current tree the patch causes new
failure
./gcc/testsuite/gfortran/gfortran.sum:FAIL: gfortran.dg/vector_subscript_1.f90
-O1 execution test
./gcc/testsuite/gfortran/gfortran.sum:FAIL: gfortran.dg/vector_subscript_1.f90
-O2 execution test
Hi,
while proofreading the code for handling EAF flags of
!binds_to_current_def_p I noticed that the interprocedural dataflow
actually ignores the flag possibly introducing wrong code on nterposable
functions in non-trivial recursion cycles or at ltrans partition
boundary.
This patch unifies the
Note that it still seems to me that the crossed_loop_header handling is
overly conservative. We have:
@ -2771,6 +2771,7 @@ jt_path_registry::cancel_invalid_paths
(vec )
bool seen_latch = false;
int loops_crossed = 0;
bool crossed_latch = false;
+ bool crossed_loop_header = false;
Hi,
for nested functions we output call to builtin_dwarf_cfa which
initializes frame entry used only for debugging. This however
prevents us from detecting functions containing nested functions
as const/pure or analyze side effects in modref.
builtin_dwarf_cfa is not documented and I wonder if
> > diff --git a/gcc/cgraph.c b/gcc/cgraph.c
> > index de078653781..8299ee92946 100644
> > --- a/gcc/cgraph.c
> > +++ b/gcc/cgraph.c
> > @@ -2203,6 +2203,10 @@ cgraph_node::dump (FILE *f)
> > fprintf (f, " %soperator_delete",
> > DECL_IS_REPLACEABLE_OPERATOR (decl) ? "replaceable_"
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to be installed?
> Thanks,
> Martin
>
> gcc/ChangeLog:
>
> * cgraph.c (cgraph_node::dump): Dump static_chain_decl.
OK
Honza
> ---
> gcc/cgraph.c | 4
> 1 file changed, 4 insertions(+)
>
> diff --git
> On 11/5/21 18:30, Jan Hubicka wrote:
> > every gcc source looks like bit of overkill given that is can be open
> > coded in 3 statements?
>
> Why? It's a static inline function with few statements. I don't want to
> copy
> the same code at every location. I bet there must quite some open-coded
Hi,
this is patchs teaches ipa-modref about the static chain that is, like
retslot, a hiden argument. The patch is pretty much symemtric to what
was done for retslot handling and I verified it does the intended job
for Ada LTO bootstrap.
Bootstrapped/regtested x86_64-linux, OK?
Honza
> Hi,
>
> On 2021/9/28 20:09, Richard Biener wrote:
> > On Fri, Sep 24, 2021 at 8:29 AM Xionghu Luo wrote:
> >>
> >> Update the patch to v3, not sure whether you prefer the paste style
> >> and continue to link the previous thread as Segher dislikes this...
> >>
> >>
> >> [PATCH v3] Don't move
Hi,
this patch extends modref and tree-ssa-structalias to handle retslot flags.
Since retslot it essentially a hidden argument that is known to be write-only
we can do pretty much the same stuff as we do for regular parameters.
I plan to add static chain handling similar way.
We do not handle IPA
> > I plan to reduce the value during before christmas after bit more testing
> > since
> > it seems to be overall win even if we trade fatigue2 performance, but I
> > would
> > like to get more testing on larger C++ APPs first.
>
> Will this hurt -Os -finline-limit=0 ?
Why do you use
>
> Ah, indeed, good idea. FYI, clang++ seems to constant fold
> (x) != (y) already, so Jonathan could use it even for
> clang++ in the constexpr operator==. But it folds even
> extern int ,
> constexpr bool c = !=
> regardless of whether some other TU has
> int a;
> int b
> On Fri, Dec 10, 2021 at 2:30 AM Roger Sayle
> wrote:
> >
> >
> > This patch fixes PR ipa/103061 which is P1 regression that shows up as
> > an ICE in ipa-modref-tree.c's insert_kill when compiling the CSiBE
> > benchmark. I believe the underlying cause is that the new kill tracking
> >
>
> Yeah, the fast summary array lookup itself seems fine. What slowed
> this down for me was instead:
>
> /* A single function body may be represented by multiple symbols with
> different visibility. For example, if FUNC is an interposable alias,
> we don't want to return
Hi,
as dicussed in PR ipa/103454 there are several benchmarks that regresses
for -finline-functions-called once. Runtmes:
- tramp3d with -Ofast. 31%
- exchange2 with -Ofast 11-21%
- roms O2 9%-10%
- tonto 2.5-3.5% with LTO
Build times:
- specfp2006 41% (mostly wrf that builds 71% faster)
-
> >+ /* NULL memory accesses terminates BB. These accesses are known
> >+ to trip undefined behaviour. gimple-ssa-isolate-paths turns them
> >+ to volatile accesses and adds builtin_trap call which would
> >+ confuse us otherwise. */
> >+ if
Hi,
ipa-modref is using TBAA to disambiguate memory accesses inter-procedurally.
This sometimes breaks programs with TBAA violations including clang with LTO.
To workaround that one can use -fno-strict-aliasing or -fno-ipa-modref which
are both quite big hammers. So I added -fipa-strict-aliasing
Hi,
As discussed in PR103585, fatigue2 is now only benchmark from my usual testing
set (SPEC2k6, SPEC2k17, CPP benchmarks, polyhedron, Firefox, clang) which sees
important regression when inlining functions called once is limited. This
prevents us from solving runtime issues in roms benchmarks
Hi,
As discussed in the PR, we miss some optimization becuase
gimple-ssa-isolate-paths turns NULL memory accesses to volatile and adds
__builtin_trap after them. This is seen as a side-effect by IPA analysis
and additionally the (fully unreachable) builtin_trap is believed to load
all global
> On December 12, 2021 1:22:09 PM GMT+01:00, Jan Hubicka via Gcc-patches
> wrote:
> >Hi,
> >ipa-modref is using TBAA to disambiguate memory accesses inter-procedurally.
> >This sometimes breaks programs with TBAA violations including clang with LTO.
> >To workaroun
Hi,
In evaluate_conditions_for_known_args we use range_fold_unary_expr and
range_fold_binary_expr to produce value ranges of the expression.
However the expression also may contain ternary COND_EXPR on which we
ICE. I did not find interface to do similar folding easily on ternary
exprs and since
>
> I think this is common pattern in C++ code originating from cast with
> multiple inheritance. I would vote towards optimizing out the conditial
> move in this case and I think it is correct.
I crafted a testcse and filled in
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103674
Honza
>
>
>
>
> On 12/12/2021 3:49 AM, Jan Hubicka via Gcc-patches wrote:
> > Hi,
> > As discussed in the PR, we miss some optimization becuase
> > gimple-ssa-isolate-paths turns NULL memory accesses to volatile and adds
> > __builtin_trap after them. This is seen
> gcc/ChangeLog:
>
> * loop-invariant.c (find_invariants_bb): Check profile count
> before motion.
> (find_invariants_body): Add argument.
> ---
> gcc/loop-invariant.c | 10 +++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/loop-invariant.c
> r12-4526 cancelled jump thread path rotates loop. It exposes a issue in
> profile-estimate when predict_extra_loop_exits, outer loop's exit edge
> is marked as inner loop's extra loop exit and set with incorrect
> prediction, then a hot inner loop will become cold loop finally through
>
> > gcc/ChangeLog:
> >
> > * loop-invariant.c (find_invariants_bb): Check profile count
> > before motion.
> > (find_invariants_body): Add argument.
> > ---
> > gcc/loop-invariant.c | 10 +++---
> > 1 file changed, 7 insertions(+), 3 deletions(-)
> >
> > diff --git
>
> Well, I'm specifically speaking about:
> error: the control flow of function ‘BZ2_compressBlock’ does not match its
> profile data (counter ‘arcs’)
>
> this type of errors should not happen even in a multi-threaded programs.
There are some cases where I see even those on clang build - I am
> >>> + || (only_for_nonzero && !src_lats->bits_lattice.known_nonzero_p ()))
> >>> + {
> >>> + if (jfunc->bits)
> >>> + return dest_lattice->meet_with (jfunc->bits->value,
> >>> + jfunc->bits->mask, precision);
> >>> + else
> >>> + return
Hi,
this is a variant I comitted (with updated documentation as Richard
requested).
Honza
gcc/ChangeLog:
2021-12-13 Jan Hubicka
* common.opt: Add -fipa-strict-aliasing.
* doc/invoke.texi: Document -fipa-strict-aliasing.
* ipa-modref.c
>
> OK. Comments like?
>
> /* Don't move insn of cold BB out of loop to preheader to reduce calculations
>and register live range in hot loop with cold BB. */
Looks good.
>
>
> And maybe some dump log will help tracking in xxx.c.271r.loop2_invariant.
>
> --- a/gcc/loop-invariant.c
>
> >
> >
> > ./contrib/analyze_brprob.py ~/workspace/tests/spec2017/dump_file_all
> > HEURISTICS BRANCHES (REL) BR. HITRATE
> > HITRATE COVERAGE COVERAGE (REL) predict.def (REL) HOT
> > branches (>10%)
> > noreturn call
> On 11/27/21 16:56, Jan Hubicka via Gcc-patches wrote:
> > Hi,
> > Profile-report was never properly updated after switch to new profile
> > representation. This patch fixes the way profile mismatches are
> > calculated: we used to collect separately count and freq m
Hi,
this patch removes apparently forgotten debugging hack (which got in during
the speculative call patchset) which reduces hot bb threshold. This does not
make sense since it is set and reset randomly as the summaries are processed.
One problem is that we set the BB threshold to make certain
Hi,
thunks are not transparent for ipa-modref summary since it cares about offsets
from pointer parameters and also for virtual thunk about the read from memory
in there. We however use function_or_virtual_thunk_symbol to get the summary
that may lead to wrong code (and does in two testsuite
> Fixes ICE spotted by Honza where we have a better place where
> to check for no_profile_instrument_function attribute.
>
> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
>
> Ready to be installed?
> Thanks,
> Martin
>
> PR ipa/103636
>
> gcc/ChangeLog:
>
>
> The attached patch fixes an ICE in lto1 at lto-partition.c:215 that
> was reported by a customer. Unfortunately I have no test case for
> this; the customer's application is a big C++ shared library with lots
> of dependencies and proprietary code under NDA. I did try reducing it
> with cvise
> > Notice the ??? comment. The code does not set clobbers here because it
> > assumes that tree-ssa-alias will do the right thing.
> > So one may make builtins handling first, PTA next and only if both say
> > "may alias" continue. Other option is to extend the code here to add
> > propert
> --- Comment #6 from Richard Biener ---
> Honza, -Og was supposed to not do so much work, I intended to disable IPA
> inlining but there's no knob for that. I wonder where to best put such
> guard? I set flag_inline_small_functions to zero for -Og but we still
> run inline_small_functions ().
101 - 200 of 488 matches
Mail list logo