public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "rguenth at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug tree-optimization/107608] [13 Regression] Failure on fold-overflow-1.c and pr95115.c
Date: Tue, 10 Jan 2023 08:56:58 +0000	[thread overview]
Message-ID: <bug-107608-4-TrImLaSjz0@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-107608-4@http.gcc.gnu.org/bugzilla/>

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107608

--- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Aldy Hernandez from comment #12)
> (In reply to Richard Biener from comment #6)
> > (In reply to Jakub Jelinek from comment #0)
> > > ... but then
> > > comes dom2 and happily replaces
> > >   _1 = 3.4028234663852885981170418348451692544e+38 * 2.0e+0;
> > >   return _1;
> > > with
> > >   _1 = 3.4028234663852885981170418348451692544e+38 * 2.0e+0;
> > >   return  Inf;
> > > (I think this is still correct)
> > 
> > Note this is also a pessimization code-generation wise since if we
> > preserve the multiplication the result is readily available in a
> > register but as optimized we have another constant pool entry and load.
> > 
> > So we might want to consider not propagating constants generated by
> > operations
> > we cannot eliminate.  If the only consumer is a compare-and-branch we
> > can of course still end up with a seemingly dead stmt, so this would be only
> > for the missed optimization.
> 
> [Sorry for the delayed response.  I've been on PTO.]
> 
> For the original testcase, the propagation happens in DOM:
> 
>   <bb 2> [local count: 1073741824]:
>   _1 = 3.4028234663852885981170418348451692544e+38 * 2.0e+0;
>   return _1;
> 
> range_of_expr gets called on the return's _1 and correctly returns Inf,
> which allows cprop_operand to do the replacement.
> 
> If I understand correctly you're suggesting not propagating constants that
> were generated by an operation we can't eliminate.  In this case, it'd be
> easy to chase the DEF back to the offending _1 definition (from
> cprop_operand and every other places where we do propagations based on
> range_of_expr's result), but ranger doesn't keep track of how it got to an
> answer, so we'd have to chase all operands used to generate _1??  That'd get
> hairy pretty fast, unless I'm misunderstanding something.

Yes, the fact that ranger doesn't operate as a usual propagator with a lattice
makes things very difficult here.  Note that my comment referred to code
optimality, not correctness.

> It really looks like the problem here is DCE (and the gimplifier as you
> point out in comment #2), which is removing a needed statement.  Can't this
> be fixed there?

Sure it can, but the expense is that we'd do constant folding all the way
down and not remove dead code which will result in _tons_ of unnecessary
constant pool entries and loads.

The issue is also that -ftrapping-math is default on so we'd have to
do this by default.  Ugh.

Note that the constant folding routines generally refrain from folding
when that loses exceptions, it's just ranger when producing singleton
ranges and propagating from them that doesn't adhere to that implicit rule.

  parent reply	other threads:[~2023-01-10  8:56 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-10  9:47 [Bug tree-optimization/107608] New: [13 Regression] Failure on fold-overflow-1.c jakub at gcc dot gnu.org
2022-11-10  9:49 ` [Bug tree-optimization/107608] " jakub at gcc dot gnu.org
2022-11-10 13:47 ` rguenth at gcc dot gnu.org
2022-11-10 18:13 ` pinskia at gcc dot gnu.org
2022-11-11  7:18 ` pinskia at gcc dot gnu.org
2022-11-13  6:30 ` [Bug tree-optimization/107608] [13 Regression] Failure on fold-overflow-1.c and pr95115.c xry111 at gcc dot gnu.org
2022-11-28 10:06 ` rguenth at gcc dot gnu.org
2022-12-05 13:22 ` aldyh at gcc dot gnu.org
2022-12-05 15:14 ` rguenth at gcc dot gnu.org
2022-12-05 16:30 ` aldyh at gcc dot gnu.org
2022-12-16 13:20 ` jakub at gcc dot gnu.org
2022-12-16 13:32 ` rguenth at gcc dot gnu.org
2023-01-09 15:18 ` aldyh at gcc dot gnu.org
2023-01-10  8:56 ` rguenth at gcc dot gnu.org [this message]
2023-01-10  8:58 ` rguenth at gcc dot gnu.org
2023-01-10 10:20 ` aldyh at gcc dot gnu.org
2023-01-10 10:25 ` aldyh at gcc dot gnu.org
2023-01-10 11:00 ` rguenth at gcc dot gnu.org
2023-01-10 11:09 ` jakub at gcc dot gnu.org
2023-01-10 12:08 ` rguenther at suse dot de
2023-01-10 14:14 ` jakub at gcc dot gnu.org
2023-01-10 14:25 ` amacleod at redhat dot com
2023-01-10 14:33 ` aldyh at gcc dot gnu.org
2023-01-10 14:39 ` jakub at gcc dot gnu.org
2023-01-10 14:40 ` aldyh at gcc dot gnu.org
2023-01-10 14:42 ` jakub at gcc dot gnu.org
2023-01-12 11:42 ` aldyh at gcc dot gnu.org
2023-01-12 12:03 ` jakub at gcc dot gnu.org
2023-01-12 12:26 ` xry111 at gcc dot gnu.org
2023-01-13 13:19 ` aldyh at gcc dot gnu.org
2023-01-13 13:25 ` aldyh at gcc dot gnu.org
2023-01-15 15:43 ` cvs-commit at gcc dot gnu.org
2023-01-16 21:38 ` romain.geissler at amadeus dot com
2023-01-16 21:46 ` jakub at gcc dot gnu.org
2023-01-16 21:55 ` romain.geissler at amadeus dot com
2023-01-16 21:58 ` fw at gcc dot gnu.org
2023-01-18 12:26 ` aldyh at gcc dot gnu.org
2023-01-18 12:54 ` jakub at gcc dot gnu.org
2023-01-18 12:56 ` aldyh at gcc dot gnu.org
2023-01-18 13:00 ` rguenth at gcc dot gnu.org
2023-01-18 13:03 ` rguenth at gcc dot gnu.org
2023-01-18 13:05 ` rguenth at gcc dot gnu.org
2023-01-19  1:15 ` xry111 at gcc dot gnu.org
2023-01-19  7:17 ` rguenther at suse dot de
2023-01-26 14:29 ` xry111 at gcc dot gnu.org
2023-01-27  7:35 ` rguenth at gcc dot gnu.org
2023-01-27  7:59 ` xry111 at gcc dot gnu.org
2023-01-27  9:53 ` rguenther at suse dot de
2023-01-27 10:02 ` xry111 at gcc dot gnu.org
2023-01-27 10:13 ` jakub at gcc dot gnu.org
2023-01-27 11:30 ` rguenther at suse dot de

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=bug-107608-4-TrImLaSjz0@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /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).