i386.h (MODE_NEEDED): Calls need UNINITIALIZED mode; add comment.
* i386.h (MODE_NEEDED): Calls need UNINITIALIZED mode; add comment. (EMIT_MODE_SET): UNINITIALIZED mode needs no set. * i386.md (i387_cw): Add 'uninitialized' mode. From-SVN: r87365
This commit is contained in:
parent
f43329a5ae
commit
1d1df0df43
@ -1,5 +1,9 @@
|
|||||||
2004-09-11 Jan Hubicka <jh@suse.cz>
|
2004-09-11 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
|
* i386.h (MODE_NEEDED): Calls need UNINITIALIZED mode; add comment.
|
||||||
|
(EMIT_MODE_SET): UNINITIALIZED mode needs no set.
|
||||||
|
* i386.md (i387_cw): Add 'uninitialized' mode.
|
||||||
|
|
||||||
* profile.c (BB_TO_GCOV_INDEX): move more to the front.
|
* profile.c (BB_TO_GCOV_INDEX): move more to the front.
|
||||||
(output_location): Break out from ....
|
(output_location): Break out from ....
|
||||||
(branch_prob): ... here; handle gcov output on trees.
|
(branch_prob): ... here; handle gcov output on trees.
|
||||||
|
@ -2960,13 +2960,18 @@ extern rtx ix86_compare_op1; /* operand 1 for comparisons */
|
|||||||
`OPTIMIZE_MODE_SWITCHING' is defined, you must define this macro to
|
`OPTIMIZE_MODE_SWITCHING' is defined, you must define this macro to
|
||||||
return an integer value not larger than the corresponding element
|
return an integer value not larger than the corresponding element
|
||||||
in `NUM_MODES_FOR_MODE_SWITCHING', to denote the mode that ENTITY
|
in `NUM_MODES_FOR_MODE_SWITCHING', to denote the mode that ENTITY
|
||||||
must be switched into prior to the execution of INSN. */
|
must be switched into prior to the execution of INSN.
|
||||||
|
|
||||||
|
The mode UNINITIALIZED is used to force re-load of possibly previously
|
||||||
|
stored control word after function call. The mode ANY specify that
|
||||||
|
function has no requirements on the control word and make no changes
|
||||||
|
in the bits we are interested in. */
|
||||||
|
|
||||||
#define MODE_NEEDED(ENTITY, I) \
|
#define MODE_NEEDED(ENTITY, I) \
|
||||||
(GET_CODE (I) == CALL_INSN \
|
(GET_CODE (I) == CALL_INSN \
|
||||||
|| (GET_CODE (I) == INSN && (asm_noperands (PATTERN (I)) >= 0 \
|
|| (GET_CODE (I) == INSN && (asm_noperands (PATTERN (I)) >= 0 \
|
||||||
|| GET_CODE (PATTERN (I)) == ASM_INPUT))\
|
|| GET_CODE (PATTERN (I)) == ASM_INPUT))\
|
||||||
? I387_CW_ANY \
|
? I387_CW_UNINITIALIZED \
|
||||||
: recog_memoized (I) < 0 \
|
: recog_memoized (I) < 0 \
|
||||||
? I387_CW_ANY \
|
? I387_CW_ANY \
|
||||||
: get_attr_i387_cw (I))
|
: get_attr_i387_cw (I))
|
||||||
@ -2981,7 +2986,7 @@ extern rtx ix86_compare_op1; /* operand 1 for comparisons */
|
|||||||
are to be inserted. */
|
are to be inserted. */
|
||||||
|
|
||||||
#define EMIT_MODE_SET(ENTITY, MODE, HARD_REGS_LIVE) \
|
#define EMIT_MODE_SET(ENTITY, MODE, HARD_REGS_LIVE) \
|
||||||
((MODE) != I387_CW_ANY \
|
((MODE) != I387_CW_ANY && (MODE) != I387_CW_UNINITIALIZED \
|
||||||
? emit_i387_cw_initialization (assign_386_stack_local (HImode, 1), \
|
? emit_i387_cw_initialization (assign_386_stack_local (HImode, 1), \
|
||||||
assign_386_stack_local (HImode, 2), \
|
assign_386_stack_local (HImode, 2), \
|
||||||
MODE), 0 \
|
MODE), 0 \
|
||||||
|
@ -431,7 +431,7 @@
|
|||||||
|
|
||||||
;; Defines rounding mode of an FP operation.
|
;; Defines rounding mode of an FP operation.
|
||||||
|
|
||||||
(define_attr "i387_cw" "floor,ceil,trunc,mask_pm,any"
|
(define_attr "i387_cw" "floor,ceil,trunc,mask_pm,uninitialized,any"
|
||||||
(const_string "any"))
|
(const_string "any"))
|
||||||
|
|
||||||
;; Describe a user's asm statement.
|
;; Describe a user's asm statement.
|
||||||
|
Loading…
Reference in New Issue
Block a user