------- Comment #10 from ubizjak at gmail dot com  2007-09-12 13:41 -------
(In reply to comment #9)
> This still happens with GCC 4.3 when trying to bootstrap with BOOT_CFLAGS='-O2
> -g -fomit-frame-pointer -masm=intel' and it blocks me from working on bug
> 29493.
> 
> /home/rask/build/gcc-x86_64-unknown-linux-gnu/./prev-gcc/xgcc
> -B/home/rask/build/gcc-x86_64-unknown-linux-gnu/./prev-gcc/
> -B/usr/local/x86_64-unknown-linux-gnu/bin/ -c -DHAVE_CONFIG_H -O2 -g
> -fomit-frame-pointer -masm=intel -I. 
> -I/home/rask/src/gcc/libiberty/../include 
> -W -Wall -Wwrite-strings -Wc++-compat -Wstrict-prototypes -pedantic 
> /home/rask/src/gcc/libiberty/cplus-dem.c -o cplus-dem.o
> /tmp/cc74KiHp.s: Assembler messages:
> /tmp/cc74KiHp.s:818: Error: expecting string instruction after `rep'
> make[3]: *** [cplus-dem.o] Error 1
> make[3]: Leaving directory
> `/home/rask/build/gcc-x86_64-unknown-linux-gnu/libiberty'
> make[2]: *** [all-stage2-libiberty] Error 2

You could play a bit with line 14997 ""rep{\;| }ret" in config/i386/i386.md:

--cut here--
;; Used by x86_machine_dependent_reorg to avoid penalty on single byte RET
;; instruction Athlon and K8 have.

(define_insn "return_internal_long"
  [(return)
   (unspec [(const_int 0)] UNSPEC_REP)]
  "reload_completed"
  "rep{\;| }ret"
  [(set_attr "length" "1")
   (set_attr "length_immediate" "0")
   (set_attr "prefix_rep" "1")
   (set_attr "modrm" "0")])
--cht here--

You could try "rep ret", "rep\;ret" or "rep ; ret" here. Otherwise, this is an
assembler bug.


-- 


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

Reply via email to