public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r14-5666] gcov: Fix integer types in gen_counter_update()
@ 2023-11-21 11:20 Sebastian Huber
  0 siblings, 0 replies; only message in thread
From: Sebastian Huber @ 2023-11-21 11:20 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:41aacdea55c5d795a7aa195357d966645845d00e

commit r14-5666-g41aacdea55c5d795a7aa195357d966645845d00e
Author: Sebastian Huber <sebastian.huber@embedded-brains.de>
Date:   Mon Nov 20 15:26:38 2023 +0100

    gcov: Fix integer types in gen_counter_update()
    
    This change fixes issues like this:
    
      gcc.dg/gomp/pr27573.c: In function ‘main._omp_fn.0’:
      gcc.dg/gomp/pr27573.c:19:1: error: non-trivial conversion in ‘ssa_name’
         19 | }
            | ^
      long int
      long unsigned int
      # .MEM_19 = VDEF <.MEM_18>
      __gcov7.main._omp_fn.0[0] = PROF_time_profile_12;
      during IPA pass: profile
      gcc.dg/gomp/pr27573.c:19:1: internal compiler error: verify_gimple failed
    
    gcc/ChangeLog:
    
            PR middle-end/112634
    
            * tree-profile.cc (gen_assign_counter_update): Cast the unsigned result type of
            __atomic_add_fetch() to the signed counter type.
            (gen_counter_update): Fix formatting.

Diff:
---
 gcc/tree-profile.cc | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)

diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc
index f12b374ca27..1ac0fdb3bc9 100644
--- a/gcc/tree-profile.cc
+++ b/gcc/tree-profile.cc
@@ -281,10 +281,13 @@ gen_assign_counter_update (gimple_stmt_iterator *gsi, gcall *call, tree func,
   if (result)
     {
       tree result_type = TREE_TYPE (TREE_TYPE (func));
-      tree tmp = make_temp_ssa_name (result_type, NULL, name);
-      gimple_set_lhs (call, tmp);
+      tree tmp1 = make_temp_ssa_name (result_type, NULL, name);
+      gimple_set_lhs (call, tmp1);
       gsi_insert_after (gsi, call, GSI_NEW_STMT);
-      gassign *assign = gimple_build_assign (result, tmp);
+      tree tmp2 = make_temp_ssa_name (TREE_TYPE (result), NULL, name);
+      gassign *assign = gimple_build_assign (tmp2, NOP_EXPR, tmp1);
+      gsi_insert_after (gsi, assign, GSI_NEW_STMT);
+      assign = gimple_build_assign (result, tmp2);
       gsi_insert_after (gsi, assign, GSI_NEW_STMT);
     }
   else
@@ -309,8 +312,8 @@ gen_counter_update (gimple_stmt_iterator *gsi, tree counter, tree result,
     {
       /* __atomic_fetch_add (&counter, 1, MEMMODEL_RELAXED); */
       tree f = builtin_decl_explicit (TYPE_PRECISION (type) > 32
-				      ? BUILT_IN_ATOMIC_ADD_FETCH_8:
-				      BUILT_IN_ATOMIC_ADD_FETCH_4);
+				      ? BUILT_IN_ATOMIC_ADD_FETCH_8
+				      : BUILT_IN_ATOMIC_ADD_FETCH_4);
       gcall *call = gimple_build_call (f, 3, addr, one, relaxed);
       gen_assign_counter_update (gsi, call, f, result, name);
     }

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2023-11-21 11:20 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-11-21 11:20 [gcc r14-5666] gcov: Fix integer types in gen_counter_update() Sebastian Huber

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).