aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2003-02-25 12:39:20 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2003-02-25 11:39:20 +0000
commitfa1a0d022c30ed29de2e07828d5f28d5a9034636 (patch)
tree7e4541599f216511567a2ef212a330eaa7d0b1c9 /gcc
parent9d4c1565091e0017b2d4b54126f4d691d1d8681d (diff)
downloadgcc-fa1a0d022c30ed29de2e07828d5f28d5a9034636.zip
gcc-fa1a0d022c30ed29de2e07828d5f28d5a9034636.tar.gz
gcc-fa1a0d022c30ed29de2e07828d5f28d5a9034636.tar.bz2
Makefile.in (lcm.o): Add dependency on function.h
* Makefile.in (lcm.o): Add dependency on function.h * lcm.c (function.h): Include. * i386.c (machine_function, ix86_stack_locals, * ix86_save_varrargs_registers) : Move to ... * i386.h (machine_function, ix86_stack_locals, ix86_save_varrargs_registers): ... here; add optimize_mode_switching (ix86_optimize_mode_switching): New. * i386.md (fix patterns): Set ix86_optimize_mode_switching From-SVN: r63404
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog12
-rw-r--r--gcc/Makefile.in2
-rw-r--r--gcc/config/i386/i386.c12
-rw-r--r--gcc/config/i386/i386.h15
-rw-r--r--gcc/config/i386/i386.md3
-rw-r--r--gcc/lcm.c1
-rw-r--r--gcc/toplev.c30
7 files changed, 46 insertions, 29 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a2ab54f..66e7882 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,15 @@
+Tue Feb 25 12:35:34 CET 2003 Jan Hubicka <jh@suse.cz>
+
+ * Makefile.in (lcm.o): Add dependency on function.h
+ * lcm.c (function.h): Include.
+ * i386.c (machine_function, ix86_stack_locals,
+ * ix86_save_varrargs_registers) : Move to
+ ...
+ * i386.h (machine_function, ix86_stack_locals,
+ ix86_save_varrargs_registers): ... here; add optimize_mode_switching
+ (ix86_optimize_mode_switching): New.
+ * i386.md (fix patterns): Set ix86_optimize_mode_switching
+
2003-02-25 Nick Clifton <nickc@redhat.com>
* config/d30v/d30v.c (d30v_init_cumulative_args): Fix typo. Name
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 271f3e0..ceb594b 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1552,7 +1552,7 @@ resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) coretype
$(INSN_ATTR_H) except.h $(PARAMS_H) $(TM_P_H)
lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h flags.h real.h insn-config.h $(INSN_ATTR_H) $(RECOG_H) $(EXPR_H) \
- $(BASIC_BLOCK_H) $(TM_P_H) df.h
+ $(BASIC_BLOCK_H) $(TM_P_H) df.h function.h
ssa.o : ssa.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) varray.h \
$(EXPR_H) hard-reg-set.h flags.h function.h real.h insn-config.h $(RECOG_H) \
$(BASIC_BLOCK_H) output.h ssa.h
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 89995c7..c464b6c 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -689,18 +689,6 @@ struct stack_local_entry GTY(())
struct stack_local_entry *next;
};
-
-struct machine_function GTY(())
-{
- struct stack_local_entry *stack_locals;
- const char *some_ld_name;
- int save_varrargs_registers;
- int accesses_prev_frame;
-};
-
-#define ix86_stack_locals (cfun->machine->stack_locals)
-#define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers)
-
/* Structure describing stack frame layout.
Stack grows downward:
diff --git a/gcc/config/i386/i386.h b/gcc/config/i386/i386.h
index c8be296..e5daa5d 100644
--- a/gcc/config/i386/i386.h
+++ b/gcc/config/i386/i386.h
@@ -3166,7 +3166,7 @@ enum fp_cw_mode {FP_CW_STORED, FP_CW_UNINITIALIZED, FP_CW_ANY};
/* Define this macro if the port needs extra instructions inserted
for mode switching in an optimizing compilation. */
-#define OPTIMIZE_MODE_SWITCHING(ENTITY) 1
+#define OPTIMIZE_MODE_SWITCHING(ENTITY) ix86_optimize_mode_switching
/* If you define `OPTIMIZE_MODE_SWITCHING', you have to define this as
initializer for an array of integers. Each initializer element N
@@ -3223,6 +3223,19 @@ enum fp_cw_mode {FP_CW_STORED, FP_CW_UNINITIALIZED, FP_CW_ANY};
#define DLL_IMPORT_EXPORT_PREFIX '#'
#define FASTCALL_PREFIX '@'
+
+struct machine_function GTY(())
+{
+ struct stack_local_entry *stack_locals;
+ const char *some_ld_name;
+ int save_varrargs_registers;
+ int accesses_prev_frame;
+ int optimize_mode_switching;
+};
+
+#define ix86_stack_locals (cfun->machine->stack_locals)
+#define ix86_save_varrargs_registers (cfun->machine->save_varrargs_registers)
+#define ix86_optimize_mode_switching (cfun->machine->optimize_mode_switching)
/*
Local variables:
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index bb2eb74..d5bc360 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -4441,6 +4441,7 @@
"&& 1"
[(const_int 0)]
{
+ ix86_optimize_mode_switching = 1;
operands[2] = assign_386_stack_local (HImode, 1);
operands[3] = assign_386_stack_local (HImode, 2);
if (memory_operand (operands[0], VOIDmode))
@@ -4582,6 +4583,7 @@
"&& 1"
[(const_int 0)]
{
+ ix86_optimize_mode_switching = 1;
operands[2] = assign_386_stack_local (HImode, 1);
operands[3] = assign_386_stack_local (HImode, 2);
if (memory_operand (operands[0], VOIDmode))
@@ -4699,6 +4701,7 @@
""
[(const_int 0)]
{
+ ix86_optimize_mode_switching = 1;
operands[2] = assign_386_stack_local (HImode, 1);
operands[3] = assign_386_stack_local (HImode, 2);
if (memory_operand (operands[0], VOIDmode))
diff --git a/gcc/lcm.c b/gcc/lcm.c
index 8bbe893..c403485 100644
--- a/gcc/lcm.c
+++ b/gcc/lcm.c
@@ -63,6 +63,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
#include "basic-block.h"
#include "output.h"
#include "tm_p.h"
+#include "function.h"
/* We want target macros for the mode switching code to be able to refer
to instruction attribute values. */
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 5e63794..8932409 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -3493,21 +3493,6 @@ rest_of_compilation (decl)
timevar_pop (TV_RENAME_REGISTERS);
}
- if (flag_if_conversion2)
- {
- timevar_push (TV_IFCVT2);
- open_dump_file (DFI_ce3, decl);
-
- if_convert (1);
-
- close_dump_file (DFI_ce3, print_rtl_with_bb, insns);
- timevar_pop (TV_IFCVT2);
- }
-#ifdef STACK_REGS
- if (optimize)
- split_all_insns (1);
-#endif
-
if (optimize > 0)
{
timevar_push (TV_REORDER_BLOCKS);
@@ -3530,6 +3515,21 @@ rest_of_compilation (decl)
timevar_pop (TV_REORDER_BLOCKS);
}
+ if (flag_if_conversion2)
+ {
+ timevar_push (TV_IFCVT2);
+ open_dump_file (DFI_ce3, decl);
+
+ if_convert (1);
+
+ close_dump_file (DFI_ce3, print_rtl_with_bb, insns);
+ timevar_pop (TV_IFCVT2);
+ }
+#ifdef STACK_REGS
+ if (optimize)
+ split_all_insns (1);
+#endif
+
#ifdef INSN_SCHEDULING
if (optimize > 0 && flag_schedule_insns_after_reload)
{