* */
| 217 | * |
| 218 | */ |
| 219 | void |
| 220 | Effect::add_external_effect(const Effect &e) |
| 221 | { |
| 222 | if (this == &e) { |
| 223 | return; |
| 224 | } |
| 225 | |
| 226 | vector<Variable *>::size_type len; |
| 227 | vector<Variable *>::size_type i; |
| 228 | |
| 229 | len = e.read_vars.size(); |
| 230 | for (i = 0; i < len; ++i) { |
| 231 | if (e.read_vars[i]->is_global()) { |
| 232 | this->read_var(e.read_vars[i]); |
| 233 | } |
| 234 | } |
| 235 | |
| 236 | len = e.write_vars.size(); |
| 237 | for (i = 0; i < len; ++i) { |
| 238 | if (e.write_vars[i]->is_global()) { |
| 239 | this->write_var(e.write_vars[i]); |
| 240 | //Make sure the "purity" is set correctly |
| 241 | this->pure = false; |
| 242 | } |
| 243 | } |
| 244 | side_effect_free &= e.side_effect_free; |
| 245 | } |
| 246 | |
| 247 | /* |
| 248 | * with call chains, we want to track write/read to stack |
no test coverage detected