Skip to content

Commit 0cac2c8

Browse files
committed
test2
1 parent c44fa46 commit 0cac2c8

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

codegen.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5278,10 +5278,14 @@ static void peep_redunt_jmp(char *p) {
52785278
}
52795279
}
52805280

5281-
static void mark_alias_live(char *name) {
5282-
Obj *alias = get_symbol_var(name);
5283-
if (alias)
5284-
mark_live(alias);
5281+
static void mark_alias_live(Obj *var) {
5282+
if (var->is_live)
5283+
return;
5284+
if (var->alias_name) {
5285+
Obj *alias = get_symbol_var(var->alias_name);
5286+
if (alias)
5287+
mark_live(alias);
5288+
}
52855289
}
52865290

52875291
static void mark_live(Obj *var) {
@@ -5290,8 +5294,7 @@ static void mark_live(Obj *var) {
52905294
var->is_live = true;
52915295

52925296
if (!var->is_definition) {
5293-
if (var->alias_name)
5294-
mark_alias_live(var->alias_name);
5297+
mark_alias_live(var);
52955298
return;
52965299
}
52975300
if (var->ty->kind == TY_FUNC) {
@@ -5331,12 +5334,13 @@ int codegen(Obj *prog, FILE *out) {
53315334

53325335
for (Obj *var = prog; var; var = var->next) {
53335336
if (!var->is_static || var->is_used) {
5334-
if (var->alias_name)
5335-
mark_alias_live(var->alias_name);
5336-
else if (var->is_definition)
5337+
if (!var->is_definition)
5338+
mark_alias_live(var);
5339+
else
53375340
mark_live(var);
53385341
}
53395342
}
5343+
53405344
for (Obj *var = prog; var; var = var->next) {
53415345
if (!var->is_definition) {
53425346
if (((!var->is_static || var->is_used) && var->alias_name) ||

0 commit comments

Comments
 (0)