What steps will reproduce the problem?
1. Compile some code using sparsetable
2. Get warnings along the following lines:
warning: format '%p' expects argument of type 'void*', but argument 4 has type
'google::sparsegroup<nest::Node*, 48u,
google::libc_allocator_with_realloc<nest::Node*>
>::alloc_impl<google::libc_allocator_with_realloc<nest::Node*> >::pointer {aka
nest::Node**}' [-Wformat]
What is the expected output? What do you see instead?
No warnings.
What version of the product are you using? On what operating system?
Latest SVN.
Please provide any additional information below.
According to the standard, the format specifier '%p' expects a 'void*' pointer,
however, as far as I understand, giving an argument of a different type is an
undefined behavior, even though an implicit conversion can be safely performed,
which is why gcc emits a warning.
The solution is to perform the conversion explicitly; I have chosen 'const
void*', because I've seen it used in gcc itself, so I would assume that it's a
good style:
http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/iq2000/iq2000.c?r1=192717&r2=192
716&pathrev=192717
Please see the attached patch, which fixes this problem for me.
Original issue reported on code.google.com by yury.v.zaytsev on 14 Aug 2013 at 8:05
Original issue reported on code.google.com by
yury.v.zaytsev
on 14 Aug 2013 at 8:05Attachments: