X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Flower%2Flower_intrinsics.c;h=69bfc6fa855dc184be1fb6512187f7093cad6325;hb=d16b1e9e4d47b1f467067aadb36d58fc79b37788;hp=09af1f4f89b4da4237900f3fdb1ae68ff1ba5ab4;hpb=e7228c94cf04aec3a231acf138e9e4cac5b24447;p=libfirm diff --git a/ir/lower/lower_intrinsics.c b/ir/lower/lower_intrinsics.c index 09af1f4f8..69bfc6fa8 100644 --- a/ir/lower/lower_intrinsics.c +++ b/ir/lower/lower_intrinsics.c @@ -27,6 +27,8 @@ #include "irgwalk.h" #include "ircons.h" #include "irgmod.h" +#include "irgopt.h" +#include "trouts.h" #include "lower_intrinsics.h" #include "pmap.h" @@ -34,7 +36,7 @@ typedef struct _walker_env { pmap *c_map; /**< The intrinsic call map. */ unsigned nr_of_intrinsics; /**< statistics */ - const i_instr_record **i_map; /**< The intrinsic instruction map. */ + i_instr_record **i_map; /**< The intrinsic instruction map. */ } walker_env_t; /** @@ -80,12 +82,12 @@ static void call_mapper(ir_node *node, void *env) { /* Go through all graphs and map calls to intrinsic functions. */ unsigned lower_intrinsics(i_record *list, int length) { - int i, n_ops = get_irp_n_opcodes(); - ir_graph *irg; - pmap *c_map = pmap_create_ex(length); - const i_instr_record **i_map; - unsigned nr_of_intrinsics = 0; - walker_env_t wenv; + int i, n_ops = get_irp_n_opcodes(); + ir_graph *irg; + pmap *c_map = pmap_create_ex(length); + i_instr_record **i_map; + unsigned nr_of_intrinsics = 0; + walker_env_t wenv; /* we use the ir_op generic pointers here */ NEW_ARR_A(const i_instr_record *, i_map, n_ops); @@ -121,8 +123,12 @@ unsigned lower_intrinsics(i_record *list, int length) { /* exception control flow might have changed */ set_irg_doms_inconsistent(irg); + set_irg_extblk_inconsistent(irg); set_irg_loopinfo_inconsistent(irg); + /* calls might be removed/added */ + set_trouts_inconsistent(); + /* optimize it, tuple might be created */ local_optimize_graph(irg);