diff options
author | Hans-Peter Nilsson <hp@axis.com> | 2005-03-23 03:55:36 +0000 |
---|---|---|
committer | Hans-Peter Nilsson <hp@gcc.gnu.org> | 2005-03-23 03:55:36 +0000 |
commit | 61158923135f19faa41c7ec297b630a1437e13cc (patch) | |
tree | 1170a3a1c1f2485f21dace07e688e18f211fa1b8 /gcc/config/i386/i386.c | |
parent | 06cd9d722014967a0769f4771edf4a3f3953b087 (diff) | |
download | gcc-61158923135f19faa41c7ec297b630a1437e13cc.zip gcc-61158923135f19faa41c7ec297b630a1437e13cc.tar.gz gcc-61158923135f19faa41c7ec297b630a1437e13cc.tar.bz2 |
tm.texi (TARGET_MD_ASM_CLOBBERS): Adjust wording to not imply that this is called once, independent of asms in code.
* doc/tm.texi (TARGET_MD_ASM_CLOBBERS): Adjust wording to not
imply that this is called once, independent of asms in code.
Adjust to now being pased output and input lists. Mention helper
function decl_overlaps_hard_reg_set_p.
* hooks.c (hook_tree_tree_tree_tree_3rd_identity): Rename from
hook_tree_tree_identity and to take three trees, returning third.
* hooks.h (hook_tree_tree_tree_tree_3rd_identity): Adjust the
prototype.
* stmt.c: include hard-reg-set.h before tree.h.
(decl_overlaps_hard_reg_set_p): New function, broken out from...
(decl_conflicts_with_clobbers_p): Call
decl_overlaps_hard_reg_set_p.
(expand_asm_operands): Pass output and input lists in call to
targetm.md_asm_clobbers.
* target-def.h (TARGET_MD_ASM_CLOBBERS): Define as
hook_tree_tree_tree_tree_3rd_identity.
* target.h (struct gcc_target.md_asm_clobbers): Take three tree
parameters.
* tree.h [HARD_CONST] (decl_overlaps_hard_reg_set_p): Prototype.
* config/i386/i386.c (ix86_md_asm_clobbers): Adjust to three
parameters, first two unused.
* config/cris/cris.c (cris_md_asm_clobbers): Adjust to added
parameters. Only add MOF to clobbers if there's no 'h' mentioned
in constraint letters and MOF is not mentioned as a asm-declared
register in neither of the input and output lists.
From-SVN: r96923
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r-- | gcc/config/i386/i386.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index f76812f..e254017 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -923,7 +923,7 @@ static tree ix86_handle_struct_attribute (tree *, tree, tree, int, bool *); static int extended_reg_mentioned_1 (rtx *, void *); static bool ix86_rtx_costs (rtx, int, int, int *); static int min_insn_size (rtx); -static tree ix86_md_asm_clobbers (tree clobbers); +static tree ix86_md_asm_clobbers (tree outputs, tree inputs, tree clobbers); static bool ix86_must_pass_in_stack (enum machine_mode mode, tree type); static bool ix86_pass_by_reference (CUMULATIVE_ARGS *, enum machine_mode, tree, bool); @@ -16880,7 +16880,9 @@ ix86_vector_mode_supported_p (enum machine_mode mode) with the old cc0-based compiler. */ static tree -ix86_md_asm_clobbers (tree clobbers) +ix86_md_asm_clobbers (tree outputs ATTRIBUTE_UNUSED, + tree inputs ATTRIBUTE_UNUSED, + tree clobbers) { clobbers = tree_cons (NULL_TREE, build_string (5, "flags"), clobbers); |