From 4af33c260559bb3715da2c84be637156473d731c Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Tue, 16 Jan 2007 18:40:08 +0000 Subject: [PATCH] Add a test case for bit accurate integer types in llvm-gcc. This is XFAILed for now until llvm-gcc changes are committed. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33261 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CFrontend/bit-accurate-int.c | 35 +++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 test/CFrontend/bit-accurate-int.c diff --git a/test/CFrontend/bit-accurate-int.c b/test/CFrontend/bit-accurate-int.c new file mode 100644 index 00000000000..a2138bc7d26 --- /dev/null +++ b/test/CFrontend/bit-accurate-int.c @@ -0,0 +1,35 @@ +// RUN: %llvmgcc -S %s -o - /dev/null +// XFAIL: * + +#define ATTR_BITS(N) __attribute__((bitwidth(N))) + +typedef int ATTR_BITS( 4) My04BitInt; +typedef int ATTR_BITS(16) My16BitInt; +typedef int ATTR_BITS(17) My17BitInt; +typedef int ATTR_BITS(37) My37BitInt; +typedef int ATTR_BITS(65) My65BitInt; + +struct MyStruct { + My04BitInt i4Field; + short ATTR_BITS(12) i12Field; + long ATTR_BITS(17) i17Field; + My37BitInt i37Field; +}; + +My37BitInt doit( short ATTR_BITS(23) num) { + My17BitInt i; + struct MyStruct strct; + int bitsize1 = sizeof(My17BitInt); + int __attribute__((bitwidth(9))) j; + int bitsize2 = sizeof(j); + int result = bitsize1 + bitsize2; + strct.i17Field = result; + result += sizeof(struct MyStruct); + return result; +} + +int +main ( int argc, char** argv) +{ + return (int ATTR_BITS(32)) doit((short ATTR_BITS(23))argc); +}