Chris Lattner | 2d17506 | 2009-10-13 17:39:29 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -basicaa -gvn -instcombine -S | grep {ret i32 0} |
Owen Anderson | fe9388c | 2009-02-04 05:16:46 +0000 | [diff] [blame] | 2 | |
| 3 | @flag0 = internal global i32 zeroinitializer |
| 4 | @turn = internal global i32 zeroinitializer |
| 5 | |
| 6 | |
| 7 | define i32 @main() { |
| 8 | %a = load i32* @flag0 |
Chris Lattner | 2d17506 | 2009-10-13 17:39:29 +0000 | [diff] [blame] | 9 | %b = tail call i32 @llvm.atomic.swap.i32.p0i32(i32* @turn, i32 1) |
Owen Anderson | fe9388c | 2009-02-04 05:16:46 +0000 | [diff] [blame] | 10 | %c = load i32* @flag0 |
Chris Lattner | 2d17506 | 2009-10-13 17:39:29 +0000 | [diff] [blame] | 11 | %d = sub i32 %a, %c |
| 12 | ret i32 %d |
Owen Anderson | fe9388c | 2009-02-04 05:16:46 +0000 | [diff] [blame] | 13 | } |
| 14 | |
Chris Lattner | d207558 | 2010-04-07 22:53:17 +0000 | [diff] [blame^] | 15 | declare i32 @llvm.atomic.swap.i32.p0i32(i32*, i32) nounwind |