public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault
@ 2014-12-12 11:01 rguenth at gcc dot gnu.org
  2014-12-12 11:02 ` [Bug tree-optimization/64284] " rguenth at gcc dot gnu.org
                   ` (6 more replies)
  0 siblings, 7 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-12 11:01 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 64284
           Summary: [5 Regression] ICE: Segmentation fault
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: rguenth at gcc dot gnu.org

Created attachment 34265
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34265&action=edit
preprocessed source

> ./cc1 -quiet scp.i -O2
scp.c: In function 'shell_quotearg':
scp.c:126:1: internal compiler error: Segmentation fault
0xd473a0 crash_signal
        /space/rguenther/src/svn/trunk2/gcc/toplev.c:358
0xf8bde8 thread_through_loop_header
        /space/rguenther/src/svn/trunk2/gcc/tree-ssa-threadupdate.c:1869
0xf8d8e8 thread_through_all_blocks(bool)
        /space/rguenther/src/svn/trunk2/gcc/tree-ssa-threadupdate.c:2570
0x1027bd9 finalize_jump_threads
        /space/rguenther/src/svn/trunk2/gcc/tree-vrp.c:10151
0x1027fd6 execute_vrp
        /space/rguenther/src/svn/trunk2/gcc/tree-vrp.c:10305
0x102825c execute
        /space/rguenther/src/svn/trunk2/gcc/tree-vrp.c:10368
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
@ 2014-12-12 11:02 ` rguenth at gcc dot gnu.org
  2014-12-12 11:19 ` rguenth at gcc dot gnu.org
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-12 11:02 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |5.0


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
  2014-12-12 11:02 ` [Bug tree-optimization/64284] " rguenth at gcc dot gnu.org
@ 2014-12-12 11:19 ` rguenth at gcc dot gnu.org
  2014-12-12 11:20 ` trippels at gcc dot gnu.org
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-12 11:19 UTC (permalink / raw)
  To: gcc-bugs

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

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

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2014-12-12
                 CC|                            |spop at gcc dot gnu.org
           Assignee|unassigned at gcc dot gnu.org      |rguenth at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
  Registering jump thread: (4, 5) incoming edge;  (5, 55) joiner;  (55, 63)
normal;
  Registering FSM jump thread: (94, 5) incoming edge;  (6, 20) nocopy;
  Registering jump thread: (61, 6) incoming edge;  (6, 20) normal;
  Registering jump thread: (77, 6) incoming edge;  (6, 20) normal;
  Registering jump thread: (69, 6) incoming edge;  (6, 20) normal;
  Registering FSM jump thread: (94, 5) incoming edge;  (55, 56) nocopy;
...
  Threaded jump 69 --> 6 to 109
  Threaded jump 77 --> 6 to 109
  Threaded jump 61 --> 6 to 109

and then we end up with an invalid loop.  FSM threads the latch edge but
doesn't update the loop structure accordingly so later asking for the
loop latch edge fails (because the loop isn't anymore it seems - or
header and latch are no longer valid).

Let me have a look.


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
  2014-12-12 11:02 ` [Bug tree-optimization/64284] " rguenth at gcc dot gnu.org
  2014-12-12 11:19 ` rguenth at gcc dot gnu.org
@ 2014-12-12 11:20 ` trippels at gcc dot gnu.org
  2014-12-12 11:45 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-12-12 11:20 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> ---
trippels@gcc20 ~ % cat scp.i
int *a;
int b;
int
fn1() {
  enum { QSTRING } c = 0;
  while (1) {
    switch (*a) {
    case '\'':
      c = 0;
    default:
      switch (c)
      case 0:
      if (b)
        return 0;
      c = 1;
    }
    a++;
  }
}


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2014-12-12 11:20 ` trippels at gcc dot gnu.org
@ 2014-12-12 11:45 ` rguenth at gcc dot gnu.org
  2014-12-15  8:20 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-12 11:45 UTC (permalink / raw)
  To: gcc-bugs

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

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

