Skip to content

Commit 9e204fd

Browse files
committed
Revert "Use get_fresh_aux_symbol to create $array_size and fix its type"
This reverts commit 0e01c89.
1 parent 4eb7d04 commit 9e204fd

File tree

2 files changed

+29
-23
lines changed

2 files changed

+29
-23
lines changed

regression/cbmc/vla1/program-only.desc

Lines changed: 0 additions & 12 deletions
This file was deleted.

src/ansi-c/c_typecheck_type.cpp

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ Author: Daniel Kroening, [email protected]
1616
#include <util/arith_tools.h>
1717
#include <util/c_types.h>
1818
#include <util/config.h>
19-
#include <util/fresh_symbol.h>
2019
#include <util/mathematical_types.h>
2120
#include <util/pointer_offset_size.h>
2221
#include <util/simplify_expr.h>
@@ -609,25 +608,44 @@ void c_typecheck_baset::typecheck_array_type(array_typet &type)
609608
throw 0;
610609
}
611610

612-
symbolt &new_symbol = get_fresh_aux_symbol(
613-
size_type(),
614-
id2string(current_symbol.name) + "$array_size",
615-
id2string(current_symbol.base_name) + "$array_size",
616-
size_source_location,
617-
mode,
618-
symbol_table);
611+
// Need to pull out! We insert new symbol.
612+
unsigned count=0;
613+
irep_idt temp_identifier;
614+
std::string suffix;
615+
616+
do
617+
{
618+
suffix="$array_size"+std::to_string(count);
619+
temp_identifier=id2string(current_symbol.name)+suffix;
620+
count++;
621+
}
622+
while(symbol_table.symbols.find(temp_identifier)!=
623+
symbol_table.symbols.end());
624+
625+
// add the symbol to symbol table
626+
auxiliary_symbolt new_symbol;
627+
new_symbol.name=temp_identifier;
628+
new_symbol.pretty_name=id2string(current_symbol.pretty_name)+suffix;
629+
new_symbol.base_name=id2string(current_symbol.base_name)+suffix;
630+
new_symbol.type=size.type();
619631
new_symbol.type.set(ID_C_constant, true);
620-
new_symbol.value = typecast_exprt::conditional_cast(size, size_type());
632+
new_symbol.value=size;
633+
new_symbol.location = size_source_location;
634+
new_symbol.mode = mode;
635+
636+
symbol_table.add(new_symbol);
621637

622638
// produce the code that declares and initializes the symbol
623-
symbol_exprt symbol_expr = new_symbol.symbol_expr();
639+
symbol_exprt symbol_expr;
640+
symbol_expr.set_identifier(temp_identifier);
641+
symbol_expr.type()=new_symbol.type;
624642

625643
code_declt declaration(symbol_expr);
626644
declaration.add_source_location() = size_source_location;
627645

628646
code_assignt assignment;
629647
assignment.lhs()=symbol_expr;
630-
assignment.rhs() = new_symbol.value;
648+
assignment.rhs()=size;
631649
assignment.add_source_location() = size_source_location;
632650

633651
// store the code

0 commit comments

Comments
 (0)