1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - | FileCheck %s 2*67e74705SXin Li 3*67e74705SXin Li int c[1][3*2]; 4*67e74705SXin Li // CHECK: @{{.+}} = {{.*}} global [1 x [6 x {{i[0-9]+}}]] zeroinitializer 5*67e74705SXin Li 6*67e74705SXin Li // CHECK-LABEL: @f f(int * const m,int (** v)[* m * 2])7*67e74705SXin Liint f(int * const m, int (**v)[*m * 2]) 8*67e74705SXin Li { 9*67e74705SXin Li return &(c[0][*m]) == &((*v)[0][*m]); 10*67e74705SXin Li // CHECK: icmp 11*67e74705SXin Li // CHECK: ret i{{[0-9]+}} 12*67e74705SXin Li } 13*67e74705SXin Li 14*67e74705SXin Li // CHECK-LABEL: @test test(int n,int (* (* fn)(void))[n])15*67e74705SXin Liint test(int n, int (*(*fn)(void))[n]) { 16*67e74705SXin Li return (*fn())[0]; 17*67e74705SXin Li } 18*67e74705SXin Li 19*67e74705SXin Li // CHECK-LABEL: @main main()20*67e74705SXin Liint main() 21*67e74705SXin Li { 22*67e74705SXin Li int m = 3; 23*67e74705SXin Li int (*d)[3*2] = c; 24*67e74705SXin Li int (*fn[m])(void); 25*67e74705SXin Li return f(&m, &d) + test(m, &fn); 26*67e74705SXin Li 27*67e74705SXin Li // CHECK: call {{.+}} @f( 28*67e74705SXin Li // CHECK: ret i{{[0-9]+}} 29*67e74705SXin Li } 30*67e74705SXin Li 31