https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70883
Bug ID: 70883
Summary: inconsistent error message for calls to
__builtin_add_overflow with too few arguments
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: minor
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: msebor at gcc dot gnu.org
Target Milestone: ---
This is a just a minor issue but it's one that I noticed when my newly written
new tests for the __builtin_op_overflow functions were failing. It turned out
that the failures were due to the assumption that GCC would diagnose the same
problem (insufficient number of arguments) using the same diagnostic. The test
case below shows that GCC uses one spelling ("not enough arguments") for the
error caused by calls to the type-generic __builtin_add_overflow and a
different spelling ("too few arguments") for the same error for
__builtin_sadd_overflow and the rest. Both C and C++ front ends have this
inconsistency. It seems like the second spelling is more prevalent and should
be used for consistency.
$ cat x.cpp && gcc -Wall -Wextra -Wpedantic -xc x.cpp
void f (int a)
{
__builtin_add_overflow (a);
__builtin_sadd_overflow (a);
}
void g (void)
{
f ();
}
x.cpp: In function ‘f’:
x.cpp:3:3: error: not enough arguments to function ‘__builtin_add_overflow’
__builtin_add_overflow (a);
^~~~~~~~~~~~~~~~~~~~~~
x.cpp:4:3: error: too few arguments to function ‘__builtin_sadd_overflow’
__builtin_sadd_overflow (a);
^~~~~~~~~~~~~~~~~~~~~~~
x.cpp: In function ‘g’:
x.cpp:9:5: error: too few arguments to function ‘f’
f ();
^
x.cpp:1:6: note: declared here
void f (int a)
^