region_model_manager *sval_mgr)
{
auto_vec<const binding_key *> to_remove;
+ auto_vec<std::pair<const binding_key *, tree> > to_make_unknown;
for (auto iter : m_map)
{
const binding_key *iter_key = iter.first;
}
const svalue *iter_sval = iter.second;
if (iter_sval->involves_p (sval))
- {
- const svalue *new_sval
- = sval_mgr->get_or_create_unknown_svalue (iter_sval->get_type ());
- m_map.put (iter_key, new_sval);
- }
+ to_make_unknown.safe_push (std::make_pair(iter_key,
+ iter_sval->get_type ()));
}
for (auto iter : to_remove)
{
m_map.remove (iter);
m_touched = true;
}
+ for (auto iter : to_make_unknown)
+ {
+ const svalue *new_sval
+ = sval_mgr->get_or_create_unknown_svalue (iter.second);
+ m_map.put (iter.first, new_sval);
+ }
}
/* Get any SVAL bound to REG within this cluster via kind KIND,
--- /dev/null
+// { dg-do compile { target c++11 } }
+
+double
+sqrt ();
+
+namespace std {
+ class gamma_distribution {
+ public:
+ gamma_distribution () : _M_param () {}
+
+ private:
+ struct param_type {
+ param_type () : _M_beta () { _M_a2 = 1 / ::sqrt (); }
+ double _M_beta, _M_a2;
+ };
+ param_type _M_param;
+ int _M_saved_available, _M_saved = 0, _M_param0 = 0;
+ };
+
+ struct fisher_f_distribution {
+ gamma_distribution _M_gd_x, _M_gd_y;
+ };
+}
+
+int
+main ()
+{
+ std::fisher_f_distribution d;
+
+ return 0;
+}