Workaround issues exposed by gcc-4.8
authorEddie Hung <eddie@fpgeh.com>
Fri, 21 Jun 2019 21:23:39 +0000 (14:23 -0700)
committerEddie Hung <eddie@fpgeh.com>
Fri, 21 Jun 2019 21:23:39 +0000 (14:23 -0700)
frontends/aiger/aigerparse.cc

index d50a38b7a2152d952fcfe2e2e8a9b2da86a44930..5f236992d916f0862e3470ca350a8619b750d74f 100644 (file)
@@ -114,13 +114,20 @@ struct ConstEvalAig
 
                RTLIL::Cell *cell = sig2driver.at(output);
                RTLIL::SigBit sig_a = cell->getPort("\\A");
+               sig2deps[sig_a].reserve(sig2deps[sig_a].size() + sig2deps[output].size()); // Reserve so that any invalidation
+                                                                                          // that may occur does so here, and
+                                                                                          // not mid insertion (below)
                sig2deps[sig_a].insert(sig2deps[output].begin(), sig2deps[output].end());
                if (!inputs.count(sig_a))
                        compute_deps(sig_a, inputs);
 
                if (cell->type == "$_AND_") {
                        RTLIL::SigSpec sig_b = cell->getPort("\\B");
+                       sig2deps[sig_b].reserve(sig2deps[sig_b].size() + sig2deps[output].size()); // Reserve so that any invalidation
+                                                                                                  // that may occur does so here, and
+                                                                                                  // not mid insertion (below)
                        sig2deps[sig_b].insert(sig2deps[output].begin(), sig2deps[output].end());
+
                        if (!inputs.count(sig_b))
                                compute_deps(sig_b, inputs);
                }