This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug middle-end/44492] auto-inc-dec pushes PRE_MODIFY/PRE_INC into inline asm operands



------- Comment #5 from jakub at gcc dot gnu dot org  2010-06-10 10:25 -------
And ensure that it is used exactly once in an inline asm pattern?  Even for "g"
constraint?  That just can't be true.
Just look at how many of "m" and "=m" constraints e.g. glibc uses.
Only 8 occurrences of %U, but e.g.:
./iconvdata/iso-2022-kr.c:      asm ("" : "=m" (buf));                         
                    \
./iconvdata/iso-2022-cn.c:      asm ("" : "=m" (buf));                         
                      \
./nscd/nscd_helper.c:  asm ("" : "=m" (tvend));
./nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c:                  : "=&r"
(oldval), "=&r" (tmp), "=m" (*once_control)
./nptl/sysdeps/unix/sysv/linux/powerpc/pthread_once.c:                  : "r"
(once_control), "r" (newval), "m" (*once_control)
./nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h:                 : "=&r"
(__val), "=m" (*futex)                         \
./nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h:                 : "r"
(futex), "r" (id), "m" (*futex)                  \
./string/test-memcmp.c:   asm ("" : "=g" (r) : "0" (r));
./string/test-strncmp.c:          asm ("" : "=g" (r) : "0" (r));
./string/test-strcmp.c:   asm ("" : "=g" (r) : "0" (r));
./debug/tst-longjmp_chk.c:  asm volatile ("" : "=m" (buf));
./math/math_private.h:#define math_force_eval(x) __asm __volatile ("" : : "m"
(x))
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "=&r"
(__val), "=m" (*mem)                          \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "b" (mem),
"r" (value), "m" (*mem)                  \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "=&r"
(__val), "=m" (*mem)                          \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "b" (mem),
"r" (value), "m" (*mem)                  \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "=&b"
(__val), "=&r" (__tmp), "=m" (*mem)           \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "b" (mem),
"r" (value), "m" (*mem)                  \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "=&b"
(__val), "=m" (*mem)                          \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "b" (mem),
"m" (*mem)                               \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "=&b"
(__val), "=m" (*mem)                          \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                      : "b" (mem),
"m" (*mem)                               \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                     : "=&b" (__val),
"=&r" (__tmp), "=m" (*mem)            \
./sysdeps/powerpc/powerpc64/bits/atomic.h:                     : "b" (mem), "m"
(*mem)                                \
./sysdeps/powerpc/bits/atomic.h:                      : "=&r" (__val), "=m"
(*mem)                            \
./sysdeps/powerpc/bits/atomic.h:                      : "b" (mem), "r" (value),
"m" (*mem)                    \
./sysdeps/powerpc/bits/atomic.h:                      : "=&r" (__val), "=m"
(*mem)                            \
./sysdeps/powerpc/bits/atomic.h:                      : "b" (mem), "r" (value),
"m" (*mem)                    \
./sysdeps/powerpc/bits/atomic.h:                      : "=&b" (__val), "=&r"
(__tmp), "=m" (*mem)             \
./sysdeps/powerpc/bits/atomic.h:                      : "b" (mem), "r" (value),
"m" (*mem)                    \
./sysdeps/powerpc/bits/atomic.h:                      : "=&b" (__val), "=m"
(*mem)                            \
./sysdeps/powerpc/bits/atomic.h:                      : "b" (mem), "m" (*mem)  
                              \
./sysdeps/powerpc/bits/atomic.h:                      : "=&b" (__val), "=m"
(*mem)                            \
./sysdeps/powerpc/bits/atomic.h:                      : "b" (mem), "m" (*mem)  
                              \
./sysdeps/powerpc/bits/atomic.h:                       : "=&b" (__val), "=&r"
(__tmp), "=m" (*mem)            \
./sysdeps/powerpc/bits/atomic.h:                       : "b" (mem), "m" (*mem) 
                              \

Guess the Linux kernel has many more of these.


-- 


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]