Skip to content

Commit 1f7bed4

Browse files
committed
Fix misleading function naming
1 parent b44dc57 commit 1f7bed4

File tree

1 file changed

+14
-9
lines changed

1 file changed

+14
-9
lines changed

src/parser.c

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1323,17 +1323,22 @@ void parse_array_compound_literal(var_t *var,
13231323
lex_expect(T_close_curly);
13241324
var->array_size = count;
13251325
}
1326-
bool is_array_literal_temp(var_t *var)
1326+
/* Identify compiler-emitted temporaries that hold array compound literals.
1327+
* Parsing assigns these temporaries synthetic names via gen_name_to (".tN")
1328+
* and they keep array metadata without pointer indirection.
1329+
*/
1330+
bool is_compound_literal_array_temp(var_t *var)
13271331
{
1328-
return var && var->array_size > 0 && var->var_name[0] == '.';
1332+
return var && var->array_size > 0 && !var->ptr_level &&
1333+
var->var_name[0] == '.';
13291334
}
13301335

13311336
var_t *scalarize_array_literal(block_t *parent,
13321337
basic_block_t **bb,
13331338
var_t *array_var,
13341339
type_t *hint_type)
13351340
{
1336-
if (!is_array_literal_temp(array_var))
1341+
if (!is_compound_literal_array_temp(array_var))
13371342
return array_var;
13381343

13391344
type_t *elem_type = hint_type ? hint_type : array_var->type;
@@ -2899,11 +2904,11 @@ void read_expr(block_t *parent, basic_block_t **bb)
28992904
bool rs1_is_ptr_like = rs1 && (rs1->ptr_level || rs1->array_size);
29002905
bool rs2_is_ptr_like = rs2 && (rs2->ptr_level || rs2->array_size);
29012906

2902-
if (is_array_literal_temp(rs1) && !rs2_is_ptr_like)
2907+
if (is_compound_literal_array_temp(rs1) && !rs2_is_ptr_like)
29032908
rs1 = scalarize_array_literal(parent, bb, rs1,
29042909
rs2 && rs2->type ? rs2->type : NULL);
29052910

2906-
if (is_array_literal_temp(rs2) && !rs1_is_ptr_like)
2911+
if (is_compound_literal_array_temp(rs2) && !rs1_is_ptr_like)
29072912
rs2 = scalarize_array_literal(parent, bb, rs2,
29082913
rs1 && rs1->type ? rs1->type : NULL);
29092914
/* Constant folding for binary operations */
@@ -3557,8 +3562,8 @@ void read_ternary_operation(block_t *parent, basic_block_t **bb)
35573562
read_expr(parent, &else_);
35583563
bb_connect(*bb, else_, ELSE);
35593564
var_t *false_val = opstack_pop();
3560-
bool true_array = is_array_literal_temp(true_val);
3561-
bool false_array = is_array_literal_temp(false_val);
3565+
bool true_array = is_compound_literal_array_temp(true_val);
3566+
bool false_array = is_compound_literal_array_temp(false_val);
35623567

35633568
if (true_array && !false_array)
35643569
true_val = scalarize_array_literal(parent, &then_, true_val,
@@ -3574,9 +3579,9 @@ void read_ternary_operation(block_t *parent, basic_block_t **bb)
35743579
add_insn(parent, else_, OP_assign, vd, false_val, NULL, 0, NULL);
35753580

35763581
var_t *array_ref = NULL;
3577-
if (is_array_literal_temp(true_val))
3582+
if (is_compound_literal_array_temp(true_val))
35783583
array_ref = true_val;
3579-
else if (is_array_literal_temp(false_val))
3584+
else if (is_compound_literal_array_temp(false_val))
35803585
array_ref = false_val;
35813586

35823587
if (array_ref) {

0 commit comments

Comments
 (0)