[Bug middle-end/126363] New: fold_builtin_atomic_always_lock_free uses `INTVAL (expand_normal (arg0))` for INTEGER_CST

"pinskia at gcc dot gnu.org via Gcc-bugs" <[email protected]>
Newsgroups gmane.comp.gcc.bugs
Message-ID <[email protected]/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126363

            Bug ID: 126363
           Summary: fold_builtin_atomic_always_lock_free uses `INTVAL
                    (expand_normal (arg0))` for INTEGER_CST
           Product: gcc
           Version: 17.0
            Status: UNCONFIRMED
          Keywords: compile-time-hog, easyhack
          Severity: normal
          Priority: P3
         Component: middle-end
          Assignee: unassigned at gcc dot gnu.org
          Reporter: pinskia at gcc dot gnu.org
  Target Milestone: ---

The code in fold_builtin_atomic_always_lock_free does:

  if (TREE_CODE (arg0) != INTEGER_CST)
    return NULL_TREE;

  /* We need a corresponding integer mode for the access to be lock-free.  */
  size = INTVAL (expand_normal (arg0)) * BITS_PER_UNIT;


But should use tree_fits_shwi_p/tree_to_shwi instead.
That would be faster than going through expand.

Likewise this:
  if (TREE_CODE (arg1) == INTEGER_CST)
    {
      unsigned HOST_WIDE_INT val = UINTVAL (expand_normal (arg1));


Well this one should using ushwi instead.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.