Skip to content

Commit 747ebed

Browse files
committed
Fix misleading function naming
1 parent 68eab54 commit 747ebed

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
@@ -1370,17 +1370,22 @@ void parse_array_compound_literal(var_t *var,
13701370
lex_expect(T_close_curly);
13711371
var->array_size = count;
13721372
}
1373-
bool is_array_literal_temp(var_t *var)
1373+
/* Identify compiler-emitted temporaries that hold array compound literals.
1374+
* Parsing assigns these temporaries synthetic names via gen_name_to (".tN")
1375+
* and they keep array metadata without pointer indirection.
1376+
*/
1377+
bool is_compound_literal_array_temp(var_t *var)
13741378
{
1375-
return var && var->array_size > 0 && var->var_name[0] == '.';
1379+
return var && var->array_size > 0 && !var->ptr_level &&
1380+
var->var_name[0] == '.';
13761381
}
13771382

13781383
var_t *scalarize_array_literal(block_t *parent,
13791384
basic_block_t **bb,
13801385
var_t *array_var,
13811386
type_t *hint_type)
13821387
{
1383-
if (!is_array_literal_temp(array_var))
1388+
if (!is_compound_literal_array_temp(array_var))
13841389
return array_var;
13851390

13861391
type_t *elem_type = hint_type ? hint_type : array_var->type;
@@ -2946,11 +2951,11 @@ void read_expr(block_t *parent, basic_block_t **bb)
29462951
bool rs1_is_ptr_like = rs1 && (rs1->ptr_level || rs1->array_size);
29472952
bool rs2_is_ptr_like = rs2 && (rs2->ptr_level || rs2->array_size);
29482953

2949-
if (is_array_literal_temp(rs1) && !rs2_is_ptr_like)
2954+
if (is_compound_literal_array_temp(rs1) && !rs2_is_ptr_like)
29502955
rs1 = scalarize_array_literal(parent, bb, rs1,
29512956
rs2 && rs2->type ? rs2->type : NULL);
29522957

2953-
if (is_array_literal_temp(rs2) && !rs1_is_ptr_like)
2958+
if (is_compound_literal_array_temp(rs2) && !rs1_is_ptr_like)
29542959
rs2 = scalarize_array_literal(parent, bb, rs2,
29552960
rs1 && rs1->type ? rs1->type : NULL);
29562961
/* Constant folding for binary operations */
@@ -3604,8 +3609,8 @@ void read_ternary_operation(block_t *parent, basic_block_t **bb)
36043609
read_expr(parent, &else_);
36053610
bb_connect(*bb, else_, ELSE);
36063611
var_t *false_val = opstack_pop();
3607-
bool true_array = is_array_literal_temp(true_val);
3608-
bool false_array = is_array_literal_temp(false_val);
3612+
bool true_array = is_compound_literal_array_temp(true_val);
3613+
bool false_array = is_compound_literal_array_temp(false_val);
36093614

36103615
if (true_array && !false_array)
36113616
true_val = scalarize_array_literal(parent, &then_, true_val,
@@ -3621,9 +3626,9 @@ void read_ternary_operation(block_t *parent, basic_block_t **bb)
36213626
add_insn(parent, else_, OP_assign, vd, false_val, NULL, 0, NULL);
36223627

36233628
var_t *array_ref = NULL;
3624-
if (is_array_literal_temp(true_val))
3629+
if (is_compound_literal_array_temp(true_val))
36253630
array_ref = true_val;
3626-
else if (is_array_literal_temp(false_val))
3631+
else if (is_compound_literal_array_temp(false_val))
36273632
array_ref = false_val;
36283633

36293634
if (array_ref) {

0 commit comments

Comments
 (0)