[Bug tree-optimization/56094] Invalid line number info generated with tree-level ivopts

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu Jan 24 17:27:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56094

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-01-24 17:26:48 UTC ---
--- gimplify.c.jj    2013-01-11 09:02:55.000000000 +0100
+++ gimplify.c    2013-01-24 18:15:54.246157569 +0100
@@ -8600,6 +8600,7 @@ force_gimple_operand_1 (tree expr, gimpl
 {
   enum gimplify_status ret;
   struct gimplify_ctx gctx;
+  location_t saved_location;

   *stmts = NULL;

@@ -8613,6 +8614,8 @@ force_gimple_operand_1 (tree expr, gimpl
   push_gimplify_context (&gctx);
   gimplify_ctxp->into_ssa = gimple_in_ssa_p (cfun);
   gimplify_ctxp->allow_rhs_cond_expr = true;
+  saved_location = input_location;
+  input_location = UNKNOWN_LOCATION;

   if (var)
     {
@@ -8634,6 +8637,7 @@ force_gimple_operand_1 (tree expr, gimpl
       gcc_assert (ret != GS_ERROR);
     }

+  input_location = saved_location;
   pop_gimplify_context (NULL);

   return expr;

seems to work (there are way too many uses of input_location in gimplify.c),
alternatively we could e.g. grab input_location temporarily just in
force_gimple_operand_gsi_1, depending on gimple_location of the stmt this
should be emitted before resp. after.



More information about the Gcc-bugs mailing list