2 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
3 // See https://llvm.org/LICENSE.txt for license information.
4 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 // -*- mode:C; c-basic-offset:4; tab-width:4; intent-tabs-mode:nil; -*-
18 int main (int argc
, const char * argv
[]) {
21 BobTheStruct (^copyStruct
)(BobTheStruct
);
24 memset(&inny
, 0xA5, sizeof(inny
));
25 memset(&outty
, 0x2A, sizeof(outty
));
28 inny
.ps
[i
] = i
* i
* i
;
29 inny
.qs
[i
] = -i
* i
* i
;
32 copyStruct
= ^(BobTheStruct aBigStruct
){ return aBigStruct
; }; // pass-by-value intrinsically copies the argument
34 outty
= copyStruct(inny
);
36 if ( &inny
== &outty
) {
37 printf("%s: struct wasn't copied.", argv
[0]);
41 if ( (inny
.ps
[i
] != outty
.ps
[i
]) || (inny
.qs
[i
] != outty
.qs
[i
]) ) {
42 printf("%s: struct contents did not match.", argv
[0]);
47 printf("%s: success\n", argv
[0]);