gcc vs g++ warnings
Ian Lance Taylor
iant@google.com
Fri Jun 12 22:03:00 GMT 2009
"Martin Ettl" <ettl.martin@gmx.de> writes:
> compiled my application with gcc-4.3.3 on Ubuntu Linux. I also compiled it with g++-4.3.3 and got the following issue.
>
> I created the following testcase:
>
> #define SR_MULT (11*12)
> #define A(x) (x) ? (SR_MULT/x) : 0
> static const unsigned char sr_adc_mult_table[] = {
> A(2), A(2), A(12), A(12), A(0), A(0), A(3), A(1),
> A(2), A(2), A(11), A(11), A(0), A(0), A(0), A(1)
> };
>
> int main()
> {}
>
>
> My compiler says:
>
> $ g++ -o test test.cpp
> test.cpp:4: warning: division by zero
> test.cpp:4: warning: division by zero
> test.cpp:5: warning: division by zero
> test.cpp:5: warning: division by zero
> test.cpp:5: warning: division by zero
...
> gcc does not warn about this. What happens, is this a bug in the compiler?
I'm not sure that I would call it a bug, exactly. It's more of a
missing feature in the C++ frontend. When the C frontend sees code like
0 ? (121 / 0) : 0
it suppresses certain warnings about in the "(121 / 0)" part, since that
will never be executed. The C++ frontend does not have that feature.
Coincidentally, I just proposed a patch to fix this in the C++ frontend.
http://gcc.gnu.org/ml/gcc-patches/2009-06/msg01001.html
Ian
More information about the Gcc-help
mailing list