diff options
author | Chris Lattner <sabre@nondot.org> | 2002-07-29 19:39:52 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-07-29 19:39:52 +0000 |
commit | 2c04779ba73babc2872748e7edd2ba59e13e8d8c (patch) | |
tree | 720fbe7a1acd29c3462d6cb5b5d878a00a85ca4c | |
parent | 16470ec75b44ce36c98308a4ca908c2e33856b97 (diff) | |
download | external_llvm-2c04779ba73babc2872748e7edd2ba59e13e8d8c.zip external_llvm-2c04779ba73babc2872748e7edd2ba59e13e8d8c.tar.gz external_llvm-2c04779ba73babc2872748e7edd2ba59e13e8d8c.tar.bz2 |
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@3120 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | test/CFrontend/2002-07-29-Casts.c | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/test/CFrontend/2002-07-29-Casts.c b/test/CFrontend/2002-07-29-Casts.c new file mode 100644 index 0000000..bb45571 --- /dev/null +++ b/test/CFrontend/2002-07-29-Casts.c @@ -0,0 +1,84 @@ +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> + +int +main(int argc, char** argv) +{ + char c1; + short s1, ssf1, ssd1; + uint8_t ubs0; + int8_t bs0; + unsigned char ubc0, uc2; + unsigned short us2, usf1, usd1; + int ic3, is3, sif1, sid1; + uint uic4, uis4, uif1, uid1; + long slf1, sld1; + ulong ulf1, uld1; + float f1; + double d1; + + /* Test integer to integer conversions */ + + c1 = (char) (argc >= 2)? atoi(argv[1]) : 0xff64; /* 100 = 'd' */ + s1 = (short) (argc >= 3)? atoi(argv[2]) : -769; /* 0xf7ff = -769 */ + + ubc0 = (unsigned char) c1; /* 100 = 'd' */ + ubs0 = (uint8_t) s1; /* 0xff = 255 */ + bs0 = (int8_t) s1; /* 0xff = -1 */ + + uc2 = (unsigned char) c1; /* 100 = 'd' */ + us2 = (unsigned short) s1; /* 0xf7ff = 64767 */ + + ic3 = (int) c1; /* 100 = 'd' */ + is3 = (int) s1; /* 0xfffff7ff = -769 */ + + uic4 = (unsigned int) c1; /* 100 = 'd' */ + uis4 = (unsigned int) s1; /* 0xfffff7ff = 4294966527 */ + + printf("ubc0 = '%c'\n", ubc0); + printf("ubs0 = %u\n", ubs0); + printf("bs0 = %d\n", bs0); + printf("c1 = '%c'\n", c1); + printf("s1 = %d\n", s1); + printf("uc2 = '%c'\n", uc2); + printf("us2 = %u\n", us2); + printf("ic3 = '%c'\n", ic3); + printf("is3 = %d\n", is3); + printf("uic4 = '%c'\n", uic4); + printf("uis4 = %u\n", uis4); + + /* Test floating-point to integer conversions */ + f1 = (float) (argc >= 4)? atof(argv[3]) : 1.0; + d1 = (argc >= 5)? atof(argv[4]) : 2.0; + + usf1 = (unsigned short) f1; + usd1 = (unsigned short) d1; + uif1 = (unsigned int) f1; + uid1 = (unsigned int) d1; + ulf1 = (unsigned long) f1; + uld1 = (unsigned long) d1; + + ssf1 = (short) f1; + ssd1 = (short) d1; + sif1 = (int) f1; + sid1 = (int) d1; + slf1 = (long) f1; + sld1 = (long) d1; + + printf("usf1 = %u\n", usf1); + printf("usd1 = %u\n", usd1); + printf("uif1 = %u\n", uif1); + printf("uid1 = %u\n", uid1); + printf("ulf1 = %u\n", ulf1); + printf("uld1 = %u\n", uld1); + + printf("ssf1 = %d\n", ssf1); + printf("ssd1 = %d\n", ssd1); + printf("sif1 = %d\n", sif1); + printf("sid1 = %d\n", sid1); + printf("slf1 = %d\n", slf1); + printf("sld1 = %d\n", sld1); + + return 0; +} |