whither fix for bogus x86 pushi?

Robert Lipe robertl@dgii.com
Mon Jan 19 02:25:00 GMT 1998


On Jan 9, Richard Henderson asked me to try the following patch.   It
cured a number of testcase failures on the g77/pic and caused no other
testcase failures.

I don't see this in the current EGCS CVS tree.     Is it awaiting further
feedback from one of us, or does it need additional work, or is it just
in the queue to be committed?

Thanx,
RJL

> Fri Jan  9 00:48:09 1998  Richard Henderson  <rth@cygnus.com>
> 
> 	* i386.md (push): Delete identical !TARGET_MOVE pattern.  Add
> 	patterns to prohibit symbolic constants if flag_pic.
> 
> 
> Index: i386.md
> ===================================================================
> RCS file: /cvs/cvsfiles/egcs/gcc/config/i386/i386.md,v
> retrieving revision 1.4
> diff -u -p -d -r1.4 i386.md
> --- i386.md	1997/11/05 19:29:37	1.4
> +++ i386.md	1998/01/09 08:45:36
> @@ -835,7 +835,13 @@
>  (define_insn ""
>    [(set (match_operand:SI 0 "push_operand" "=<")
>  	(match_operand:SI 1 "general_operand" "g"))]
> -  "TARGET_PUSH_MEMORY"
> +  "TARGET_PUSH_MEMORY && !flag_pic"
> +  "push%L0 %1")
> +
> +(define_insn ""
> +  [(set (match_operand:SI 0 "push_operand" "=<")
> +	(match_operand:SI 1 "general_operand" "rmn"))]
> +  "TARGET_PUSH_MEMORY && flag_pic"
>    "push%L0 %1")
>  
>  ;; If not a 386, it is faster to move MEM to a REG and then push, rather than
> @@ -844,13 +850,13 @@
>  (define_insn ""
>    [(set (match_operand:SI 0 "push_operand" "=<")
>  	(match_operand:SI 1 "nonmemory_operand" "ri"))]
> -  "!TARGET_PUSH_MEMORY && TARGET_MOVE"
> +  "!TARGET_PUSH_MEMORY && !flag_pic"
>    "push%L0 %1")
>  
>  (define_insn ""
>    [(set (match_operand:SI 0 "push_operand" "=<")
> -	(match_operand:SI 1 "nonmemory_operand" "ri"))]
> -  "!TARGET_PUSH_MEMORY && !TARGET_MOVE"
> +	(match_operand:SI 1 "nonmemory_operand" "rn"))]
> +  "!TARGET_PUSH_MEMORY && flag_pic"
>    "push%L0 %1")
>  
>  ;; General case of fullword move.
> 
> 

-- 
Robert Lipe       http://www.dgii.com/people/robertl       robertl@dgii.com



More information about the Gcc mailing list