Skip to content

Commit d3f966a

Browse files
authored
Merge pull request diffblue#5692 from tautschnig/knr-nondet
C front-end/KnR: generate nondet for missing arguments
2 parents e863241 + 302d06a commit d3f966a

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

regression/cbmc/KnR1/main.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
void a(b)
2+
{
3+
__CPROVER_assert(0, "");
4+
}
5+
int main()
6+
{
7+
a();
8+
}

regression/cbmc/KnR1/test.desc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
CORE
2+
main.c
3+
4+
^EXIT=10$
5+
^SIGNAL=0$
6+
^VERIFICATION FAILED$
7+
--
8+
^warning: ignoring
9+
Invariant check failed

src/ansi-c/c_typecheck_expr.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3763,10 +3763,12 @@ void c_typecheck_baset::typecheck_function_call_arguments(
37633763
else if(code_type.is_KnR())
37643764
{
37653765
// We are generous on KnR; any number is ok.
3766-
// We will in missing ones with "NIL".
3767-
3768-
while(parameters.size() > arguments.size())
3769-
arguments.push_back(nil_exprt());
3766+
// We will fill in missing ones with "nondet".
3767+
for(std::size_t i = arguments.size(); i < parameters.size(); ++i)
3768+
{
3769+
arguments.push_back(
3770+
side_effect_expr_nondett{parameters[i].type(), expr.source_location()});
3771+
}
37703772
}
37713773
else if(code_type.has_ellipsis())
37723774
{

0 commit comments

Comments
 (0)