http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48545
--- Comment #1 from Dmitry Gorbachev <d.g.gorbachev at gmail dot com> 2011-04-10 23:44:58 UTC --- Hi! I'm not a GCC team, but I believe that GCC is correct here. An argument called "output" has a type "pointer to an array of 132 unsigned chars". "*output" has a type "array of 132 unsigned chars", which is implicitly converted to "pointer to an unsigned char", according to C language rules. Whereas the actual argument, "&mytest", has a different type "pointer to a pointer to an unsigned char".