[cfe-dev] clang test failure: CodeGen/atomic.c

Ted Kremenek kremenek at apple.com
Wed Jun 25 10:33:15 PDT 2008


I'm at ToT for llvm and clang, and I am seeing the following test  
failure on Mac OS X in the CodeGen module:

(kremenek at grue:CodeGen)$ ../TestRunner.sh atomic.c
******************** TEST 'atomic.c' FAILED! ********************
Command:
  clang atomic.c -emit-llvm -o - > Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.las.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.lss.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.min.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.max.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.umin.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.umax.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.swap.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.lcs.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.and.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.or.i32 Output/atomic.c.out.tmp1 &&
  grep @llvm.atomic.load.xor.i32 Output/atomic.c.out.tmp1
Incorrect Output:
******************** TEST 'atomic.c' FAILED! ********************

Anyone else seeing this?

More information:

(kremenek at grue:CodeGen)$  cat Output/atomic.c.out.tmp1
; ModuleID = 'atomic.c'
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32- 
i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64- 
f80:128:128"
target triple = "i686-apple-darwin9.3.0"

define i32 @atomic() {
entry:
	%old = alloca i32, align 4		; <i32*> [#uses=12]
	%val = alloca i32, align 4		; <i32*> [#uses=10]
	%uval = alloca i32, align 4		; <i32*> [#uses=3]
	%cmp = alloca i32, align 4		; <i32*> [#uses=1]
	store i32 1, i32* %val
	store i32 1, i32* %uval
	store i32 0, i32* %cmp
	call i32 @llvm.atomic.load.add.i32( i32* %val, i32 1 )		; <i32>:0  
[#uses=1]
	store i32 %0, i32* %old
	call i32 @llvm.atomic.load.sub.i32( i32* %val, i32 2 )		; <i32>:1  
[#uses=1]
	store i32 %1, i32* %old
	call i32 @llvm.atomic.load.min.i32( i32* %val, i32 3 )		; <i32>:2  
[#uses=1]
	store i32 %2, i32* %old
	call i32 @llvm.atomic.load.max.i32( i32* %val, i32 4 )		; <i32>:3  
[#uses=1]
	store i32 %3, i32* %old
	call i32 @llvm.atomic.load.umin.i32( i32* %uval, i32 5 )		; <i32>:4  
[#uses=1]
	store i32 %4, i32* %old
	call i32 @llvm.atomic.load.umax.i32( i32* %uval, i32 6 )		; <i32>:5  
[#uses=1]
	store i32 %5, i32* %old
	call i32 @llvm.atomic.swap.i32( i32* %val, i32 7 )		; <i32>:6 [#uses=1]
	store i32 %6, i32* %old
	call i32 @llvm.atomic.cmp.swap.i32( i32* %val, i32 4, i32 1976 )		;  
<i32>:7 [#uses=1]
	store i32 %7, i32* %old
	call i32 @llvm.atomic.load.and.i32( i32* %val, i32 9 )		; <i32>:8  
[#uses=1]
	store i32 %8, i32* %old
	call i32 @llvm.atomic.load.or.i32( i32* %val, i32 10 )		; <i32>:9  
[#uses=1]
	store i32 %9, i32* %old
	call i32 @llvm.atomic.load.xor.i32( i32* %val, i32 11 )		; <i32>:10  
[#uses=1]
	store i32 %10, i32* %old
	%tmp = load i32* %old		; <i32> [#uses=1]
	ret i32 %tmp
}

declare i32 @llvm.atomic.load.add.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.sub.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.min.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.max.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.umin.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.umax.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.swap.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.cmp.swap.i32(i32*, i32, i32) nounwind

declare i32 @llvm.atomic.load.and.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.or.i32(i32*, i32) nounwind

declare i32 @llvm.atomic.load.xor.i32(i32*, i32) nounwind

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20080625/624f3ce5/attachment.html>


More information about the cfe-dev mailing list