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