--- Comment #4 from rth at gcc dot gnu dot org 2010-05-13 22:41 ---
The only thing "wrong" with the code from -O1 is that it didn't inline __ffs.
Since that function isn't explicitly marked inline, I don't see anything wrong
with that decision.
Given that adding "static inline" to the d
--- Comment #3 from pinskia at gcc dot gnu dot org 2010-05-13 21:43 ---
(In reply to comment #2)
> Yes, poor is a better word.
>
> And by poor, I mean that gcc produces many superfluous loads and stores and
> even a branch.
Yes -O1 is by design produces extra loads/stores in some cases
--- Comment #2 from mattst88 at gmail dot com 2010-05-13 21:40 ---
(In reply to comment #1)
> What do you mean by "bad"? If the code isn't correct, "wrong" is better
> suited; if it is suboptimal, "poor" is better suited.
>
> If the latter, it's expected that -O1 generates poorer code