Messages in this thread | | | From | Julia Lawall <> | Subject | [PATCH 0/9] drop unneeded goto | Date | Thu, 28 May 2015 23:02:15 +0200 |
| |
These patches drop gotos that jump to a label that is at the next instruction, in the case that the label is not used elsewhere in the function. The complete semantic patch that performs this transformation is as follows:
// <smpl> @r@ position p; identifier l; @@
if (...) goto l@p; l:
@script:ocaml s@ p << r.p; nm; @@
nm := (List.hd p).current_element
@ok exists@ identifier s.nm,l; position p != r.p; @@
nm(...) { <+... goto l@p; ...+> }
@depends on !ok@ identifier s.nm; position r.p; identifier l; @@
nm(...) { <... - if(...) goto l@p; l: ...> } // </smpl>
| |