diff options
author | Anton Korobeynikov <asl@math.spbu.ru> | 2008-05-29 19:17:15 +0000 |
---|---|---|
committer | Anton Korobeynikov <asl@math.spbu.ru> | 2008-05-29 19:17:15 +0000 |
commit | e6ccd113b9ad7c40aa5f71e526537bbeac33d80b (patch) | |
tree | 9059e4d73006c90d725ee560da049a3ff6b66691 /test/FrontendC/2002-07-29-Casts.c | |
parent | 885f9d99645c58cffc35e6e4d4d3c9baa4cb0f15 (diff) | |
download | external_llvm-e6ccd113b9ad7c40aa5f71e526537bbeac33d80b.zip external_llvm-e6ccd113b9ad7c40aa5f71e526537bbeac33d80b.tar.gz external_llvm-e6ccd113b9ad7c40aa5f71e526537bbeac33d80b.tar.bz2 |
For PR1338: Rename test dirs
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/FrontendC/2002-07-29-Casts.c')
-rw-r--r-- | test/FrontendC/2002-07-29-Casts.c | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/test/FrontendC/2002-07-29-Casts.c b/test/FrontendC/2002-07-29-Casts.c new file mode 100644 index 0000000..6794e80 --- /dev/null +++ b/test/FrontendC/2002-07-29-Casts.c @@ -0,0 +1,86 @@ +// RUN: %llvmgcc -S %s -o - | llvm-as -f -o /dev/null + +#include <stdlib.h> +#include <stdio.h> +#include <sys/types.h> + +int +main(int argc, char** argv) +{ + char c1; + short s1, ssf1, ssd1; + unsigned char ubs0; + signed char bs0; + unsigned char ubc0, uc2; + unsigned short us2, usf1, usd1; + int ic3, is3, sif1, sid1; + unsigned int uic4, uis4, uif1, uid1; + long slf1, sld1; + unsigned long 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 = (unsigned char) s1; /* 0xff = 255 */ + bs0 = (signed char) 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; +} |