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

Will Schmidt <willschm at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |bergner at gcc dot gnu.org,
                   |                            |segher at gcc dot gnu.org,
                   |                            |willschm at gcc dot gnu.org

--- Comment #2 from Will Schmidt <willschm at gcc dot gnu.org> ---
(In reply to David Binderman from comment #0)
> Static analyser cppcheck says:
> 
> 1.
> 
> gcc/config/rs6000/driver-rs6000.cc:578:13: style: Variable 'cache' is
> reassigned a value before the old one has been used. [redundantAssignment]
> 
> Source code is
> 
>       cache = detect_caches_freebsd ();
>       /* FreeBSD PPC does not provide any cache information yet.  */
>       cache = "";
> 
> The function call looks pointless.
> 
> 2.
> 
> gcc/config/rs6000/driver-rs6000.cc:582:13: style: Variable 'cache' is
> reassigned a value before the old one has been used. [redundantAssignment]

There is a similar pattern for the __linux__ if/else path. 

    #elif defined (__FreeBSD__)
          cache = detect_caches_freebsd ();
          /* FreeBSD PPC does not provide any cache information yet.  */
          cache = "";
    #elif defined (__linux__)
          cache = detect_caches_linux ();
          /* PPC Linux does not provide any cache information yet.  */
          cache = "";
    #else

It looks like the __linux__ reassignment has been there for quite a while as
well.
when not overridden, the detect_caches_foo functions call describe_cache, which
builds a string ala
  sprintf (l1size, "--param l1-cache-size=%u", l1_sizekb);
  sprintf (line, "--param l1-cache-line-size=%u", l1_line);
  sprintf (l2size, "--param l2-cache-size=%u", l2_sizekb);
  return concat (l1size, " ", line, " ", l2size, " ", NULL);

We've obviously not noticed that the param values are no longer being set, for
quite a while.  Is there value in re-enabling this, or could this simply be
removed?    The other logic in detect_caches_linux() does set values for
l1_sizekb and friends, based on the detected platform string, which has a
special case for power6* or not.  Possibly would need some touch-ups for
processors later than power6.

Reply via email to