]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
don't access cfun in dump_function_to_file
authorAlexandre Oliva <oliva@adacore.com>
Sun, 25 Jul 2021 02:05:32 +0000 (23:05 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Tue, 17 Aug 2021 11:00:40 +0000 (08:00 -0300)
dump_function_to_file takes the function to dump as a parameter, and
parts of it use the local fun variable where cfun would be used
elsewhere.  Others use cfun, presumably in error.  Fixed to use fun
uniformly.  Added a few more tests for non-NULL fun before
dereferencing it.

for  gcc/ChangeLog

* tree-cfg.c (dump_function_to_file): Use fun, not cfun.

gcc/tree-cfg.c

index 9883eaaa9bf1f5793ebe29d8cf120997d8c7d357..61b53913e0b30fe76d6eadff304d8c32e80d23ad 100644 (file)
@@ -8075,9 +8075,9 @@ dump_function_to_file (tree fndecl, FILE *file, dump_flags_t flags)
               : (fun->curr_properties & PROP_cfg) ? "cfg"
               : "");
 
-      if (cfun->cfg)
+      if (fun && fun->cfg)
        {
-         basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun);
+         basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (fun);
          if (bb->count.initialized_p ())
            fprintf (file, ",%s(%" PRIu64 ")",
                     profile_quality_as_string (bb->count.quality ()),
@@ -8163,8 +8163,8 @@ dump_function_to_file (tree fndecl, FILE *file, dump_flags_t flags)
 
       tree name;
 
-      if (gimple_in_ssa_p (cfun))
-       FOR_EACH_SSA_NAME (ix, name, cfun)
+      if (gimple_in_ssa_p (fun))
+       FOR_EACH_SSA_NAME (ix, name, fun)
          {
            if (!SSA_NAME_VAR (name)
                /* SSA name with decls without a name still get
@@ -8200,7 +8200,7 @@ dump_function_to_file (tree fndecl, FILE *file, dump_flags_t flags)
 
       fprintf (file, "}\n");
     }
-  else if (fun->curr_properties & PROP_gimple_any)
+  else if (fun && (fun->curr_properties & PROP_gimple_any))
     {
       /* The function is now in GIMPLE form but the CFG has not been
         built yet.  Emit the single sequence of GIMPLE statements