Bug#164554: gcc-3.2: volatile not respected on alpha
On Sun, Oct 13, 2002 at 07:29:24PM +1000, herbert@gondor.apana.org.au wrote:
> Package: gcc-3.2
> Version: 1:3.2.1-0pre2
> Severity: normal
>
> The following program produces output where the assignment to j occurs
> before the i has been incremented. This breaks any program using such
> constructs to ensure consistency:
>
> volatile int i;
> int j;
>
> void a() {
> i++;
> j = 6;
> i--;
> }
>
> .prologue 1
> ldq $3,i($29) !literal
> lda $4,6($31)
> ldq $1,j($29) !literal
> ldl $2,0($3)
> stl $4,0($1)
> lda $2,1($2)
> stl $2,0($3)
I don't see the problem. Volatile in C doesn't provide any sort of
barrier; you have to place one yourself if you want one. It only
guaranatees that the two accesses to "i" will not be reordered or
eliminated.
--
Daniel Jacobowitz
MontaVista Software Debian GNU/Linux Developer
Reply to: