------- Comment #7 from jakub at gcc dot gnu dot org  2009-01-16 12:42 -------
The correct testcase is IMHO:
void
baz (int v)
{
  unsigned a = (v == 1) ? 1 : 2;

  if (__builtin_constant_p (a))
    asm volatile ("# constant %0" :: "i" (a));
  else
    asm volatile ("# register %0" :: "r" (a));
}

For non-constant a using "i" constraint is wrong.  This fails since
http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=134833
I guess handling BUILT_IN_CONSTANT_P the same as BUILT_IN_OBJECT_SIZE in
record_temporary_equivalences_from_stmts_at_dest
could do the trick.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38789

Reply via email to