Re: Inquiry Regarding -Wrange-loop-construct Warning Behavior in GCC 14

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, 13 Sept 2024 at 12:52, Jonathan Wakely <jwakely.gcc@xxxxxxxxx> wrote:
>
> On Fri, 13 Sept 2024 at 10:30, Sunil Kumar Dora
> <sunilkumar.dora@xxxxxxxxxxxxxxxx> wrote:
> >
> > Dear GCC Community,
> > I am currently encountering an issue with the -Wrange-loop-construct warning in GCC version 14, as well as in earlier versions. It appears that the warning is triggered incorrectly for certain loop constructs.
> > Issue Details:
> > I have tested the following code, which produces a warning with GCC/G++ suggesting the use of a reference:
> > Test Code:
> > Link to test code on Godbolt<https://godbolt.org/z/xM4K6s34E> (GCC produces warning)
> > For comparison, here is how Clang 18 handles the same code:
> >  Link to Clang result on Godbolt<https://godbolt.org/z/aYTxP7K9o>  (Clang handles correctly)
> > It seems that GCC/G++ might be checking for trivial copyability rather than trivial copy-constructibility, which could be contributing to the issue.
> > Questions:
> >
> >   1.  Is this a known issue with the -Wrange-loop-construct option?
> >   2.  Am I possibly overlooking something in my usage of this option?
> >
> > If this is a known issue, or if you require additional information, please let me know. Additionally, if it would be appropriate to create a formal bug report to track this, I would be happy to do so.
>
> Please file a bug report (and please don't send a mail to both the gcc
> and gcc-help lists, very few mails belong on both lists at the same
> time - just pick one).
>
> I'm not sure what the heuristic is for triggering the warning, but I
> agree that testing for trivially copy constructible might be better
> here.

This is the condition, so it is indeed using trivially copyable:

  /* Since small trivially copyable types are cheap to copy, we suppress the
     warning for them.  64B is a common size of a cache line.  */
  if (TREE_CODE (TYPE_SIZE_UNIT (type)) != INTEGER_CST
      || (tree_to_uhwi (TYPE_SIZE_UNIT (type)) <= 64
      && trivially_copyable_p (type)))
    return;





>
>
> > Thank you very much for your assistance and guidance.
> >
> > Thanks,
> > Sunil Dora



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux