1 | // RUN: %clang_cc1 -triple i386-unknown-unknown -O3 -emit-llvm %s -o - | FileCheck %s |
---|---|
2 | // CHECK: ret i32 9 |
3 | |
4 | struct s0 { |
5 | int *var; |
6 | int addend; |
7 | }; |
8 | |
9 | static void f0(struct s0 *p) { |
10 | *p->var += p->addend; |
11 | } |
12 | |
13 | int f1(void) { |
14 | int var = 0; |
15 | |
16 | { |
17 | struct s0 x __attribute__((cleanup(f0))) = { &var, 2 }; |
18 | struct s0 y __attribute__((cleanup(f0))) = { &var, 3 }; |
19 | { |
20 | struct s0 y __attribute__((cleanup(f0))) = { &var, 4 }; |
21 | } |
22 | } |
23 | |
24 | return var; |
25 | } |
26 |