https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98601

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
          Component|rtl-optimization            |target

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
Note for 'm' constraints (*b) might be preferred over (*(non-void *)b), esp.
if used in address context.

The generic code rejects it on x86_64 here:

#1  0x0000000000a8c37c in build_asm_expr (loc=262658, string=<string_cst
0x7ffff66b00d8>, 
    outputs=<tree_list 0x7ffff669c9d8>, inputs=<tree 0x0>, clobbers=<tree 0x0>,
labels=<tree 0x0>, 
    simple=false, is_inline=false) at
/home/rguenther/src/gcc3/gcc/c/c-typeck.c:10669
10669                 error_at (loc, "invalid use of void expression");
(gdb) l
10664               output = error_mark_node;
10665             if (!(!allows_reg && allows_mem)
10666                 && output != error_mark_node
10667                 && VOID_TYPE_P (TREE_TYPE (output)))
10668               {
10669                 error_at (loc, "invalid use of void expression");
10670                 output = error_mark_node;

but it looks like Q is a memory constraint on arm?  If so then I don't see
why it should be invalid.

Reply via email to