@@ -5674,12 +5674,11 @@ merge(Compressor.prototype, {
|
||||
var write_only = def.value.write_only;
|
||||
var value = def.value.drop_side_effect_free(compressor);
|
||||
if (def.value !== value) {
|
||||
def.value = value && make_sequence(def.value, [
|
||||
value,
|
||||
make_node(AST_Number, def.value, {
|
||||
value: 0
|
||||
}),
|
||||
]);
|
||||
def.value = null;
|
||||
if (value) {
|
||||
AST_Node.warn("Side effects in last use of variable {name} [{file}:{line},{col}]", template(def.name));
|
||||
side_effects.push(value);
|
||||
}
|
||||
} else if (def.value.write_only !== write_only) {
|
||||
def.value.write_only = write_only;
|
||||
}
|
||||
@@ -8139,7 +8138,7 @@ merge(Compressor.prototype, {
|
||||
return node;
|
||||
}
|
||||
}
|
||||
var insert, in_loop, scope;
|
||||
var arg_used, insert, in_loop, scope;
|
||||
if (replacing && can_inject_symbols()) {
|
||||
fn._squeezed = true;
|
||||
if (exp !== fn) fn.parent_scope = exp.scope;
|
||||
@@ -8453,8 +8452,9 @@ merge(Compressor.prototype, {
|
||||
}
|
||||
}
|
||||
var inline = compressor.option("inline");
|
||||
var used = Object.create(defined);
|
||||
if (!can_inject_args(defined, used, inline >= 2 && safe_to_inject)) return false;
|
||||
arg_used = Object.create(defined);
|
||||
if (!can_inject_args(defined, arg_used, inline >= 2 && safe_to_inject)) return false;
|
||||
var used = Object.create(arg_used);
|
||||
if (!can_inject_vars(defined, used, inline >= 3 && safe_to_inject)) return false;
|
||||
return !in_loop || in_loop.length == 0 || !is_reachable(fn, in_loop);
|
||||
}
|
||||
@@ -8558,10 +8558,7 @@ merge(Compressor.prototype, {
|
||||
name.thedef = redef;
|
||||
}
|
||||
append_var(decls, expressions, name, var_def.value);
|
||||
if (in_loop && all(fn.argnames, function(argname) {
|
||||
if (argname instanceof AST_DefaultValue) argname = argname.name;
|
||||
return argname.name != name.name;
|
||||
})) {
|
||||
if (in_loop && !HOP(arg_used, name.name)) {
|
||||
var def = fn.variables.get(name.name);
|
||||
var sym = make_node(AST_SymbolRef, name, name);
|
||||
def.references.push(sym);
|
||||
|
||||
Reference in New Issue
Block a user