Makefile.in (optabs.o): Add dependencies on basic-block.h and hard-reg-set.h.
* Makefile.in (optabs.o): Add dependencies on basic-block.h and hard-reg-set.h. * basic-block.h (control_flow_insn_p): Fuction was exported. * cfgbuild.c (control_flow_insn_p): Fuction was made non-static. * optabs.c (emit_libcall_block): Emit REG_LIBCALL and REG_RETVAL notes only when the region is contained in a single basic block. From-SVN: r61149
This commit is contained in:
parent
142a5fe1af
commit
861b264c95
|
@ -1,3 +1,12 @@
|
|||
2003-01-10 Josef Zlomek <zlomj9am@artax.karlin.mff.cuni.cz>
|
||||
|
||||
* Makefile.in (optabs.o): Add dependencies on basic-block.h and
|
||||
hard-reg-set.h.
|
||||
* basic-block.h (control_flow_insn_p): Fuction was exported.
|
||||
* cfgbuild.c (control_flow_insn_p): Fuction was made non-static.
|
||||
* optabs.c (emit_libcall_block): Emit REG_LIBCALL and REG_RETVAL
|
||||
notes only when the region is contained in a single basic block.
|
||||
|
||||
2003-01-09 Eric Botcazou <ebotcazou@libertysurf.fr>
|
||||
|
||||
PR inline-asm/8832
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Makefile for GNU C compiler.
|
||||
# Copyright (C) 1987, 1988, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997
|
||||
# 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
# 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
|
||||
|
||||
#This file is part of GCC.
|
||||
|
||||
|
@ -1410,7 +1410,7 @@ explow.o : explow.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
|
|||
toplev.h function.h ggc.h $(TM_P_H)
|
||||
optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TREE_H) flags.h \
|
||||
insn-config.h $(EXPR_H) $(OPTABS_H) libfuncs.h $(RECOG_H) reload.h \
|
||||
toplev.h $(GGC_H) real.h $(TM_P_H) except.h
|
||||
toplev.h $(GGC_H) real.h $(TM_P_H) except.h hard-reg-set.h $(BASIC_BLOCK_H)
|
||||
dbxout.o : dbxout.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(RTL_H) flags.h \
|
||||
$(REGS_H) debug.h $(TM_P_H) $(TARGET_H) function.h langhooks.h \
|
||||
insn-config.h reload.h gstab.h xcoffout.h output.h dbxout.h toplev.h
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/* Define control and data flow tables, and regsets.
|
||||
Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
Copyright (C) 1987, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
@ -692,6 +692,7 @@ extern conflict_graph conflict_graph_compute
|
|||
extern bool mark_dfs_back_edges PARAMS ((void));
|
||||
extern void update_br_prob_note PARAMS ((basic_block));
|
||||
extern void fixup_abnormal_edges PARAMS ((void));
|
||||
extern bool control_flow_insn_p PARAMS ((rtx));
|
||||
|
||||
/* In dominance.c */
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
/* Control flow graph building code for GNU compiler.
|
||||
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
|
@ -57,7 +57,6 @@ static void make_eh_edge PARAMS ((sbitmap *, basic_block, rtx));
|
|||
static void find_bb_boundaries PARAMS ((basic_block));
|
||||
static void compute_outgoing_frequencies PARAMS ((basic_block));
|
||||
static bool inside_basic_block_p PARAMS ((rtx));
|
||||
static bool control_flow_insn_p PARAMS ((rtx));
|
||||
|
||||
/* Return true if insn is something that should be contained inside basic
|
||||
block. */
|
||||
|
@ -95,7 +94,7 @@ inside_basic_block_p (insn)
|
|||
/* Return true if INSN may cause control flow transfer, so it should be last in
|
||||
the basic block. */
|
||||
|
||||
static bool
|
||||
bool
|
||||
control_flow_insn_p (insn)
|
||||
rtx insn;
|
||||
{
|
||||
|
|
28
gcc/optabs.c
28
gcc/optabs.c
|
@ -1,6 +1,6 @@
|
|||
/* Expand the basic unary and binary arithmetic operations, for GNU compiler.
|
||||
Copyright (C) 1987, 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
||||
1999, 2000, 2001 Free Software Foundation, Inc.
|
||||
1999, 2000, 2001, 2003 Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GCC.
|
||||
|
||||
|
@ -40,6 +40,8 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
|||
#include "reload.h"
|
||||
#include "ggc.h"
|
||||
#include "real.h"
|
||||
#include "hard-reg-set.h"
|
||||
#include "basic-block.h"
|
||||
|
||||
/* Each optab contains info on how this target machine
|
||||
can perform a particular operation
|
||||
|
@ -2978,10 +2980,26 @@ emit_libcall_block (insns, target, result, equiv)
|
|||
/* Encapsulate the block so it gets manipulated as a unit. */
|
||||
if (!flag_non_call_exceptions || !may_trap_p (equiv))
|
||||
{
|
||||
REG_NOTES (first) = gen_rtx_INSN_LIST (REG_LIBCALL, last,
|
||||
REG_NOTES (first));
|
||||
REG_NOTES (last) = gen_rtx_INSN_LIST (REG_RETVAL, first,
|
||||
REG_NOTES (last));
|
||||
/* We can't attach the REG_LIBCALL and REG_RETVAL notes
|
||||
when the encapsulated region would not be in one basic block,
|
||||
i.e. when there is a control_flow_insn_p insn between FIRST and LAST.
|
||||
*/
|
||||
bool attach_libcall_retval_notes = true;
|
||||
next = NEXT_INSN (last);
|
||||
for (insn = first; insn != next; insn = NEXT_INSN (insn))
|
||||
if (control_flow_insn_p (insn))
|
||||
{
|
||||
attach_libcall_retval_notes = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (attach_libcall_retval_notes)
|
||||
{
|
||||
REG_NOTES (first) = gen_rtx_INSN_LIST (REG_LIBCALL, last,
|
||||
REG_NOTES (first));
|
||||
REG_NOTES (last) = gen_rtx_INSN_LIST (REG_RETVAL, first,
|
||||
REG_NOTES (last));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue