+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93379
+ * region-model.cc (region_model::update_for_return_superedge):
+ Move check for null result so that it also guards setting the
+ lhs.
+
2020-01-31 David Malcolm <dmalcolm@redhat.com>
PR analyzer/93438
svalue_id result_sid = pop_frame (true, &stats, ctxt);
// TODO: do something with the stats?
+ if (result_sid.null_p ())
+ return;
+
/* Set the result of the call, within the caller frame. */
const gcall *call_stmt = return_edge.get_call_stmt ();
tree lhs = gimple_call_lhs (call_stmt);
if (lhs)
set_value (get_lvalue (lhs, ctxt), result_sid, ctxt);
- else if (!result_sid.null_p ())
+ else
{
/* This could be a leak; try purging again, but this time,
don't special-case the result_sid. */
+2020-01-31 David Malcolm <dmalcolm@redhat.com>
+
+ PR analyzer/93379
+ * gcc.dg/analyzer/torture/pr93379-2.c: New test.
+ * gcc.dg/analyzer/torture/pr93379.c: New test.
+
2020-01-31 David Malcolm <dmalcolm@redhat.com>
PR analyzer/93438
--- /dev/null
+/* { dg-do compile } */
+/* { dg-additional-options "-Wno-implicit-function-declaration" } */
+
+void foo (void)
+{
+ int i = actually_returns_void ();
+}
+
+void actually_returns_void (void) /* { dg-warning "conflicting types" } */
+{
+}