X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fana%2Firbackedge.c;h=8a39fe23e9ea705b93b2c6a32876386408674b1d;hb=4bad1346ff2abc3923beea23e5ac949acc7ca514;hp=b4a24632f96d3ded47bfe660873b812ea4eae551;hpb=c80c368f7ae4222880121ed11c78ecd4cc5dec18;p=libfirm diff --git a/ir/ana/irbackedge.c b/ir/ana/irbackedge.c index b4a24632f..8a39fe23e 100644 --- a/ir/ana/irbackedge.c +++ b/ir/ana/irbackedge.c @@ -82,7 +82,7 @@ static INLINE bool legal_backarray (ir_node *n) { } -INLINE void fix_backedges(struct obstack *obst, ir_node *n) { +void fix_backedges(struct obstack *obst, ir_node *n) { opcode opc = get_irn_opcode(n); int *arr = mere_get_backarray(n); if (ARR_LEN(arr) == ARR_LEN(get_irn_in(n))-1) @@ -105,7 +105,26 @@ INLINE void fix_backedges(struct obstack *obst, ir_node *n) { }*/ } -/** Returns true if the predesessor pos is a backedge. */ +int is_inter_backedge(ir_node *n, int pos) { + int res; + int rem = get_interprocedural_view(); + set_interprocedural_view(0); + res = is_backedge(n, pos); + set_interprocedural_view(rem); + return res; +} + +int is_intra_backedge(ir_node *n, int pos) { + int res; + int rem = get_interprocedural_view(); + set_interprocedural_view(1); + res = is_backedge(n, pos); + set_interprocedural_view(rem); + return res; +} + + +/** Returns true if the predecessor pos is a backedge. */ bool is_backedge (ir_node *n, int pos) { int *ba = get_backarray (n); if (ba) return ba[pos];