aboutsummaryrefslogtreecommitdiff
path: root/gcc/analyzer/exploded-graph.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/analyzer/exploded-graph.h')
-rw-r--r--gcc/analyzer/exploded-graph.h24
1 files changed, 21 insertions, 3 deletions
diff --git a/gcc/analyzer/exploded-graph.h b/gcc/analyzer/exploded-graph.h
index b9a5618..b3e89d4 100644
--- a/gcc/analyzer/exploded-graph.h
+++ b/gcc/analyzer/exploded-graph.h
@@ -179,6 +179,7 @@ class exploded_node : public dnode<eg_traits>
hashval_t hash () const { return m_ps.hash (); }
+ const char * get_dot_fillcolor () const;
void dump_dot (graphviz_out *gv, const dump_args_t &args)
const FINAL OVERRIDE;
void dump_dot_id (pretty_printer *pp) const;
@@ -269,8 +270,6 @@ class exploded_node : public dnode<eg_traits>
private:
DISABLE_COPY_AND_ASSIGN (exploded_node);
- const char * get_dot_fillcolor () const;
-
/* The <program_point, program_state> pair. This is const, as it
is immutable once the exploded_node has been created. */
const point_and_state m_ps;
@@ -857,11 +856,30 @@ public:
void dump (FILE *fp) const;
void dump () const;
- bool feasible_p (logger *logger) const;
+ bool feasible_p (logger *logger, feasibility_problem **out) const;
auto_vec<const exploded_edge *> m_edges;
};
+/* A reason why a particular exploded_path is infeasible. */
+
+class feasibility_problem
+{
+public:
+ feasibility_problem (unsigned eedge_idx,
+ const region_model &model,
+ const exploded_edge &eedge,
+ const gimple *last_stmt)
+ : m_eedge_idx (eedge_idx), m_model (model), m_eedge (eedge),
+ m_last_stmt (last_stmt)
+ {}
+
+ unsigned m_eedge_idx;
+ region_model m_model;
+ const exploded_edge &m_eedge;
+ const gimple *m_last_stmt;
+};
+
/* Finding the shortest exploded_path within an exploded_graph. */
typedef shortest_paths<eg_traits, exploded_path> shortest_exploded_paths;