Commit 6be2e1f8 by Richard Henderson

stmt.c (parse_input_constraint): Break out from ...

        * stmt.c (parse_input_constraint): Break out from ...
        (expand_asm_operands): ... here.  Loop over the operands twice,
        the first time only calling mark_addressable.  Correct and simplify
        the conditions for spilling an output operand to memory.

From-SVN: r48298
parent 99407cf2
2001-12-23 Richard Henderson <rth@redhat.com> 2001-12-23 Richard Henderson <rth@redhat.com>
* stmt.c (parse_input_constraint): Break out from ...
(expand_asm_operands): ... here. Loop over the operands twice,
the first time only calling mark_addressable. Correct and simplify
the conditions for spilling an output operand to memory.
2001-12-23 Richard Henderson <rth@redhat.com>
* config/alpha/alpha.c (call_operand) [OSF]: Disallow virtual regs. * config/alpha/alpha.c (call_operand) [OSF]: Disallow virtual regs.
* config/alpha/alpha.md (UNSPEC_SIBCALL): New. * config/alpha/alpha.md (UNSPEC_SIBCALL): New.
...@@ -46,13 +53,13 @@ ...@@ -46,13 +53,13 @@
2001-12-22 Aldy Hernandez <aldyh@redhat.com> 2001-12-22 Aldy Hernandez <aldyh@redhat.com>
* config/rs6000/rs6000.h (rs6000_builtins): Add vsldoi variants. * config/rs6000/rs6000.h (rs6000_builtins): Add vsldoi variants.
* config/rs6000/rs6000.md ("altivec_vsldoi_*"): Same. * config/rs6000/rs6000.md ("altivec_vsldoi_*"): Same.
* config/rs6000/rs6000.c: Clean up some spacing and indentation. * config/rs6000/rs6000.c: Clean up some spacing and indentation.
(altivec_init_builtins): Add tree types for builtins with 4 bit (altivec_init_builtins): Add tree types for builtins with 4 bit
literals. literals.
(bdesc_3arg): Add vsldoi variants. (bdesc_3arg): Add vsldoi variants.
2001-12-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> 2001-12-22 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
...@@ -248,16 +255,16 @@ Fri Dec 21 17:30:15 2001 Jeffrey A Law (law@redhat.com) ...@@ -248,16 +255,16 @@ Fri Dec 21 17:30:15 2001 Jeffrey A Law (law@redhat.com)
2001-12-20 Nick Clifton <nickc@cambridge.redhat.com> 2001-12-20 Nick Clifton <nickc@cambridge.redhat.com>
* config/arm/arm.c (arm_compute_save_reg0_reg12_mask): New * config/arm/arm.c (arm_compute_save_reg0_reg12_mask): New
function. Compute which of registers r0 through r12 should be function. Compute which of registers r0 through r12 should be
saved onto the stack during a function's prologue. saved onto the stack during a function's prologue.
(arm_compute_save_reg_mask): Use (arm_compute_save_reg_mask): Use
arm_compute_save_reg0_reg12_mask. arm_compute_save_reg0_reg12_mask.
(arm_compute_initial_elimination_offset): Use (arm_compute_initial_elimination_offset): Use
arm_compute_save_reg0_reg12_mask. arm_compute_save_reg0_reg12_mask.
(arm_expand_prologue): Do not mark as save of the IP register (arm_expand_prologue): Do not mark as save of the IP register
for an interrupt handler as being part of the frame creation for an interrupt handler as being part of the frame creation
code. code.
2001-12-20 Richard Henderson <rth@redhat.com> 2001-12-20 Richard Henderson <rth@redhat.com>
...@@ -320,30 +327,30 @@ Thu Dec 20 16:58:46 CET 2001 Jan Hubicka <jh@suse.cz> ...@@ -320,30 +327,30 @@ Thu Dec 20 16:58:46 CET 2001 Jan Hubicka <jh@suse.cz>
2001-12-19 Aldy Hernandez <aldyh@redhat.com> 2001-12-19 Aldy Hernandez <aldyh@redhat.com>
* doc/install.texi: Add documentation for --enable-altivec. * doc/install.texi: Add documentation for --enable-altivec.
* config.gcc: Add support for --enable-altivec. * config.gcc: Add support for --enable-altivec.
* config/rs6000/altivec.h: New. * config/rs6000/altivec.h: New.
* config/rs6000/linuxaltivec.h (SUBSUBTARGET_OVERRIDE_OPTIONS): * config/rs6000/linuxaltivec.h (SUBSUBTARGET_OVERRIDE_OPTIONS):
Define. Fix typo. Define. Fix typo.
* config/rs6000/rs6000.c (vrsave_operation): Change unspec to * config/rs6000/rs6000.c (vrsave_operation): Change unspec to
unspec_volatile. unspec_volatile.
(generate_set_vrsave): Generate the unspec here instead of calling (generate_set_vrsave): Generate the unspec here instead of calling
an .md pattern. an .md pattern.
(generate_set_vrsave): Use gen_rtvec. (generate_set_vrsave): Use gen_rtvec.
(rs6000_emit_prologue): Replace call to gen_get_vrsave with (rs6000_emit_prologue): Replace call to gen_get_vrsave with
gen_rtx_SET. gen_rtx_SET.
* config/rs6000/rs6000.md ("*movsi_internal1"): Add constraints * config/rs6000/rs6000.md ("*movsi_internal1"): Add constraints
for setting special registers. for setting special registers.
("*set_vrsave_internal"): Use unspec_volatile. ("*set_vrsave_internal"): Use unspec_volatile.
("set_vrsave"): Remove. ("set_vrsave"): Remove.
("get_vrsave"): Remove. ("get_vrsave"): Remove.
* config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Add vrsave to * config/rs6000/rs6000.h (REG_CLASS_CONTENTS): Add vrsave to
SPECIAL_REGS. SPECIAL_REGS.
2001-12-19 Bruce Korb <bkorb@gnu.org> 2001-12-19 Bruce Korb <bkorb@gnu.org>
......
/* Failure to mark_addressable all operands before evaluation means we
don't set up the proper temporaries, which leaves us with an asm that
doesn't match its contraints. */
long foo()
{
long x;
asm("" : "=r"(x) : "m"(x));
return x;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment