re PR middle-end/80764 (ICE at -O3 in both 32-bit and 64-bit modes on x86_64-linux-gnu (internal compiler error: in verify_loop_structure, at cfgloop.c:1644))

2017-05-19  Richard Biener  <rguenther@suse.de>

	PR middle-end/80764
	* cfgexpand.c (expand_gimple_cond): Fix loop fixup.

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

From-SVN: r248261
This commit is contained in:
Richard Biener 2017-05-19 08:23:37 +00:00 committed by Richard Biener
parent f0da130005
commit 035ab82621
4 changed files with 28 additions and 1 deletions

View File

@ -1,3 +1,8 @@
2017-05-19 Richard Biener <rguenther@suse.de>
PR middle-end/80764
* cfgexpand.c (expand_gimple_cond): Fix loop fixup.
2017-05-18 Segher Boessenkool <segher@kernel.crashing.org>
* config/rs6000/rs6000.c (struct machine_function): Add field

View File

@ -2503,7 +2503,10 @@ expand_gimple_cond (basic_block bb, gcond *stmt)
false_edge->flags |= EDGE_FALLTHRU;
new_bb->count = false_edge->count;
new_bb->frequency = EDGE_FREQUENCY (false_edge);
add_bb_to_loop (new_bb, bb->loop_father);
add_bb_to_loop (new_bb, dest->loop_father);
if (bb->loop_father->latch == bb
&& bb->loop_father->header == dest)
bb->loop_father->latch = new_bb;
new_edge = make_edge (new_bb, dest, 0);
new_edge->probability = REG_BR_PROB_BASE;
new_edge->count = new_bb->count;

View File

@ -1,3 +1,8 @@
2017-05-19 Richard Biener <rguenther@suse.de>
PR middle-end/80764
* gcc.dg/torture/pr80764.c: New testcase.
2017-05-18 Michael Meissner <meissner@linux.vnet.ibm.com>
PR target/80510

View File

@ -0,0 +1,14 @@
/* { dg-do compile } */
int b, d, f, h;
char e;
int fn1();
int main() { return fn1(); }
int fn1(int p1) {
for (; d;)
for (; e < 3;) {
for (; h;)
b = fn1(0);
return f;
}
}