Mike Stump | 99459b6 | 2009-05-21 21:05:15 +0000 | [diff] [blame] | 1 | // RUN: clang-cc -fblocks -triple x86_64-apple-darwin10 -emit-llvm -o %t %s && |
| 2 | // RUN: grep '%call = call i32 (...)\* @rhs()' %t | count 1 && |
Mike Stump | cc0442f | 2009-05-22 19:07:20 +0000 | [diff] [blame] | 3 | // If this fails, see about sliding %4, %5, %6 and %7... |
Mike Stump | 99459b6 | 2009-05-21 21:05:15 +0000 | [diff] [blame] | 4 | // RUN: grep '%forwarding1 = getelementptr %0\* %i, i32 0, i32 1' %t | count 1 && |
| 5 | // RUN: grep '%4 = bitcast i8\*\* %forwarding1 to %0\*\*' %t | count 1 && |
Mike Stump | cc0442f | 2009-05-22 19:07:20 +0000 | [diff] [blame] | 6 | // RUN: grep '%5 = load %0\*\* %4' %t | count 1 && |
| 7 | // RUN: grep '%call2 = call i32 (...)\* @rhs()' %t | count 1 && |
| 8 | // RUN: grep '%forwarding3 = getelementptr %0\* %i, i32 0, i32 1' %t | count 1 && |
| 9 | // RUN: grep '%6 = bitcast i8\*\* %forwarding3 to %0\*\*' %t | count 1 && |
| 10 | // RUN: grep '%7 = load %0\*\* %6' %t | count 1 |
Mike Stump | 99459b6 | 2009-05-21 21:05:15 +0000 | [diff] [blame] | 11 | |
| 12 | int rhs(); |
| 13 | |
| 14 | void foo() { |
| 15 | __block int i; |
| 16 | i = rhs(); |
Mike Stump | cc0442f | 2009-05-22 19:07:20 +0000 | [diff] [blame] | 17 | i += rhs(); |
Mike Stump | 99459b6 | 2009-05-21 21:05:15 +0000 | [diff] [blame] | 18 | } |