public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Aldy Hernandez <aldyh@redhat.com>
To: Jason Merrill <jason@redhat.com>
Cc: Jakub Jelinek <jakub@redhat.com>,
	GCC Mailing List <gcc@gcc.gnu.org>,
	 "MacLeod, Andrew" <amacleod@redhat.com>
Subject: Re: 1.76% performance loss in VRP due to inlining
Date: Fri, 3 May 2024 10:55:16 +0200	[thread overview]
Message-ID: <CAGm3qMVFFmuFHqBC0FLqasD_EckH4OW+kj-U0VYdue_C-Ea3+w@mail.gmail.com> (raw)
In-Reply-To: <3b573664-e3f2-4be1-ac80-47b7a258aa4c@redhat.com>

[-- Attachment #1: Type: text/plain, Size: 6348 bytes --]

After some very painful analysis, I was able to reduce the degradation
we are experiencing in VRP to a handful of lines in the new
implementation of prange.

What happens is that any series of small changes to a new prange class
causes changes in the inlining of wide_int_storage elsewhere.  With
the attached patch, one difference lies in irange::singleton_p(tree
*).  Note that this is in irange, which is completely unrelated to the
new (unused) code.

Using trunk as the stage1 compiler, we can see the assembly for
irange::singleton_p(tree *) in value-range.cc is different with and
without my patch.

The number of calls into wide_int within irange::singleton_p(tree *) changes:

awk '/^_ZNK6irange11singleton_pEPP9tree_node/,/endproc/' value-range.s
| grep call.*wide_int

With mainline sources:

        call    _ZN16wide_int_storageC2ERKS_
        call
_Z16wide_int_to_treeP9tree_nodeRK8poly_intILj1E16generic_wide_intI20wide_int_ref_storageILb0ELb1EEEE

With the attached patch:

        call    _ZN16wide_int_storageC2ERKS_
        call    _ZN16wide_int_storageC2ERKS_
        call
_Z16wide_int_to_treeP9tree_nodeRK8poly_intILj1E16generic_wide_intI20wide_int_ref_storageILb0ELb1EEEE
        call    _ZN16wide_int_storageC2ERKS_

The additional calls correspond to the wide_int_storage constructor:

        $ c++filt _ZN16wide_int_storageC2ERKS_
        wide_int_storage::wide_int_storage(wide_int_storage const&)

Using -fno-semantic-interposition makes no difference.

Here are the relevant bits in the difference from -Winline with and
without my patch:

>     inlined from ‘virtual bool irange::singleton_p(tree_node**) const’ at /home/aldyh/src/gcc/gcc/value-range.cc:1254:40:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,

Note that this is just one example.  There are also inlining
differences to irange::get_bitmask(), irange::union_bitmask(),
irange::operator=, among others.  Most of the inlining failures seem
to be related to wide_int_storage.  I am attaching the difference in
-Winline for the curious.

Tracking this down is tricky because the slightest change in the patch
causes different inlining in irange.  Even using a slightly different
stage1 compiler produces different changes.  For example, using GCC 13
as the stage1 compiler, VRP exhibits a slowdown of 2% with the full
prange class.  Although this is virtually identical to the slowdown
for using trunk as the stage1 compiler, the inlining failures are a
tad different.

I am tempted to commit the attached to mainline, which slows down VRP
by 0.3%, but is measurable enough to analyze, just so we have a base
commit-point from where to do the analysis.  My wife is about to give
birth any day now, so I'm afraid if I drop off for a few months, we'll
lose the analysis and the point in time from where to do it.

One final thing.  The full prange class patch, even when disabled,
slows VRP by 2%.  I tried to implement the class in small increments,
and every small change caused a further slowdown.  I don't know if
this 2% is final, or if further tweaks in this space will slow us down
more.

On a positive note, with the entirety of prange implemented (not just
the base class but range-ops implemented and prange enabled, there is
no overall change to VRP, and IPA-cp speeds up by 7%.  This is because
holding pointers in prange is a net win that overcomes the 2% handicap
the inliner is hitting us with.

I would love to hear thoughts, and if y'all agree that committing a
small skeleton now can help us track this down in the future.

Aldy

On Tue, Apr 30, 2024 at 11:37 PM Jason Merrill <jason@redhat.com> wrote:
>
> On 4/30/24 12:22, Jakub Jelinek wrote:
> > On Tue, Apr 30, 2024 at 03:09:51PM -0400, Jason Merrill via Gcc wrote:
> >> On Fri, Apr 26, 2024 at 5:44 AM Aldy Hernandez via Gcc <gcc@gcc.gnu.org> wrote:
> >>>
> >>> In implementing prange (pointer ranges), I have found a 1.74% slowdown
> >>> in VRP, even without any code path actually using the code.  I have
> >>> tracked this down to irange::get_bitmask() being compiled differently
> >>> with and without the bare bones patch.  With the patch,
> >>> irange::get_bitmask() has a lot of code inlined into it, particularly
> >>> get_bitmask_from_range() and consequently the wide_int_storage code.
> >> ...
> >>> +static irange_bitmask
> >>> +get_bitmask_from_range (tree type,
> >>> +                     const wide_int &min, const wide_int &max)
> >> ...
> >>> -irange_bitmask
> >>> -irange::get_bitmask_from_range () const
> >>
> >> My guess is that this is the relevant change: the old function has
> >> external linkage, and is therefore interposable, which inhibits
> >> inlining.  The new function has internal linkage, which allows
> >> inlining.
> >
> > Even when a function is exported, when not compiled with -fpic/-fPIC
> > if we know the function is defined in current TU, it can't be interposed,
>
> Ah, I was misremembering the effect of the change.  Rather, it's that if
> we see that a function with internal linkage has only a single caller,
> we try harder to inline it.
>
> Jason
>

[-- Attachment #2: minimal-prange.diff --]
[-- Type: text/x-patch, Size: 2488 bytes --]

diff --git a/gcc/value-range.h b/gcc/value-range.h
index f1c638f8cd0..178a690f551 100644
--- a/gcc/value-range.h
+++ b/gcc/value-range.h
@@ -378,6 +378,39 @@ private:
   wide_int m_ranges[N*2];
 };
 
+class prange : public vrange
+{
+public:
+  static bool supports_p (const_tree) { return false; }
+  virtual bool supports_type_p (const_tree) const final override { return false; }
+  virtual void accept (const vrange_visitor &) const final override {}
+  virtual void set_undefined () final override {}
+  virtual void set_varying (tree) final override {}
+  virtual void set_nonzero (tree) final override {}
+  virtual void set_zero (tree) final override;
+  virtual void set_nonnegative (tree) final override {}
+  virtual bool contains_p (tree) const final override { return false; }
+  virtual bool fits_p (const vrange &) const final override { return false; }
+  virtual bool singleton_p (tree * = NULL) const final override { return false; }
+  virtual bool zero_p () const final override { return false; }
+  virtual bool nonzero_p () const final override { return false; }
+  virtual void set (tree, tree, value_range_kind = VR_RANGE) final override {}
+  virtual tree type () const final override { return NULL; }
+  virtual bool union_ (const vrange &) final override { return false; }
+  virtual bool intersect (const vrange &) final override { return false; }
+  virtual tree lbound () const final override { return NULL; }
+  virtual tree ubound () const final override { return NULL; }
+
+  wide_int lower_bound () const;
+  wide_int upper_bound () const;
+  irange_bitmask get_bitmask () const final override;
+  void update_bitmask (const irange_bitmask &) final override {}
+private:
+  wide_int m_min;
+  wide_int m_max;
+  irange_bitmask m_bitmask;
+};
+
 // Unsupported temporaries may be created by ranger before it's known
 // they're unsupported, or by vr_values::get_value_range.
 
@@ -1187,6 +1220,32 @@ irange_val_max (const_tree type)
   return wi::max_value (TYPE_PRECISION (type), TYPE_SIGN (type));
 }
 
+inline void
+prange::set_zero (tree type)
+{
+  wide_int zero = wi::zero (TYPE_PRECISION (type));
+  m_min = m_max = zero;
+  m_bitmask = irange_bitmask (zero, zero);
+}
+
+inline wide_int
+prange::lower_bound () const
+{
+  return m_min;
+}
+
+inline wide_int
+prange::upper_bound () const
+{
+  return m_max;
+}
+
+inline irange_bitmask
+prange::get_bitmask () const
+{
+  return m_bitmask;
+}
+
 inline
 frange::frange ()
   : vrange (VR_FRANGE)

[-- Attachment #3: winline.diff --]
[-- Type: text/x-patch, Size: 37489 bytes --]

4c4
<     inlined from ‘virtual void irange::set_varying(tree)’ at /home/aldyh/src/gcc/gcc/value-range.h:1074:115:
---
>     inlined from ‘virtual void irange::set_varying(tree)’ at /home/aldyh/src/gcc/gcc/value-range.h:1107:115:
12,13c12,13
<     inlined from ‘virtual void irange::set_varying(tree)’ at /home/aldyh/src/gcc/gcc/value-range.h:1075:115,
<     inlined from ‘virtual void irange::set_varying(tree)’ at /home/aldyh/src/gcc/gcc/value-range.h:1063:1:
---
>     inlined from ‘virtual void irange::set_varying(tree)’ at /home/aldyh/src/gcc/gcc/value-range.h:1108:115,
>     inlined from ‘virtual void irange::set_varying(tree)’ at /home/aldyh/src/gcc/gcc/value-range.h:1096:1:
21c21,36
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
>     inlined from ‘virtual bool irange::singleton_p(tree_node**) const’ at /home/aldyh/src/gcc/gcc/value-range.cc:1254:40:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
30,31c45,46
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘virtual bool irange::zero_p() const’ at /home/aldyh/src/gcc/gcc/value-range.h:953:19:
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘virtual bool irange::zero_p() const’ at /home/aldyh/src/gcc/gcc/value-range.h:986:19:
215,217c230,235
< /home/aldyh/src/gcc/gcc/wide-int.h:1213:1: warning: inlining failed in call to ‘wide_int_storage& wide_int_storage::operator=(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
<  1213 | wide_int_storage::operator = (const wide_int_storage &x)
<       | ^~~~~~~~~~~~~~~~
---
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
>     inlined from ‘bool irange::singleton_p(wide_int&) const’ at /home/aldyh/src/gcc/gcc/value-range.cc:1268:23:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
222,223c240,241
< /home/aldyh/src/gcc/gcc/value-range.h:1063:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
<  1063 | irange::set_varying (tree type)
---
> /home/aldyh/src/gcc/gcc/value-range.h:1096:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
>  1096 | irange::set_varying (tree type)
225,226c243,244
< /home/aldyh/src/gcc/gcc/value-range.h:1029:15: note: called from here
<  1029 |   set_varying (type);
---
> /home/aldyh/src/gcc/gcc/value-range.h:1062:15: note: called from here
>  1062 |   set_varying (type);
229,230c247,248
< /home/aldyh/src/gcc/gcc/value-range.h:1063:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
<  1063 | irange::set_varying (tree type)
---
> /home/aldyh/src/gcc/gcc/value-range.h:1096:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
>  1096 | irange::set_varying (tree type)
232,233c250,251
< /home/aldyh/src/gcc/gcc/value-range.h:1029:15: note: called from here
<  1029 |   set_varying (type);
---
> /home/aldyh/src/gcc/gcc/value-range.h:1062:15: note: called from here
>  1062 |   set_varying (type);
236,237c254,255
< /home/aldyh/src/gcc/gcc/value-range.h:1063:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
<  1063 | irange::set_varying (tree type)
---
> /home/aldyh/src/gcc/gcc/value-range.h:1096:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
>  1096 | irange::set_varying (tree type)
239,240c257,258
< /home/aldyh/src/gcc/gcc/value-range.h:1029:15: note: called from here
<  1029 |   set_varying (type);
---
> /home/aldyh/src/gcc/gcc/value-range.h:1062:15: note: called from here
>  1062 |   set_varying (type);
243,244c261,262
< /home/aldyh/src/gcc/gcc/value-range.h:1063:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
<  1063 | irange::set_varying (tree type)
---
> /home/aldyh/src/gcc/gcc/value-range.h:1096:1: warning: inlining failed in call to ‘virtual void irange::set_varying(tree)’: --param max-inline-insns-single limit reached [-Winline]
>  1096 | irange::set_varying (tree type)
246,247c264,265
< /home/aldyh/src/gcc/gcc/value-range.h:1029:15: note: called from here
<  1029 |   set_varying (type);
---
> /home/aldyh/src/gcc/gcc/value-range.h:1062:15: note: called from here
>  1062 |   set_varying (type);
278a297,311
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘irange_bitmask get_bitmask_from_range(tree, const wide_int&, const wide_int&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:46:24,
>     inlined from ‘virtual irange_bitmask irange::get_bitmask() const’ at /home/aldyh/src/gcc/gcc/value-range.cc:2034:70:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
351,352c384,385
<     inlined from ‘bool irange::varying_compatible_p() const’ at /home/aldyh/src/gcc/gcc/value-range.h:931:11,
<     inlined from ‘void irange::normalize_kind()’ at /home/aldyh/src/gcc/gcc/value-range.h:1155:33:
---
>     inlined from ‘bool irange::varying_compatible_p() const’ at /home/aldyh/src/gcc/gcc/value-range.h:963:15,
>     inlined from ‘void irange::normalize_kind()’ at /home/aldyh/src/gcc/gcc/value-range.h:1188:33:
358a392,418
> In function ‘typename wi::binary_traits<T1, T2>::predicate_result operator==(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘bool irange::varying_compatible_p() const’ at /home/aldyh/src/gcc/gcc/value-range.h:964:11,
>     inlined from ‘void irange::normalize_kind()’ at /home/aldyh/src/gcc/gcc/value-range.h:1188:33:
> /home/aldyh/src/gcc/gcc/wide-int.h:2246:1: warning: inlining failed in call to ‘bool wi::eq_p(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’: --param inline-unit-growth limit reached [-Winline]
>  2246 | wi::eq_p (const T1 &x, const T2 &y)
>       | ^~
> /home/aldyh/src/gcc/gcc/wide-int.h:3852:147: note: called from here
>  3852 | BINARY_PREDICATE (operator ==, eq_p)
>       |                                                                                                                                                   ^     
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘irange_bitmask::irange_bitmask(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:131:7,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2106:25:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘irange_bitmask::irange_bitmask(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:131:7,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2106:25:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
367a428,448
> In function ‘typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘void irange_bitmask::union_(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:239:58,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2107:13:
> /home/aldyh/src/gcc/gcc/wide-int.h:2798:1: warning: inlining failed in call to ‘typename wi::binary_traits<T1, T2>::result_type wi::bit_or(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’: --param inline-unit-growth limit reached [-Winline]
>  2798 | wi::bit_or (const T1 &x, const T2 &y)
>       | ^~
> /home/aldyh/src/gcc/gcc/wide-int.h:3855:152: note: called from here
>  3855 | BINARY_OPERATOR (operator |, bit_or)
>       |                                                                                                                                                        ^
> In function ‘typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘void irange_bitmask::union_(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:239:26,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2107:13:
> /home/aldyh/src/gcc/gcc/wide-int.h:2798:1: warning: inlining failed in call to ‘typename wi::binary_traits<T1, T2>::result_type wi::bit_or(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’: --param inline-unit-growth limit reached [-Winline]
>  2798 | wi::bit_or (const T1 &x, const T2 &y)
>       | ^~
> /home/aldyh/src/gcc/gcc/wide-int.h:3855:152: note: called from here
>  3855 | BINARY_OPERATOR (operator |, bit_or)
>       |                                                                                                                                                        ^
> In member function ‘generic_wide_int<wide_int_storage>& generic_wide_int<wide_int_storage>::operator=(generic_wide_int<wide_int_storage>&&)’,
>     inlined from ‘void irange_bitmask::union_(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:239:58,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2107:13:
373a455,472
> In function ‘typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘void irange_bitmask::union_(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:239:58,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2107:13:
> /home/aldyh/src/gcc/gcc/wide-int.h:2798:1: warning: inlining failed in call to ‘typename wi::binary_traits<T1, T2>::result_type wi::bit_or(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’: --param inline-unit-growth limit reached [-Winline]
>  2798 | wi::bit_or (const T1 &x, const T2 &y)
>       | ^~
> /home/aldyh/src/gcc/gcc/wide-int.h:3855:152: note: called from here
>  3855 | BINARY_OPERATOR (operator |, bit_or)
>       |                                                                                                                                                        ^
> In function ‘typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘void irange_bitmask::union_(const irange_bitmask&)’ at /home/aldyh/src/gcc/gcc/value-range.h:239:26,
>     inlined from ‘bool irange::union_bitmask(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:2107:13:
> /home/aldyh/src/gcc/gcc/wide-int.h:2798:1: warning: inlining failed in call to ‘typename wi::binary_traits<T1, T2>::result_type wi::bit_or(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’: --param inline-unit-growth limit reached [-Winline]
>  2798 | wi::bit_or (const T1 &x, const T2 &y)
>       | ^~
> /home/aldyh/src/gcc/gcc/wide-int.h:3855:152: note: called from here
>  3855 | BINARY_OPERATOR (operator |, bit_or)
>       |                                                                                                                                                        ^
408,409c507,508
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
413a513,520
> In member function ‘generic_wide_int<wide_int_storage>& generic_wide_int<wide_int_storage>::operator=(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘irange& irange::operator=(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:1022:56:
> /home/aldyh/src/gcc/gcc/wide-int.h:1213:1: warning: inlining failed in call to ‘wide_int_storage& wide_int_storage::operator=(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1213 | wide_int_storage::operator = (const wide_int_storage &x)
>       | ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
415,416c522,523
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
420a528,536
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
>     inlined from ‘void irange::invert()’ at /home/aldyh/src/gcc/gcc/value-range.cc:1863:42:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
429,430c545,546
<     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:655:22,
<     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:644:1,
---
>     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:688:22,
>     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:677:1,
437a554,562
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
>     inlined from ‘void irange::invert()’ at /home/aldyh/src/gcc/gcc/value-range.cc:1863:42:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:775:7: note: called from here
>   775 | class GTY(()) generic_wide_int : public storage
>       |       ^~~~~~~~~~~~~~~~
447c572
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
545a671,677
> /home/aldyh/src/gcc/gcc/value-range.h: In member function ‘void irange::invert()’:
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
>       | ^~~~~~~~~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/value-range.cc:1910:1: note: called from here
>  1910 | }
>       | ^
576,577c708,709
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
704c836
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
713,714c845,846
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1110:32,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1143:32,
723c855
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
740,741c872,873
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1110:32,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1143:32,
750c882
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
765c897
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
774c906
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
783,784c915,916
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1110:32,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1143:32,
862a995,1006
> In constructor ‘generic_wide_int<T>::generic_wide_int(const T&) [with T = wi::hwi_with_prec; storage = wide_int_storage]’,
>     inlined from ‘bool contains_zero_p(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.h:1205:67,
>     inlined from ‘bool irange::set_range_from_bitmask()’ at /home/aldyh/src/gcc/gcc/value-range.cc:1968:39:
> /home/aldyh/src/gcc/gcc/wide-int.h:1184:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const T&) [with T = wi::hwi_with_prec]’: --param inline-unit-growth limit reached [-Winline]
>  1184 | inline wide_int_storage::wide_int_storage (const T &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:847:15: note: called from here
>   847 |   : storage (x)
>       |               ^
> In function ‘typename wi::binary_traits<T1, T2>::operator_result operator|(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘wide_int irange_bitmask::get_nonzero_bits() const’ at /home/aldyh/src/gcc/gcc/value-range.h:200:20,
>     inlined from ‘bool irange::set_range_from_bitmask()’ at /home/aldyh/src/gcc/gcc/value-range.cc:1969:49:
885,886c1029,1036
< /home/aldyh/src/gcc/gcc/value-range.h:1142:1: warning: inlining failed in call to ‘virtual void irange::set_zero(tree)’: --param inline-unit-growth limit reached [-Winline]
<  1142 | irange::set_zero (tree type)
---
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 2; bool RESIZABLE = false]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
>       | ^~~~~~~~~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/value-range.cc:1977:9: note: called from here
>  1977 |         }
>       |         ^
> /home/aldyh/src/gcc/gcc/value-range.h:1175:1: warning: inlining failed in call to ‘virtual void irange::set_zero(tree)’: --param inline-unit-growth limit reached [-Winline]
>  1175 | irange::set_zero (tree type)
892,893c1042,1043
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
906a1057,1066
> In function ‘bool wi::les_p(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’,
>     inlined from ‘bool wi::le_p(const T1&, const T2&, signop) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’ at /home/aldyh/src/gcc/gcc/wide-int.h:2381:18,
>     inlined from ‘bool wi::le_p(const T1&, const T2&, signop) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’ at /home/aldyh/src/gcc/gcc/wide-int.h:2378:1,
>     inlined from ‘bool irange::irange_contains_p(const irange&) const’ at /home/aldyh/src/gcc/gcc/value-range.cc:1570:16:
> /home/aldyh/src/gcc/gcc/wide-int.h:2293:1: warning: inlining failed in call to ‘bool wi::lts_p(const T1&, const T2&) [with T1 = generic_wide_int<wide_int_storage>; T2 = generic_wide_int<wide_int_storage>]’: --param inline-unit-growth limit reached [-Winline]
>  2293 | wi::lts_p (const T1 &x, const T2 &y)
>       | ^~
> /home/aldyh/src/gcc/gcc/wide-int.h:2364:17: note: called from here
>  2364 |   return !lts_p (y, x);
>       |           ~~~~~~^~~~~~
957c1117
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
985,986c1145,1146
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1110:32,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1143:32,
1079,1080c1239,1240
< /home/aldyh/src/gcc/gcc/value-range.h:662:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
<   662 | int_range<N, RESIZABLE>::~int_range ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
1085,1086c1245,1255
< /home/aldyh/src/gcc/gcc/value-range.h:662:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
<   662 | int_range<N, RESIZABLE>::~int_range ()
---
> In constructor ‘generic_wide_int<T>::generic_wide_int(const T&) [with T = wi::hwi_with_prec; storage = wide_int_storage]’,
>     inlined from ‘void irange_bitmask::adjust_range(irange&) const’ at /home/aldyh/src/gcc/gcc/value-range.cc:1929:54:
> /home/aldyh/src/gcc/gcc/wide-int.h:1184:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const T&) [with T = wi::hwi_with_prec]’: --param inline-unit-growth limit reached [-Winline]
>  1184 | inline wide_int_storage::wide_int_storage (const T &x)
>       |        ^~~~~~~~~~~~~~~~
> /home/aldyh/src/gcc/gcc/wide-int.h:847:15: note: called from here
>   847 |   : storage (x)
>       |               ^
> /home/aldyh/src/gcc/gcc/value-range.h: In member function ‘void irange_bitmask::adjust_range(irange&) const’:
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
1091,1092c1260,1261
< /home/aldyh/src/gcc/gcc/value-range.h:662:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
<   662 | int_range<N, RESIZABLE>::~int_range ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
1097,1098c1266,1267
< /home/aldyh/src/gcc/gcc/value-range.h:662:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
<   662 | int_range<N, RESIZABLE>::~int_range ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
1135,1136c1304,1305
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
1142c1311
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
1151,1152c1320,1321
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1110:32,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1143:32,
1161,1162c1330,1331
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
1168,1169c1337,1338
<     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:655:22,
<     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:644:1,
---
>     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:688:22,
>     inlined from ‘void irange::maybe_resize(int)’ at /home/aldyh/src/gcc/gcc/value-range.h:677:1,
1308,1309c1477,1478
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
1314,1315c1483,1484
< /home/aldyh/src/gcc/gcc/value-range.h:662:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
<   662 | int_range<N, RESIZABLE>::~int_range ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:695:1: warning: inlining failed in call to ‘int_range<N, RESIZABLE>::~int_range() noexcept [with unsigned int N = 3; bool RESIZABLE = true]’: --param inline-unit-growth limit reached [-Winline]
>   695 | int_range<N, RESIZABLE>::~int_range ()
1414,1415c1583,1584
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
1428,1430c1597,1601
< /home/aldyh/src/gcc/gcc/wide-int.h:1213:1: warning: inlining failed in call to ‘wide_int_storage& wide_int_storage::operator=(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
<  1213 | wide_int_storage::operator = (const wide_int_storage &x)
<       | ^~~~~~~~~~~~~~~~
---
> In copy constructor ‘generic_wide_int<wide_int_storage>::generic_wide_int(const generic_wide_int<wide_int_storage>&)’,
>     inlined from ‘bool irange::irange_single_pair_union(const irange&)’ at /home/aldyh/src/gcc/gcc/value-range.cc:1343:25:
> /home/aldyh/src/gcc/gcc/wide-int.h:1196:8: warning: inlining failed in call to ‘wide_int_storage::wide_int_storage(const wide_int_storage&)’: --param inline-unit-growth limit reached [-Winline]
>  1196 | inline wide_int_storage::wide_int_storage (const wide_int_storage &x)
>       |        ^~~~~~~~~~~~~~~~
1517,1518c1688,1689
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()
1524c1695
<     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1089:25,
---
>     inlined from ‘wide_int irange::lower_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1122:25,
1533,1534c1704,1705
<     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1100:29,
<     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1110:32,
---
>     inlined from ‘wide_int irange::upper_bound(unsigned int) const’ at /home/aldyh/src/gcc/gcc/value-range.h:1133:29,
>     inlined from ‘wide_int irange::upper_bound() const’ at /home/aldyh/src/gcc/gcc/value-range.h:1143:32,
1772,1773c1943,1944
< /home/aldyh/src/gcc/gcc/value-range.h:1151:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
<  1151 | irange::normalize_kind ()
---
> /home/aldyh/src/gcc/gcc/value-range.h:1184:1: warning: inlining failed in call to ‘void irange::normalize_kind()’: --param max-inline-insns-single limit reached [-Winline]
>  1184 | irange::normalize_kind ()

      reply	other threads:[~2024-05-03  8:55 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-26  9:42 Aldy Hernandez
2024-04-30  7:57 ` Richard Biener
2024-04-30  8:21   ` Aldy Hernandez
2024-04-30  8:53 ` Martin Jambor
2024-04-30 19:09 ` Jason Merrill
2024-04-30 19:15   ` Richard Biener
2024-04-30 21:48     ` Building libgccjit with -fno-semantic-interposition? ( was Re: 1.76% performance loss in VRP due to inlining) David Malcolm
2024-05-02  7:40       ` Andrea Corallo
2024-04-30 19:22   ` 1.76% performance loss in VRP due to inlining Jakub Jelinek
2024-04-30 21:37     ` Jason Merrill
2024-05-03  8:55       ` Aldy Hernandez [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAGm3qMVFFmuFHqBC0FLqasD_EckH4OW+kj-U0VYdue_C-Ea3+w@mail.gmail.com \
    --to=aldyh@redhat.com \
    --cc=amacleod@redhat.com \
    --cc=gcc@gcc.gnu.org \
    --cc=jakub@redhat.com \
    --cc=jason@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).