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

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: