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

gcc compiler bug (was Re: aliasing again)



Sergei Organov wrote:

> Steven Johnson <sjohnson at sakuraindustries.com> writes:
> > Kate Feng wrote:
> >> I think I am missing something  practical here.
> >>
> >> In 4.7.1,  I noticed the code :
> >> RTEMS_INLINE_ROUTINE void _Heap_Block_remove (
> >>   Heap_Block *the_block
> >> )
> >> {
> >>   Heap_Block *block = the_block;
> >>
> >>   Heap_Block *next = block->next;
> >>   Heap_Block *prev = block->prev;
> >>   prev->next = next;
> >>   next->prev = prev;
> >> }
> >>
> >> What is the effect of this discussion of alias  in
> >> Heap_Block_remove  ?
> >>
> >> I extended the test with gcc-4.1.1 with either
> >> -fstrict-aliasing or  -fno-strict-aliasing with or
> >> without  -O -fschedule-insns.  However, I got the
> >> same result :
> >>
>
> [...]
>
> > My suggestion is always build system software with
> > -fno-strict-aliasing, then your code will perform exactly as you have
> > written it and it is doubtful the "potential" optimisations will make
> > one stick of difference to the quality or speed of the code produced
> > by the compiler.
>
> I fail to see how your post is relevant.

Yes, it is  not relevant.

> Did you miss the fact that
> -fno-strict-aliasing *does not help* in the particular case Till has
> encountered?

I ran some more tests with gcc-4.1.1. It seems to me that
-fstrict-aliasing "does not help" in the particular case
either.    Actually  when I tested  with
-fstrict-aliasing -O and  -fno-strict-aliasing -O,
both of them produced the same assembly code.
In fatc, the tests reversed  the situation from
the previous one that  I posted at the
http://www.rtems.com/ml/rtems-users/2007/may/msg00197.html.
Now the result proved that the bug affects the 2nd
routine instead.   heapfree.c is compiled with -O,
which means _Heap_Block_remove is affected
by this compiler bug as well.  One needs to have a closer
look on this, please.  Oh, well.  Do I have a different
gcc-4.1.1 compiler from everyone else ?


00000000 <xtract>:
   0: 81 63 00 00  lwz     r11,0(r3)
   4: 81 23 00 04  lwz     r9,4(r3)
   8: 91 2b 00 04  stw     r9,4(r11)
   c: 91 69 00 00  stw     r11,0(r9)
  10: 4e 80 00 20  blr

00000014 <nodeRemove>:
  14: 81 63 00 00  lwz     r11,0(r3)
  18: 81 23 00 04  lwz     r9,4(r3)
  1c: 91 69 00 00  stw     r11,0(r9)
  20: 91 2b 00 04  stw     r9,4(r11)
  24: 4e 80 00 20  blr


Later,
Kate

>
>
> -- Sergei.
> _______________________________________________
> rtems-users mailing list
> rtems-users at rtems.com
> http://rtems.rtems.org/mailman/listinfo/rtems-users