Beispiel #1
0
 bool visit_deletename(BST_DeleteName* node) override {
     if (node->vreg < 0 || node->vreg >= analysis->cfg->getVRegInfo().getNumOfUserVisibleVRegs())
         return true;
     _doLoad(node->vreg);
     _doStore(node->vreg);
     return true;
 }
Beispiel #2
0
 bool visit_vreg(int* vreg, bool is_dst) override {
     if (*vreg >= 0) {
         if (is_dst)
             _doStore(*vreg);
         else
             _doLoad(*vreg);
     }
     return true;
 }
Beispiel #3
0
 bool visit_name(AST_Name* node) {
     if (node->ctx_type == AST_TYPE::Load)
         _doLoad(node->id);
     else if (node->ctx_type == AST_TYPE::Store)
         _doStore(node->id);
     else {
         assert(0);
         abort();
     }
     return true;
 }
Beispiel #4
0
 bool visit_name(AST_Name* node) {
     if (node->ctx_type == AST_TYPE::Load)
         _doLoad(node->id, node);
     else if (node->ctx_type == AST_TYPE::Store || node->ctx_type == AST_TYPE::Del
              || node->ctx_type == AST_TYPE::Param)
         _doStore(node->id);
     else {
         ASSERT(0, "%d", node->ctx_type);
         abort();
     }
     return true;
 }