https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104901

Segher Boessenkool <segher at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |INVALID

--- Comment #6 from Segher Boessenkool <segher at gcc dot gnu.org> ---
(In reply to pc from comment #5)
> The code will use malloc if it can, and posix_memalign otherwise.

If it knows it can based on some very simplistic criterion, yes.  Is this
a useful optimisation, or is this premature optimisation?

> There may be a slight advantage to using malloc instead of posix_memalign.
> The paths are indeed different. I'm not sure why the floor is raised after
> determining not to call malloc:
> --
>   if (__alignment == __malloc_align && __alignment == __vec_align)
>     return malloc (__size);
>   if (__alignment < __vec_align)
>     __alignment = __vec_align;
> --

If it does call malloc it *also* does this, it is just that __alignment
already is the same then (and this function does an early out, too) ;-)

> (I probably would've written the code slightly differently.)

Yeah.

> It appears to me that the identified code would be always false on a 32-bit
> system, where __malloc_align would be computed as 64 bits, and _vec_align as
> 128 bits.  It would be always true on a 64-bit system (128 == 128).

Likely, yes.

> All that being said, I'm not sure I see any problem with the code, and maybe
> the analyzer is being a bit overzealous?

That's my point, yes.

- * -

Ah.  This is some 3rd party checker.  Closing as INVALID.

Reply via email to