| 857 | static bool is_dangling(instruction_ref ins) { return not is_global(ins) and is_borrowed(ins); } |
| 858 | |
| 859 | instruction_ref module::find_dangling_reference() const |
| 860 | { |
| 861 | auto last = std::prev(end()); |
| 862 | if(last->name() == "@return") |
| 863 | { |
| 864 | auto dangling = std::find_if( |
| 865 | last->inputs().begin(), last->inputs().end(), [](auto x) { return is_dangling(x); }); |
| 866 | if(dangling != last->inputs().end()) |
| 867 | return *dangling; |
| 868 | } |
| 869 | else if(is_dangling(last)) |
| 870 | { |
| 871 | return last; |
| 872 | } |
| 873 | return end(); |
| 874 | } |
| 875 | |
| 876 | void module::finalize(std::vector<context>& contexts) |
| 877 | { |