[llvm-commits] [test-suite] r146415 - in /test-suite/trunk/SingleSource/UnitTests: Makefile ms_struct-bitfield-1.c

Eli Friedman eli.friedman at gmail.com
Mon Dec 12 13:48:48 PST 2011


On Mon, Dec 12, 2011 at 1:31 PM, Fariborz Jahanian <fjahanian at apple.com> wrote:
> Author: fjahanian
> Date: Mon Dec 12 15:31:39 2011
> New Revision: 146415
>
> URL: http://llvm.org/viewvc/llvm-project?rev=146415&view=rev
> Log:
> Test for r146414 checked in clang.
> This is for // rdar://10513599
>
> Added:
>    test-suite/trunk/SingleSource/UnitTests/ms_struct-bitfield-1.c
> Modified:
>    test-suite/trunk/SingleSource/UnitTests/Makefile
>
> Modified: test-suite/trunk/SingleSource/UnitTests/Makefile
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/Makefile?rev=146415&r1=146414&r2=146415&view=diff
> ==============================================================================
> --- test-suite/trunk/SingleSource/UnitTests/Makefile (original)
> +++ test-suite/trunk/SingleSource/UnitTests/Makefile Mon Dec 12 15:31:39 2011
> @@ -29,7 +29,7 @@
>
>  # The ms_struct tests only make sense on x86_64.
>  ifneq ($(ARCH),x86_64)
> -PROGRAMS_TO_SKIP += ms_struct-bitfield-init-1 ms_struct-bitfield-init ms_struct-bitfield ms_struct_pack_layout-1 ms_struct_pack_layout
> +PROGRAMS_TO_SKIP += ms_struct-bitfield-init-1 ms_struct-bitfield-init ms_struct-bitfield ms_struct_pack_layout-1 ms_struct_pack_layout ms_struct-bitfield-1
>  endif
>
>  PROGRAM_REQUIRED_TO_EXIT_OK := 1
>
> Added: test-suite/trunk/SingleSource/UnitTests/ms_struct-bitfield-1.c
> URL: http://llvm.org/viewvc/llvm-project/test-suite/trunk/SingleSource/UnitTests/ms_struct-bitfield-1.c?rev=146415&view=auto
> ==============================================================================
> --- test-suite/trunk/SingleSource/UnitTests/ms_struct-bitfield-1.c (added)
> +++ test-suite/trunk/SingleSource/UnitTests/ms_struct-bitfield-1.c Mon Dec 12 15:31:39 2011
> @@ -0,0 +1,36 @@
> +#include <stddef.h>
> +extern void abort();
> +
> +#pragma ms_struct on
> +
> +typedef struct
> +{
> +void *pv;
> +int l;
> +} Foo;
> +
> +typedef struct
> +{
> +void *pv1;
> +Foo foo;
> +unsigned short fInited : 1;
> +void *pv2;
> +} PackOddity;
> +
> +#pragma ms_struct off
> +
> +int main(int argc, char *argv[])
> +{
> +#pragma unused(argc, argv)
> +       int sizeof_packoddity = sizeof(PackOddity);
> +       int offsetof_foo = offsetof(PackOddity, foo);
> +       int offsetof_pv2 = offsetof(PackOddity, pv2);
> +        if (sizeof_packoddity != 40)
> +         abort();
> +        if (offsetof_foo != 8)
> +          abort();
> +        if (offsetof_pv2 != 32)
> +          abort();
> +       return 0;
> +}
> +

What is this testing that can't be trivially tested in
test/Sema/pragma-ms_struct.c?

-Eli




More information about the llvm-commits mailing list