aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation/backend/cast.c
diff options
authorPekka Enberg <penberg@kernel.org>2011-08-30 19:46:29 +0300
committerPekka Enberg <penberg@kernel.org>2011-08-30 20:29:10 +0300
commitc19ad437aee130bfde2ac41494d3a46900670dc6 (patch)
tree24786de5a073aa960e0611b85370cf7065c6b7ac /validation/backend/cast.c
parent014de231b87ad9ba3f62b21abd4a591de742a5f4 (diff)
downloadsparse-dev-c19ad437aee130bfde2ac41494d3a46900670dc6.tar.gz
sparse, llvm: Fix code generation for casts
Signed-off-by: Pekka Enberg <penberg@kernel.org>
Diffstat (limited to 'validation/backend/cast.c')
-rw-r--r--validation/backend/cast.c47
1 files changed, 47 insertions, 0 deletions
diff --git a/validation/backend/cast.c b/validation/backend/cast.c
new file mode 100644
index 00000000..3e677446
--- /dev/null
+++ b/validation/backend/cast.c
@@ -0,0 +1,47 @@
+typedef unsigned char uchar;
+typedef unsigned short ushort;
+typedef unsigned int uint;
+typedef unsigned long ulong;
+typedef long long longlong;
+typedef unsigned long long ulonglong;
+
+#define DEFINE_CAST(from, to) \
+ static to from##2##to(from x) { \
+ return x; \
+ }
+
+#define DEFINE_CASTS(from) \
+ DEFINE_CAST(from, char) \
+ DEFINE_CAST(from, uchar) \
+ DEFINE_CAST(from, short) \
+ DEFINE_CAST(from, ushort) \
+ DEFINE_CAST(from, int) \
+ DEFINE_CAST(from, uint) \
+ DEFINE_CAST(from, long) \
+ DEFINE_CAST(from, ulong) \
+ DEFINE_CAST(from, longlong) \
+ DEFINE_CAST(from, ulonglong) \
+/*
+ DEFINE_CAST(from, float) \
+ DEFINE_CAST(from, double)
+*/
+
+DEFINE_CASTS(char)
+DEFINE_CASTS(uchar)
+DEFINE_CASTS(short)
+DEFINE_CASTS(ushort)
+DEFINE_CASTS(int)
+DEFINE_CASTS(uint)
+DEFINE_CASTS(long)
+DEFINE_CASTS(ulong)
+DEFINE_CASTS(longlong)
+DEFINE_CASTS(ulonglong)
+/*
+DEFINE_CASTS(float)
+DEFINE_CASTS(double)
+*/
+
+/*
+ * check-name: Cast code generation
+ * check-command: ./sparsec -c $file -o tmp.o
+ */