| 79 | } |
| 80 | |
| 81 | bool |
| 82 | StatementReturn::visit_facts(vector<const Fact*>& inputs, CGContext& cg_context) const |
| 83 | { |
| 84 | if (CGOptions::no_return_dead_ptr()) { |
| 85 | const Variable* v = var.get_var(); |
| 86 | int indirection = var.get_indirect_level(); |
| 87 | const Block* b = cg_context.curr_blk; |
| 88 | assert(b); |
| 89 | if (FactPointTo::is_pointing_to_locals(v, b, indirection, inputs)) { |
| 90 | return false; |
| 91 | } |
| 92 | } |
| 93 | |
| 94 | if (!var.visit_facts(inputs, cg_context)) { |
| 95 | return false; |
| 96 | } |
| 97 | FactMgr::update_fact_for_return(this, inputs); |
| 98 | FactMgr* fm = get_fact_mgr(&cg_context); |
| 99 | fm->map_stm_effect[this] = cg_context.get_effect_stm(); |
| 100 | return true; |
| 101 | } |
| 102 | |
| 103 | /* |
| 104 | * |
nothing calls this directly
no test coverage detected