Index: tree-ssa-threadupdate.c
===================================================================
--- tree-ssa-threadupdate.c     (revision 218621)
+++ tree-ssa-threadupdate.c     (working copy)
@@ -2364,7 +2364,7 @@ duplicate_seme_region (edge entry, edge
                       basic_block *region_copy)
 {
   unsigned i;
-  bool free_region_copy = false, copying_header = false;
+  bool free_region_copy = false;
   struct loop *loop = entry->dest->loop_father;
   edge exit_copy;
   edge redirected;
@@ -2388,10 +2388,7 @@ duplicate_seme_region (edge entry, edge

   initialize_original_copy_tables ();

-  if (copying_header)
-    set_loop_copy (loop, loop_outer (loop));
-  else
-    set_loop_copy (loop, loop);
+  set_loop_copy (loop, loop);

   if (!region_copy)
     {
@@ -2453,6 +2450,8 @@ duplicate_seme_region (edge entry, edge
   }

   /* Redirect the entry and add the phi node arguments.  */
+  if (entry->dest == loop->header)
+    mark_loop_for_removal (loop);
   redirected = redirect_edge_and_branch (entry, get_bb_copy (entry->dest));
   gcc_assert (redirected != NULL);
   flush_pending_stmts (entry);

"works" but results in the less than optimal

fix_loop_structure: fixing up loops for function
fix_loop_structure: removing loop 1
flow_loops_find: discovered new loop 2 with header 5

in the testcase the loop header will be entry->src it seems - not sure
how reliably that is in the full generality of duplicate_seme_region.
We know that all blocks are contained in the same loop, so it must be
possible to compute where the header goes.

Ideally we'd simply set loop->header and loop->latch to the correct values,
marking loops for fixup (to recompute BB ownership - or do even that
ourselves).
The testcase has two latches later, thus loop->latch would be NULL, but
both VRP and DOM init loops without LOOPS_MAY_HAVE_MULTIPLE_LATCHES so we'd
have to disambiguate the loops.

That said - the above patch works.


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2014-12-15  8:20 ` rguenth at gcc dot gnu.org
@ 2014-12-15  8:20 ` rguenth at gcc dot gnu.org
  2015-03-05 14:28 ` yroux at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-15  8:20 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
Author: rguenth
Date: Mon Dec 15 08:19:55 2014
New Revision: 218733

URL: https://gcc.gnu.org/viewcvs?rev=218733&root=gcc&view=rev
Log:
2014-12-15  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/64284
    * tree-ssa-threadupdate.c (duplicate_seme_region): Mark
    the loop for removal if we copied the loop header.

    * gcc.dg/torture/pr64284.c: New testcase.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/pr64284.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-ssa-threadupdate.c


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2014-12-12 11:45 ` rguenth at gcc dot gnu.org
@ 2014-12-15  8:20 ` rguenth at gcc dot gnu.org
  2014-12-15  8:20 ` rguenth at gcc dot gnu.org
  2015-03-05 14:28 ` yroux at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-12-15  8:20 UTC (permalink / raw)
  To: gcc-bugs

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

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

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

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


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

* [Bug tree-optimization/64284] [5 Regression] ICE: Segmentation fault
  2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2014-12-15  8:20 ` rguenth at gcc dot gnu.org
@ 2015-03-05 14:28 ` yroux at gcc dot gnu.org
  6 siblings, 0 replies; 8+ messages in thread
From: yroux at gcc dot gnu.org @ 2015-03-05 14:28 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #6 from Yvan Roux <yroux at gcc dot gnu.org> ---
Author: yroux
Date: Thu Mar  5 14:28:05 2015
New Revision: 221216

URL: https://gcc.gnu.org/viewcvs?rev=221216&root=gcc&view=rev
Log:
gcc/
2015-03-05  Yvan Roux  <yvan.roux@linaro.org>

    Backport from trunk r212011, r214942, r214957, r215012, r215016, r218115,
    r218733, r218746, r220491.
    2015-02-06  Sebastian Pop  <s.pop@samsung.com>
            Brian Rzycki  <b.rzycki@samsung.com>

    PR tree-optimization/64878
    * tree-ssa-threadedge.c: Include tree-ssa-loop.h.
    (fsm_find_control_statement_thread_paths): Add parameter seen_loop_phi.
    Stop recursion at loop phi nodes after having visited a loop phi node.

    2014-12-15  Richard Biener  <rguenther@suse.de>

    PR middle-end/64246
    * cfgloop.c (mark_loop_for_removal): Make safe against multiple
    invocations on the same loop.

    2014-12-15  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/64284
    * tree-ssa-threadupdate.c (duplicate_seme_region): Mark
    the loop for removal if we copied the loop header.

    2014-11-27  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/64083
    * tree-ssa-threadupdate.c (thread_through_all_blocks): Do not
    forcibly mark loop for removal the wrong way.

    2014-09-08  Richard Biener  <rguenther@suse.de>

    PR ipa/63196
    * tree-inline.c (copy_loops): The source loop header should
    always be non-NULL.
    (tree_function_versioning): If loops need fixup after removing
    unreachable blocks fix them.
    * omp-low.c (simd_clone_adjust): Do not add incr block to
    loop under construction.

    2014-09-08  Richard Biener  <rguenther@suse.de>

    PR bootstrap/63204
    * cfgloop.c (mark_loop_for_removal): Track former header
    unconditionally.
    * cfgloop.h (struct loop): Add former_header member unconditionally.
    * loop-init.c (fix_loop_structure): Enable bogus loop removal
    diagnostic unconditionally.

    2014-09-05  Richard Biener  <rguenther@suse.de>

    * cfgloop.c (mark_loop_for_removal): Record former header
    when ENABLE_CHECKING.
    * cfgloop.h (strut loop): Add former_header member when
    ENABLE_CHECKING.
    * loop-init.c (fix_loop_structure): Sanity check loops
    marked for removal if they re-appeared.

    2014-09-05  Richard Biener  <rguenther@suse.de>

    * cfgloop.c (mark_loop_for_removal): New function.
    * cfgloop.h (mark_loop_for_removal): Declare.
    * cfghooks.c (delete_basic_block): Use mark_loop_for_removal.
    (merge_blocks): Likewise.
    (duplicate_block): Likewise.
    * except.c (sjlj_emit_dispatch_table): Likewise.
    * tree-eh.c (cleanup_empty_eh_merge_phis): Likewise.
    * tree-ssa-threadupdate.c (ssa_redirect_edges): Likewise.
    (thread_through_loop_header): Likewise.

    2014-06-26  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/61607
    * tree-ssa-threadupdate.c (ssa_redirect_edges): Cancel the
    loop if we redirected its latch edge.
    (thread_block_1): Do not cancel loops prematurely.

gcc/testsuite/
2015-03-05  Yvan Roux  <yvan.roux@linaro.org>

    Backport from trunk r218115, r218733, r218746, r220491.
    2015-02-06  Sebastian Pop  <s.pop@samsung.com>
            Brian Rzycki  <b.rzycki@samsung.com>

    PR tree-optimization/64878
    * testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c: New.

    2014-12-15  Richard Biener  <rguenther@suse.de>

    PR middle-end/64246
    * gnat.dg/opt46.adb: New testcase.
    * gnat.dg/opt46.ads: Likewise.
    * gnat.dg/opt46_pkg.adb: Likewise.
    * gnat.dg/opt46_pkg.ads: Likewise.

    2014-12-15  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/64284
    * gcc.dg/torture/pr64284.c: New testcase.

    2014-11-27  Richard Biener  <rguenther@suse.de>

    PR tree-optimization/64083
    * gcc.dg/torture/pr64083.c: New testcase.


Added:
    branches/linaro/gcc-4_9-branch/gcc/testsuite/gcc.dg/torture/pr64083.c
    branches/linaro/gcc-4_9-branch/gcc/testsuite/gcc.dg/torture/pr64284.c
   
branches/linaro/gcc-4_9-branch/gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
    branches/linaro/gcc-4_9-branch/gcc/testsuite/gnat.dg/opt46.adb
    branches/linaro/gcc-4_9-branch/gcc/testsuite/gnat.dg/opt46.ads
    branches/linaro/gcc-4_9-branch/gcc/testsuite/gnat.dg/opt46_pkg.adb
    branches/linaro/gcc-4_9-branch/gcc/testsuite/gnat.dg/opt46_pkg.ads
Modified:
    branches/linaro/gcc-4_9-branch/gcc/ChangeLog.linaro
    branches/linaro/gcc-4_9-branch/gcc/cfghooks.c
    branches/linaro/gcc-4_9-branch/gcc/cfgloop.c
    branches/linaro/gcc-4_9-branch/gcc/cfgloop.h
    branches/linaro/gcc-4_9-branch/gcc/except.c
    branches/linaro/gcc-4_9-branch/gcc/loop-init.c
    branches/linaro/gcc-4_9-branch/gcc/omp-low.c
    branches/linaro/gcc-4_9-branch/gcc/testsuite/ChangeLog.linaro
    branches/linaro/gcc-4_9-branch/gcc/tree-eh.c
    branches/linaro/gcc-4_9-branch/gcc/tree-inline.c
    branches/linaro/gcc-4_9-branch/gcc/tree-ssa-threadedge.c
    branches/linaro/gcc-4_9-branch/gcc/tree-ssa-threadupdate.c


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

end of thread, other threads:[~2015-03-05 14:28 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-12-12 11:01 [Bug tree-optimization/64284] New: [5 Regression] ICE: Segmentation fault rguenth at gcc dot gnu.org
2014-12-12 11:02 ` [Bug tree-optimization/64284] " rguenth at gcc dot gnu.org
2014-12-12 11:19 ` rguenth at gcc dot gnu.org
2014-12-12 11:20 ` trippels at gcc dot gnu.org
2014-12-12 11:45 ` rguenth at gcc dot gnu.org
2014-12-15  8:20 ` rguenth at gcc dot gnu.org
2014-12-15  8:20 ` rguenth at gcc dot gnu.org
2015-03-05 14:28 ` yroux 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).