public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
@ 2015-08-20  4:42 hs.naveen2u at gmail dot com
  2015-08-20  8:54 ` [Bug middle-end/67285] " mpolacek at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: hs.naveen2u at gmail dot com @ 2015-08-20  4:42 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 67285
           Summary: ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: hs.naveen2u at gmail dot com
  Target Milestone: ---

The following pattern should work as expected:-

+ /* Simplify pow(x,c) / x -> pow(x,c-1). */
+ (simplify
+  (rdiv (POW:s @0 REAL_CST@1) @0)
+  (if (!TREE_OVERFLOW (@1))
+   (POW @0 (minus @1 { build_one_cst (type); }))))

However, it generates the following error:-
internal compiler error: tree check: expected ssa_name, have var_decl in
simplify_builtin_call, at tree-ssa-forwprop.c:1259

Its due to REAL_CST@1


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
  2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
@ 2015-08-20  8:54 ` mpolacek at gcc dot gnu.org
  2015-08-20  9:03 ` hs.naveen2u at gmail dot com
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2015-08-20  8:54 UTC (permalink / raw)
  To: gcc-bugs

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

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |WAITING
   Last reconfirmed|                            |2015-08-20
                 CC|                            |mpolacek at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Testcase?


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
  2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
  2015-08-20  8:54 ` [Bug middle-end/67285] " mpolacek at gcc dot gnu.org
@ 2015-08-20  9:03 ` hs.naveen2u at gmail dot com
  2015-08-20 11:47 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: hs.naveen2u at gmail dot com @ 2015-08-20  9:03 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from hs.naveen2u at gmail dot com ---
Created attachment 36226
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36226&action=edit
Testcase to reproduce the issue

aarch64-thunder-elf-gcc pr67285.c -O2 -funsafe-math-optimizations


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
  2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
  2015-08-20  8:54 ` [Bug middle-end/67285] " mpolacek at gcc dot gnu.org
  2015-08-20  9:03 ` hs.naveen2u at gmail dot com
@ 2015-08-20 11:47 ` rguenth at gcc dot gnu.org
  2015-08-20 12:26 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-08-20 11:47 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|WAITING                     |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org

--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> ---
Mine.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
  2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
                   ` (2 preceding siblings ...)
  2015-08-20 11:47 ` rguenth at gcc dot gnu.org
@ 2015-08-20 12:26 ` rguenth at gcc dot gnu.org
  2015-08-21  8:06 ` rguenth at gcc dot gnu.org
  2015-08-21  8:06 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-08-20 12:26 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
There are two issues here - one is side-effects (virtual definition) and one
is dependences (virtual uses).  The first one you hit with -fmath-errno,
the second you hit with -frounding-math.

On GENERIC there can be nothing "inbetween" components of the matched
expression
so things are usually fine.

On GIMPLE there can be random statements inbetween the statements composing
the matched expression.  Like

  _1 = pow (x, 2)
  fesetround();
  _2 = _1 / x;

we may not move pow () across fesetround () with -frounding-math, thus we
may not generate the expression replacement at the point of the _2 definition.

The actual ICE is about our failure to keep the virtual operand SSA form
up-to-date in fold_stmt.  As we generally do not want to do IL walks to
find a suitable VUSE/DEF we can use for that (apart from looking at the
current statement) we generally have to fail doing the expression replacement.

Implementation-wise the easiest is to "fail" when we are trying to generate
a builtin function call which is not CONST.  That doesn't avoid all
questionable
transforms but at least should avoid the ICEs due to non-up-to-date virtual
operand form.

There are cases we could relax (like replacing a call with another call),
but let's do that separately.

Note that this will require -fno-math-errno for any late transforms regarding
to math builtins.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
  2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
                   ` (4 preceding siblings ...)
  2015-08-21  8:06 ` rguenth at gcc dot gnu.org
@ 2015-08-21  8:06 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-08-21  8:06 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Fri Aug 21 08:06:20 2015
New Revision: 227053

URL: https://gcc.gnu.org/viewcvs?rev=227053&root=gcc&view=rev
Log:
2015-08-21  Richard Biener  <rguenther@suse.de>

        PR middle-end/67285
        * gimple-fold.c (replace_stmt_with_simplification): Assert
        seq is empty when replacing a call with itself but different
        arguments.
        * gimple-match-head.c (maybe_push_res_to_seq): When pushing
        a call require that it is const.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/gimple-fold.c
    trunk/gcc/gimple-match-head.c


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug middle-end/67285] ICE with (rdiv (POW:s @0 REAL_CST@1) @0)
  2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
                   ` (3 preceding siblings ...)
  2015-08-20 12:26 ` rguenth at gcc dot gnu.org
@ 2015-08-21  8:06 ` rguenth at gcc dot gnu.org
  2015-08-21  8:06 ` rguenth at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: rguenth at gcc dot gnu.org @ 2015-08-21  8:06 UTC (permalink / raw)
  To: gcc-bugs

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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Fixed.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-08-21  8:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-08-20  4:42 [Bug middle-end/67285] New: ICE with (rdiv (POW:s @0 REAL_CST@1) @0) hs.naveen2u at gmail dot com
2015-08-20  8:54 ` [Bug middle-end/67285] " mpolacek at gcc dot gnu.org
2015-08-20  9:03 ` hs.naveen2u at gmail dot com
2015-08-20 11:47 ` rguenth at gcc dot gnu.org
2015-08-20 12:26 ` rguenth at gcc dot gnu.org
2015-08-21  8:06 ` rguenth at gcc dot gnu.org
2015-08-21  8:06 ` rguenth at gcc dot gnu.org

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).