aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/validation
diff options
authorLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2019-09-29 17:08:10 +0200
committerLuc Van Oostenryck <luc.vanoostenryck@gmail.com>2019-09-30 03:44:50 +0200
commit0ca5ee15e9836fca976479fef8d90594d1e97adb (patch)
tree40aeffa8be7e45c377546786a4de6c859ca121df /validation
parentf4a90f9a6f569904165d48464615bf60d188fba4 (diff)
parent2c80708a7c053671c344fc23e561621bdbcbae4d (diff)
downloadsparse-dev-0ca5ee15e9836fca976479fef8d90594d1e97adb.tar.gz
Merge branch 'fix-bad-linear' into tip
Expressions without a valid type should never be linearized since they have no (valid) type and haven't been expanded. Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation')
-rw-r--r--validation/eval-bad-assign1.c14
-rw-r--r--validation/eval-bad-assign2.c22
2 files changed, 36 insertions, 0 deletions
diff --git a/validation/eval-bad-assign1.c b/validation/eval-bad-assign1.c
new file mode 100644
index 00000000..57138c7a
--- /dev/null
+++ b/validation/eval-bad-assign1.c
@@ -0,0 +1,14 @@
+static void kos(int *r, int a)
+{
+ r = ({ __builtin_types_compatible_p(int, int); });
+}
+
+/*
+ * check-name: eval-bad-assign1
+ *
+ * check-error-start
+eval-bad-assign1.c:3:11: warning: incorrect type in assignment (different base types)
+eval-bad-assign1.c:3:11: expected int *r
+eval-bad-assign1.c:3:11: got int
+ * check-error-end
+ */
diff --git a/validation/eval-bad-assign2.c b/validation/eval-bad-assign2.c
new file mode 100644
index 00000000..4d08cb90
--- /dev/null
+++ b/validation/eval-bad-assign2.c
@@ -0,0 +1,22 @@
+struct s {
+ char c[1];
+};
+
+struct s fun(void);
+
+
+static void foo(void)
+{
+ char c[1];
+ c = fun().c;
+}
+
+/*
+ * check-name: eval-bad-assign2
+ *
+ * check-error-start
+eval-bad-assign2.c:11:11: warning: incorrect type in assignment (invalid types)
+eval-bad-assign2.c:11:11: expected char c[1]
+eval-bad-assign2.c:11:11: got char *
+ * check-error-end
+ */