summaryrefslogtreecommitdiff
path: root/support/valdiag/tests/overflow.c
diff options
context:
space:
mode:
authorXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
committerXavier ASUS <xavi92psx@gmail.com>2019-10-18 00:31:54 +0200
commit268a53de823a6750d6256ee1fb1e7707b4b45740 (patch)
tree42c1799a9a82b2f7d9790ee9fe181d72a7274751 /support/valdiag/tests/overflow.c
downloadsdcc-gas-268a53de823a6750d6256ee1fb1e7707b4b45740.tar.gz
sdcc-3.9.0 fork implementing GNU assembler syntax
This fork aims to provide better support for stm8-binutils
Diffstat (limited to 'support/valdiag/tests/overflow.c')
-rw-r--r--support/valdiag/tests/overflow.c61
1 files changed, 61 insertions, 0 deletions
diff --git a/support/valdiag/tests/overflow.c b/support/valdiag/tests/overflow.c
new file mode 100644
index 0000000..39ecbd3
--- /dev/null
+++ b/support/valdiag/tests/overflow.c
@@ -0,0 +1,61 @@
+volatile char c;
+volatile unsigned char uc;
+volatile int i;
+volatile unsigned u;
+volatile long l;
+volatile unsigned long ul;
+
+#ifdef TEST0
+void foo(void)
+{
+ i = 10000 * 10000; /* WARNING(SDCC) */
+ i = 0x4000 * 0x4000; /* WARNING(SDCC) */
+}
+#endif
+
+#ifdef TEST1
+void foo(void)
+{
+ uc = 1 << 7; /* IGNORE(SDCC) */ // Gives a false warning (bug #2733)
+
+ i = c << 10;
+ i = 1 << 10;
+ i = c << 16; /* WARNING(SDCC) */
+ i = 1 << 16; /* WARNING(SDCC) */
+ i = uc << 16; /* WARNING(SDCC) */
+
+ l = l << 31;
+ l = l << 32; /* WARNING(SDCC) */ /* IGNORE(GCC) */
+ l = ul << 32; /* WARNING(SDCC) */ /* IGNORE(GCC) */
+}
+#endif
+
+
+#ifdef TEST2
+void foo(void)
+{
+ i = 1 >> 40; /* IGNORE(SDCC) */ /* WARNING(GCC) */ // Warning missing (bug #2734)
+
+ i = uc >> 7;
+ i = 1 >> 7;
+ i = uc >> 8; /* WARNING(SDCC) */
+#if 0
+ i = 1 >> 8; /* WARN___(SDCC) */
+#endif
+
+#if 0
+ i = i >> 40; /* WARN___(GCC) */
+#endif
+
+ i = u >> 15;
+ i = u >> 16; /* WARNING(SDCC) */
+
+#if 0
+ i = l >> 40; /* WARN___(GCC) */
+#endif
+
+ i = ul >> 31;
+ i = ul >> 32; /* WARNING(SDCC) */ /* IGNORE(GCC) */
+}
+#endif
+