public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c/29753]  New: Volatile semantics ignored in some cases
@ 2006-11-07 17:15 ricardo dot fernandez at st dot com
  2006-11-07 17:16 ` [Bug c/29753] " ricardo dot fernandez at st dot com
                   ` (9 more replies)
  0 siblings, 10 replies; 11+ messages in thread
From: ricardo dot fernandez at st dot com @ 2006-11-07 17:15 UTC (permalink / raw)
  To: gcc-bugs

The following function:

static struct { int w; } s;

void wait (void) {
 int t;
loop:
 t = *((volatile int *) &s.w);
 if (t > 0) goto loop;
}

is compiled incorrectly with "gcc -v -O3 v.c -o v.s -Wall -S". The generated
assembly does not respetc the semantics of volatile:

wait:
        movl    s, %eax
        pushl   %ebp
        movl    %esp, %ebp
        testl   %eax, %eax
        jg      .L6
        popl    %ebp
        ret
.L3:
.L6:
        jmp     .L6

The attached testscase shows the problem. It also includes a similar function
which does get compiled correctly, the only difference is that it introduces a
temporary variable. 

Detailed compiled output:

/home/ricardo/mine/install/bin/gcc -v -O3 v.c -o v.s -Wall -S
Using built-in specs.
Target: i686-pc-linux-gnu
Configured with: ../configure --prefix=/home/ricardo/mine/install/
--enable-ckecking=all --enable-languages=c,cil --disable-bootstrap :
(reconfigured) ../configure --prefix=/home/ricardo/mine/install/
--enable-languages=c,cil --disable-bootstrap
Thread model: posix
gcc version 4.2.0 20060826 (experimental)
 /home/ricardo/mine/install/bin/../libexec/gcc/i686-pc-linux-gnu/4.2.0/cc1
-quiet -v -iprefix
/home/ricardo/mine/install/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/ v.c -quiet
-dumpbase v.c -mtune=generic -auxbase-strip v.s -O3 -Wall -version -o v.s
ignoring nonexistent directory
"/home/ricardo/mine/install/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/../../../../i686-pc-linux-gnu/include"
ignoring duplicate directory
"/home/ricardo/mine/install//lib/gcc/i686-pc-linux-gnu/4.2.0/include"
ignoring nonexistent directory
"/home/ricardo/mine/install//lib/gcc/i686-pc-linux-gnu/4.2.0/../../../../i686-pc-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/ricardo/mine/install/bin/../lib/gcc/i686-pc-linux-gnu/4.2.0/include
 /usr/local/include
 /home/ricardo/mine/install//include
 /usr/include
End of search list.
GNU C version 4.2.0 20060826 (experimental) (i686-pc-linux-gnu)
        compiled by GNU C version 4.1.2 20061020 (prerelease) (Debian
4.1.1-17).
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096
Compiler executable checksum: 39ae1c561861def994882f2081f65beb


-- 
           Summary: Volatile semantics ignored in some cases
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: ricardo dot fernandez at st dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29753


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2007-02-03 20:57 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-11-07 17:15 [Bug c/29753] New: Volatile semantics ignored in some cases ricardo dot fernandez at st dot com
2006-11-07 17:16 ` [Bug c/29753] " ricardo dot fernandez at st dot com
2006-11-07 17:25 ` [Bug tree-optimization/29753] [4.0/4.1/4.2/4.3 Regression] " bonzini at gnu dot org
2006-11-07 19:39 ` pinskia at gcc dot gnu dot org
2006-11-12 21:33 ` mmitchel at gcc dot gnu dot org
2006-11-15  8:07 ` rguenth at gcc dot gnu dot org
2006-11-19 16:15 ` rguenth at gcc dot gnu dot org
2006-11-19 16:16 ` rguenth at gcc dot gnu dot org
2006-11-19 16:16 ` [Bug tree-optimization/29753] [4.0 " rguenth at gcc dot gnu dot org
2006-12-01  2:06 ` chaoyingfu at gcc dot gnu dot org
2007-02-03 20:57 ` gdr at gcc dot gnu dot org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).