re PR tree-optimization/71328 (ice in verify_jump_thread)

PR tree-optimization/71328
	* tree-ssa-threadupdate.c (duplicate_thread_path): Fix off-by-one
	error when checking for a jump back onto the copied path.  */

	PR tree-optimization/71328
	* gcc.c-torture/compile/pr71328.c: New test.

From-SVN: r237052
This commit is contained in:
Jeff Law 2016-06-02 23:20:16 -06:00 committed by Jeff Law
parent e96e5f4611
commit 47b8392308
4 changed files with 29 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2016-06-02 Jeff Law <law@redhat.com>
PR tree-optimization/71328
* tree-ssa-threadupdate.c (duplicate_thread_path): Fix off-by-one
error when checking for a jump back onto the copied path. */
2016-06-02 David Malcolm <dmalcolm@redhat.com>
* config/microblaze/microblaze.c (get_branch_target): Add return

View File

@ -1,3 +1,8 @@
2016-06-02 Jeff Law <law@redhat.com>
PR tree-optimization/71328
* gcc.c-torture/compile/pr71328.c: New test.
2016-06-02 Jerry DeLisle <jvdelisle@gcc.gnu.org>
PR fortran/52393

View File

@ -0,0 +1,16 @@
int a, b, c;
void fn1() {
unsigned char d = 3;
if (d > 11)
lbl_596:
c = 0;
while (!d)
b = b;
unsigned char e = e || d;
d = e;
if (a)
d = d || a;
goto lbl_596;
}

View File

@ -2298,11 +2298,11 @@ duplicate_thread_path (edge entry, edge exit,
}
/* Special case the last block on the path: make sure that it does not
jump back on the copied path. */
jump back on the copied path, including back to itself. */
if (i + 1 == n_region)
{
FOR_EACH_EDGE (e, ei, bb->succs)
if (bb_in_bbs (e->dest, region_copy, n_region - 1))
if (bb_in_bbs (e->dest, region_copy, n_region))
{
basic_block orig = get_bb_original (e->dest);
if (orig)