Fix i386 bootstrap problem

Jan Hubicka jh@suse.cz
Thu Aug 7 15:19:00 GMT 2008


Hi,
my patch for optimize_insn_for_size_p predicates probably broke i386
bootstrap on any mdern system (our testing setup still use glibc with
stringop inlines that masked the issue).

I've bootstrapped the following and will commit it in minute.

Honza

Index: ChangeLog
===================================================================
*** ChangeLog	(revision 138840)
--- ChangeLog	(working copy)
***************
*** 1,3 ****
--- 1,8 ----
+ 2008-08-07  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR target/37048
+ 	* i386.md (single stringop patterns): Enable unconditionally. 
+ 
  2008-08-07  H.J. Lu  <hongjiu.lu@intel.com>
  
  	PR target/36992
Index: config/i386/i386.md
===================================================================
*** config/i386/i386.md	(revision 138840)
--- config/i386/i386.md	(working copy)
***************
*** 18652,18658 ****
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 8)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movsq"
    [(set_attr "type" "str")
     (set_attr "mode" "DI")
--- 18652,18658 ----
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 8)))]
!   "TARGET_64BIT"
    "movsq"
    [(set_attr "type" "str")
     (set_attr "mode" "DI")
***************
*** 18667,18673 ****
     (set (match_operand:SI 1 "register_operand" "=S")
  	(plus:SI (match_dup 3)
  		 (const_int 4)))]
!   "!TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movs{l|d}"
    [(set_attr "type" "str")
     (set_attr "mode" "SI")
--- 18667,18673 ----
     (set (match_operand:SI 1 "register_operand" "=S")
  	(plus:SI (match_dup 3)
  		 (const_int 4)))]
!   "!TARGET_64BIT"
    "movs{l|d}"
    [(set_attr "type" "str")
     (set_attr "mode" "SI")
***************
*** 18682,18688 ****
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 4)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movs{l|d}"
    [(set_attr "type" "str")
     (set_attr "mode" "SI")
--- 18682,18688 ----
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 4)))]
!   "TARGET_64BIT"
    "movs{l|d}"
    [(set_attr "type" "str")
     (set_attr "mode" "SI")
***************
*** 18697,18703 ****
     (set (match_operand:SI 1 "register_operand" "=S")
  	(plus:SI (match_dup 3)
  		 (const_int 2)))]
!   "!TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movsw"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
--- 18697,18703 ----
     (set (match_operand:SI 1 "register_operand" "=S")
  	(plus:SI (match_dup 3)
  		 (const_int 2)))]
!   "!TARGET_64BIT"
    "movsw"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
***************
*** 18712,18718 ****
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 2)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movsw"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
--- 18712,18718 ----
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 2)))]
!   "TARGET_64BIT"
    "movsw"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
***************
*** 18727,18733 ****
     (set (match_operand:SI 1 "register_operand" "=S")
  	(plus:SI (match_dup 3)
  		 (const_int 1)))]
!   "!TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movsb"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
--- 18727,18733 ----
     (set (match_operand:SI 1 "register_operand" "=S")
  	(plus:SI (match_dup 3)
  		 (const_int 1)))]
!   "!TARGET_64BIT"
    "movsb"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
***************
*** 18742,18748 ****
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 1)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "movsb"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
--- 18742,18748 ----
     (set (match_operand:DI 1 "register_operand" "=S")
  	(plus:DI (match_dup 3)
  		 (const_int 1)))]
!   "TARGET_64BIT"
    "movsb"
    [(set_attr "type" "str")
     (set_attr "memory" "both")
***************
*** 18917,18923 ****
  		   (match_operand 2 "register_operand" ""))
  	      (set (match_operand 0 "register_operand" "")
  		   (match_operand 3 "" ""))])]
!   "TARGET_SINGLE_STRINGOP"
    "ix86_current_function_needs_cld = 1;")
  
  (define_insn "*strsetdi_rex_1"
--- 18917,18923 ----
  		   (match_operand 2 "register_operand" ""))
  	      (set (match_operand 0 "register_operand" "")
  		   (match_operand 3 "" ""))])]
!   ""
    "ix86_current_function_needs_cld = 1;")
  
  (define_insn "*strsetdi_rex_1"
***************
*** 18926,18932 ****
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 8)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stosq"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18926,18932 ----
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 8)))]
!   "TARGET_64BIT"
    "stosq"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
***************
*** 18938,18944 ****
     (set (match_operand:SI 0 "register_operand" "=D")
  	(plus:SI (match_dup 1)
  		 (const_int 4)))]
!   "!TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stos{l|d}"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18938,18944 ----
     (set (match_operand:SI 0 "register_operand" "=D")
  	(plus:SI (match_dup 1)
  		 (const_int 4)))]
!   "!TARGET_64BIT"
    "stos{l|d}"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
***************
*** 18950,18956 ****
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 4)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stos{l|d}"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18950,18956 ----
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 4)))]
!   "TARGET_64BIT"
    "stos{l|d}"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
***************
*** 18962,18968 ****
     (set (match_operand:SI 0 "register_operand" "=D")
  	(plus:SI (match_dup 1)
  		 (const_int 2)))]
!   "!TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stosw"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18962,18968 ----
     (set (match_operand:SI 0 "register_operand" "=D")
  	(plus:SI (match_dup 1)
  		 (const_int 2)))]
!   "!TARGET_64BIT"
    "stosw"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
***************
*** 18974,18980 ****
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 2)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stosw"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18974,18980 ----
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 2)))]
!   "TARGET_64BIT"
    "stosw"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
***************
*** 18986,18992 ****
     (set (match_operand:SI 0 "register_operand" "=D")
  	(plus:SI (match_dup 1)
  		 (const_int 1)))]
!   "!TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stosb"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18986,18992 ----
     (set (match_operand:SI 0 "register_operand" "=D")
  	(plus:SI (match_dup 1)
  		 (const_int 1)))]
!   "!TARGET_64BIT"
    "stosb"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
***************
*** 18998,19004 ****
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 1)))]
!   "TARGET_64BIT && TARGET_SINGLE_STRINGOP"
    "stosb"
    [(set_attr "type" "str")
     (set_attr "memory" "store")
--- 18998,19004 ----
     (set (match_operand:DI 0 "register_operand" "=D")
  	(plus:DI (match_dup 1)
  		 (const_int 1)))]
!   "TARGET_64BIT"
    "stosb"
    [(set_attr "type" "str")
     (set_attr "memory" "store")



More information about the Gcc-patches mailing list