<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I'm at ToT for llvm and clang, and I am seeing the following test failure on Mac OS X in the CodeGen module:</div><div><br></div><div><b>(kremenek@grue:CodeGen)$ ../TestRunner.sh atomic.c </b></div><div>******************** TEST 'atomic.c' FAILED! ********************</div><div>Command: </div><div> clang atomic.c -emit-llvm -o - > Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.las.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.lss.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.min.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.max.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.umin.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.umax.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.swap.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.lcs.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.and.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.or.i32 Output/atomic.c.out.tmp1 &&</div><div> grep @llvm.atomic.load.xor.i32 Output/atomic.c.out.tmp1</div><div>Incorrect Output:</div><div>******************** TEST 'atomic.c' FAILED! ********************</div><br><div>Anyone else seeing this?</div><div><br></div><div>More information:</div><div><br></div><div><div><b>(kremenek@grue:CodeGen)$  cat Output/atomic.c.out.tmp1</b></div><div>; ModuleID = 'atomic.c'</div><div>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"</div><div>target triple = "i686-apple-darwin9.3.0"</div><div><br></div><div>define i32 @atomic() {</div><div>entry:</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>%old = alloca i32, align 4<span class="Apple-tab-span" style="white-space:pre">          </span>; <i32*> [#uses=12]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>%val = alloca i32, align 4<span class="Apple-tab-span" style="white-space:pre">          </span>; <i32*> [#uses=10]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>%uval = alloca i32, align 4<span class="Apple-tab-span" style="white-space:pre">         </span>; <i32*> [#uses=3]</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>%cmp = alloca i32, align 4<span class="Apple-tab-span" style="white-space:pre">          </span>; <i32*> [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>store i32 1, i32* %val</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>store i32 1, i32* %uval</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>store i32 0, i32* %cmp</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>call i32 @llvm.atomic.load.add.i32( i32* %val, i32 1 )<span class="Apple-tab-span" style="white-space:pre">              </span>; <i32>:0 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %0, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.sub.i32( i32* %val, i32 2 )<span class="Apple-tab-span" style="white-space:pre">              </span>; <i32>:1 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %1, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.min.i32( i32* %val, i32 3 )<span class="Apple-tab-span" style="white-space:pre">              </span>; <i32>:2 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %2, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.max.i32( i32* %val, i32 4 )<span class="Apple-tab-span" style="white-space:pre">              </span>; <i32>:3 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %3, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.umin.i32( i32* %uval, i32 5 )<span class="Apple-tab-span" style="white-space:pre">            </span>; <i32>:4 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %4, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.umax.i32( i32* %uval, i32 6 )<span class="Apple-tab-span" style="white-space:pre">            </span>; <i32>:5 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %5, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.swap.i32( i32* %val, i32 7 )<span class="Apple-tab-span" style="white-space:pre">          </span>; <i32>:6 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %6, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.cmp.swap.i32( i32* %val, i32 4, i32 1976 )<span class="Apple-tab-span" style="white-space:pre">            </span>; <i32>:7 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %7, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.and.i32( i32* %val, i32 9 )<span class="Apple-tab-span" style="white-space:pre">              </span>; <i32>:8 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %8, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.or.i32( i32* %val, i32 10 )<span class="Apple-tab-span" style="white-space:pre">              </span>; <i32>:9 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>store i32 %9, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>call i32 @llvm.atomic.load.xor.i32( i32* %val, i32 11 )<span class="Apple-tab-span" style="white-space:pre">             </span>; <i32>:10 [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>store i32 %10, i32* %old</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>%tmp = load i32* %old<span class="Apple-tab-span" style="white-space:pre">               </span>; <i32> [#uses=1]</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>ret i32 %tmp</div><div>}</div><div><br></div><div>declare i32 @llvm.atomic.load.add.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.sub.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.min.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.max.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.umin.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.umax.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.swap.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.cmp.swap.i32(i32*, i32, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.and.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.or.i32(i32*, i32) nounwind </div><div><br></div><div>declare i32 @llvm.atomic.load.xor.i32(i32*, i32) nounwind </div><div><br></div></div></body></html>