Hi Mikael,

+
+/* Mark the variable of an expression in a vardef context as
+   set and mark everything in the references as used.  */
+
+void
+gfc_expr_set_at (gfc_expr *expr, locus *loc, enum value_set how_set)
+{
+  enum value_used prev_used;
+  gfc_symbol *sym;
+  locus prev_loc;
+
+  if (!expr)
+    return;
+
+  if (expr->expr_type != EXPR_VARIABLE)
+    return;
Don't you need to call gfc_value_used_expr in all cases, including for non-variables?  If I'm understanding well, we are in invalid code territory here, but avoiding a cascade of uninitialized diagnostics remains worth pursuing?

Without this check, I got a few ICEs during development of the patch.
Test testsuite has a lot of invalid code (which it tests for :-)

But it could be an option to not issue the warnings if an error
has already occurred.  What do you (and others) think?

Best regards

        Thomas

Reply via email to