qbe

Internal scc patchset buffer for QBE
Log | Files | Refs | README | LICENSE

commit 52cc53185e44a7e8690fb5ec856863a4d259034b
parent 3c3afdc896be4de996d7486e40e7b81488b745b9
Author: Quentin Carbonneaux <quentin.carbonneaux@yale.edu>
Date:   Wed, 28 Dec 2016 06:43:05 -0500

loosen assertion in load elimination

The assertion was invalid, I was assuming il->blk was
b when writing it.  The new assertion should be right:
If the loop level were to decrease we would get out of
a cycle in cfg, this should not be possible unless we
go through a block with more than 1 predecessor.

Diffstat:
Mload.c | 2+-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/load.c b/load.c @@ -260,7 +260,7 @@ def(Slice sl, bits msk, Blk *b, Ins *i, Loc *il) goto Load; if (b->npred == 1) { bp = b->pred[0]; - assert(bp->s2 || bp->loop == il->blk->loop); + assert(bp->loop >= il->blk->loop); l = *il; if (bp->s2) l.type = LNoLoad;