Skip to content

Properly report multiple root causes of wildness of the same pointer #298

Open
@mattmccutchen-cci

Description

@mattmccutchen-cci

My recollection of the discussion at the 2020-10-20 status meeting (with the usual caveat that I'm still not solid on the subject matter):

A pointer may have multiple immediate root causes of wildness; the example mentioned was a void * in an extern. 3C should be able to report all of them. Currently 3C cannot because the pointer gets a constraint edge from the global "wild" node and each constraint edge can have only one associated reason. I guess one reason per edge has been sufficient for all other edges, but not for root-cause-of-wildness edges. Possible solutions:

  1. Allow every edge to hold multiple reasons. May complicate all code that handles edge reasons and hurt performance.
  2. Use additional nodes as needed to represent root causes of wildness so we have a separate edge for each reason.

Since solution 2 was my idea, Mike suggested that I might eventually implement it as my first subject-matter contribution. However, someone who knows 3C better than I do should think for a moment if any other case is likely to arise in which we might want multiple reasons on a single constraint edge and, if so, whether we'd be satisfied to use extra nodes for that too.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions