1992-03-07 00:36:01 +01:00
|
|
|
|
/* Definitions for code generation pass of GNU compiler.
|
2000-02-26 07:04:48 +01:00
|
|
|
|
Copyright (C) 1987, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
|
2006-02-13 02:55:37 +01:00
|
|
|
|
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
|
2005-01-11 10:51:17 +01:00
|
|
|
|
Free Software Foundation, Inc.
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
This file is part of GCC.
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
GCC is free software; you can redistribute it and/or modify it under
|
|
|
|
|
the terms of the GNU General Public License as published by the Free
|
|
|
|
|
Software Foundation; either version 2, or (at your option) any later
|
|
|
|
|
version.
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
|
WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
|
|
|
|
for more details.
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
Makefile.in, [...]: replace "GNU CC" with "GCC".
* Makefile.in, alias.c, basic-block.h, bb-reorder.c, bitmap.c,
bitmap.h, builtin-types.def, builtins.c, builtins.def,
c-aux-info.c, c-common.c, c-common.def, c-common.h,
c-convert.c, c-decl.c, c-dump.c, c-dump.h, c-errors.c,
c-format.c, c-lang.c, c-lex.c, c-lex.h, c-parse.in,
c-pragma.c, c-pragma.h, c-semantics.c, c-tree.h, c-typeck.c,
caller-save.c, calls.c, collect2.c, collect2.h, combine.c,
conditions.h, config.gcc, configure.frag, configure.in,
conflict.c, convert.c, convert.h, cppspec.c, crtstuff.c,
cse.c, cselib.c, cselib.h, dbxout.c, dbxout.h, defaults.h,
dependence.c, df.c, df.h, diagnostic.c, diagnostic.h,
doloop.c, dominance.c, dwarf.h, dwarf2.h, dwarf2asm.c,
dwarf2asm.h, dwarf2out.c, dwarf2out.h, dwarfout.c,
emit-rtl.c, errors.c, errors.h, except.c, except.h,
exgettext, explow.c, expmed.c, expr.c, expr.h, final.c,
fixproto, flags.h, flow.c, fold-const.c, fp-test.c,
function.c, function.h, gbl-ctors.h, gcc.c, gcc.h, gcc.hlp,
gccspec.c, gcov-io.h, gcse.c, genattr.c, genattrtab.c,
gencheck.c, gencodes.c, genconfig.c, genemit.c,
genextract.c, genflags.c, gengenrtl.c, genmultilib,
genopinit.c, genoutput.c, genpeep.c, genrecog.c,
gensupport.c, gensupport.h, ggc-callbacks.c, ggc-common.c,
ggc-none.c, ggc-page.c, ggc-simple.c, ggc.h, global.c,
graph.c, graph.h, gthr-aix.h, gthr-dce.h, gthr-posix.h,
gthr-rtems.h, gthr-single.h, gthr-solaris.h, gthr-vxworks.h,
gthr-win32.h, gthr.h, haifa-sched.c, halfpic.c, halfpic.h,
hard-reg-set.h, hwint.h, ifcvt.c, input.h, insn-addr.h,
integrate.c, integrate.h, jump.c, lcm.c, libgcc2.c,
libgcc2.h, lists.c, local-alloc.c, loop.c, loop.h,
machmode.def, machmode.h, main.c, mbchar.c, mbchar.h,
mips-tdump.c, mips-tfile.c, mklibgcc.in, mkmap-flat.awk,
mkmap-symver.awk, optabs.c, output.h, params.c, params.def,
params.h, predict.c, predict.def, predict.h, prefix.c,
prefix.h, print-rtl.c, print-tree.c, profile.c, protoize.c,
read-rtl.c, real.c, real.h, recog.c, recog.h, reg-stack.c,
regclass.c, regmove.c, regrename.c, regs.h, reload.c,
reload.h, reload1.c, reorg.c, resource.c, resource.h, rtl.c,
rtl.def, rtl.h, rtlanal.c, sbitmap.c, sbitmap.h,
sched-deps.c, sched-ebb.c, sched-int.h, sched-rgn.c,
sched-vis.c, sdbout.c, sdbout.h, sibcall.c, simplify-rtx.c,
ssa-ccp.c, ssa-dce.c, ssa.c, ssa.h, stmt.c, stor-layout.c,
stringpool.c, system.h, timevar.c, timevar.def, timevar.h,
tlink.c, toplev.c, toplev.h, tree.c, tree.def, tree.h,
tsystem.h, unroll.c, unwind-dw2-fde.c, unwind-dw2-fde.h,
unwind-dw2.c, unwind-pe.h, unwind-sjlj.c, unwind.h,
unwind.inc, varasm.c, varray.c, varray.h, xcoffout.c,
xcoffout.h: replace "GNU CC" with "GCC".
From-SVN: r45105
2001-08-22 16:35:51 +02:00
|
|
|
|
along with GCC; see the file COPYING. If not, write to the Free
|
2005-06-25 04:02:01 +02:00
|
|
|
|
Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
|
|
|
02110-1301, USA. */
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
#ifndef GCC_EXPR_H
|
|
|
|
|
#define GCC_EXPR_H
|
|
|
|
|
|
|
|
|
|
/* For inhibit_defer_pop */
|
|
|
|
|
#include "function.h"
|
|
|
|
|
/* For XEXP, GEN_INT, rtx_code */
|
|
|
|
|
#include "rtl.h"
|
|
|
|
|
/* For optimize_size */
|
|
|
|
|
#include "flags.h"
|
2006-04-03 05:07:40 +02:00
|
|
|
|
/* For host_integerp, tree_low_cst, fold_convert, size_binop, ssize_int,
|
|
|
|
|
TREE_CODE, TYPE_SIZE, int_size_in_bytes, */
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
#include "tree.h"
|
|
|
|
|
/* For GET_MODE_BITSIZE, word_mode */
|
|
|
|
|
#include "machmode.h"
|
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* The default branch cost is 1. */
|
|
|
|
|
#ifndef BRANCH_COST
|
|
|
|
|
#define BRANCH_COST 1
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* This is the 4th arg to `expand_expr'.
|
2003-02-23 23:19:39 +01:00
|
|
|
|
EXPAND_STACK_PARM means we are possibly expanding a call param onto
|
2004-12-14 17:24:42 +01:00
|
|
|
|
the stack.
|
1992-03-07 00:36:01 +01:00
|
|
|
|
EXPAND_SUM means it is ok to return a PLUS rtx or MULT rtx.
|
|
|
|
|
EXPAND_INITIALIZER is similar but also record any labels on forced_labels.
|
|
|
|
|
EXPAND_CONST_ADDRESS means it is ok to return a MEM whose address
|
1997-08-02 19:17:40 +02:00
|
|
|
|
is a constant that is not a legitimate address.
|
2003-06-09 05:21:56 +02:00
|
|
|
|
EXPAND_WRITE means we are only going to write to the resulting rtx.
|
|
|
|
|
EXPAND_MEMORY means we are interested in a memory result, even if
|
|
|
|
|
the memory is constant and we could have propagated a constant value. */
|
2004-12-14 17:24:42 +01:00
|
|
|
|
enum expand_modifier {EXPAND_NORMAL = 0, EXPAND_STACK_PARM, EXPAND_SUM,
|
2003-06-09 05:21:56 +02:00
|
|
|
|
EXPAND_CONST_ADDRESS, EXPAND_INITIALIZER, EXPAND_WRITE,
|
|
|
|
|
EXPAND_MEMORY};
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1999-04-30 01:01:29 +02:00
|
|
|
|
/* Prevent the compiler from deferring stack pops. See
|
|
|
|
|
inhibit_defer_pop for more information. */
|
|
|
|
|
#define NO_DEFER_POP (inhibit_defer_pop += 1)
|
|
|
|
|
|
|
|
|
|
/* Allow the compiler to defer stack pops. See inhibit_defer_pop for
|
|
|
|
|
more information. */
|
|
|
|
|
#define OK_DEFER_POP (inhibit_defer_pop -= 1)
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
2004-01-14 00:14:04 +01:00
|
|
|
|
/* If a memory-to-memory move would take MOVE_RATIO or more simple
|
2004-07-07 21:25:01 +02:00
|
|
|
|
move-instruction sequences, we will do a movmem or libcall instead. */
|
2004-01-14 00:14:04 +01:00
|
|
|
|
|
|
|
|
|
#ifndef MOVE_RATIO
|
2004-07-07 21:25:01 +02:00
|
|
|
|
#if defined (HAVE_movmemqi) || defined (HAVE_movmemhi) || defined (HAVE_movmemsi) || defined (HAVE_movmemdi) || defined (HAVE_movmemti)
|
2004-01-14 00:14:04 +01:00
|
|
|
|
#define MOVE_RATIO 2
|
|
|
|
|
#else
|
|
|
|
|
/* If we are optimizing for space (-Os), cut down the default move ratio. */
|
|
|
|
|
#define MOVE_RATIO (optimize_size ? 3 : 15)
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* If a clear memory operation would take CLEAR_RATIO or more simple
|
2005-06-28 21:56:23 +02:00
|
|
|
|
move-instruction sequences, we will do a setmem or libcall instead. */
|
2004-01-14 00:14:04 +01:00
|
|
|
|
|
|
|
|
|
#ifndef CLEAR_RATIO
|
2005-06-28 21:56:23 +02:00
|
|
|
|
#if defined (HAVE_setmemqi) || defined (HAVE_setmemhi) || defined (HAVE_setmemsi) || defined (HAVE_setmemdi) || defined (HAVE_setmemti)
|
2004-01-14 00:14:04 +01:00
|
|
|
|
#define CLEAR_RATIO 2
|
|
|
|
|
#else
|
|
|
|
|
/* If we are optimizing for space, cut down the default clear ratio. */
|
|
|
|
|
#define CLEAR_RATIO (optimize_size ? 3 : 15)
|
|
|
|
|
#endif
|
|
|
|
|
#endif
|
|
|
|
|
|
2003-05-02 16:22:09 +02:00
|
|
|
|
enum direction {none, upward, downward};
|
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Structure to record the size of a sequence of arguments
|
builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
(expand_builtin_strcpy): Pass correct type to size_binop.
(expand_builtin_strcmp): Likewise.
Clean up conditional structure.
* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
(complete_array_type): Don't use size_binop for MAXINDEX.
* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
(c_sizeof_nowarn, c_size_in_bytes): Likewise.
(c_alignof): Use size_one_node.
(build_unary_op): Pass arg of proper type to size_binop.
(really_start_incremental_init, push_init_level): Use sizetype for
constructor{,_bit,_unfilled}_index.
(pop_init_label, output_init_element): Likewise.
(output_pending_init_elements, process_init_element): Likewise.
* calls.c (compute_argument_block_size): Field VAR is ssizetype.
* expr.c (store_expr): Use size_int.
(store_constructor): Use proper types for size_binop args.
(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
(expand_expr_unaligned): Likewise.
(string_contant): Return object of sizetype.
* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
(ARGS_SIZE_TREE): Pass proper types to size_binop.
* fold-const.c (int_const_binop): Refine when size_int is called.
(fold_convert): Likewise.
(size_int_wide): Rework to take KIND as arg, only take low order
bits, handle new sizetype_tab datatype, and chain entries in
size_table.
(size_int_type_wide): New function.
(size_binop): Validate types of arguments.
(ssize_binop): Deleted.
(size_diffop): New function.
(extract_muldiv): Only fold division into multiplication for sizetypes.
* function.c (assign_parms): Use size_diffop and make sure
VAR field is of ssizetype; also pass proper type to size_binop.
(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
(round_down): Deleted from here.
* store-layout.c (sizetype_tab): Now an array.
(sizetype_set, early_root_list): New variables.
(variable_size): Use size_one_node.
(round_up): Pass proper type to size_binop.
(round_down): Moved to here and corrected as above.
(layout_record): Pass proper arg types to size_binop.
(layout_type): Likewise.
If sizetype_set is zero, record the type just laid out.
(make_unsigned_type): Don't call set_sizetype;
(make_signed_type): Likewise; also, call fixup_signed_type.
(initialize_sizetypes): New function.
(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
set name of bitsizetype to "bit_size_type".
Fix up type of sizes of all types made before call.
* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
* tree.c (fix_sizetype): Deleted.
(build_common_tree_nodes): Call initialize_sizetypes.
(build_common_tree_nodes_2): Don't call fix_sizetype.
* tree.h (TYPE_IS_SIZETYPE): New macro.
(initialize_sizetype): New declaration.
(enum size_type_kind): New type.
(struct sizetype_tab): Deleted.
(sizetype_tab): Now array; adjust sizetype macros.
(size_diffop, size_int_type_wide): New functions.
(size_int_wide): Change number of args and type; access macros changed.
(ssize_int, sbitsize_int): New macros.
* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
(ROUND_TYPE_SIZE_UNIT): New macro.
* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
for things that aren't sizes.
(expand_varying_length_assignment): Likewise.
* ch/convert.c (digest_array_tuple, convert): Likewise.
* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
(build_chill_slice_with_range): Likewise.
(build_chill_slice_with_length): Likewise.
(build_array_from_set): Adjust types for size_binop.
* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
(build_chill_sizeof): Use TYPE_SIZE_UNIT.
* ch/tree.c (build_string_type): Pass proper type to size_binop.
* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
size_binop on things that are not sizes; ssize_binop deleted.
Call size_diffop when appropriate.
(dfs_build_vcall_offset_vtbl_entries): Likewise.
(build_primary_vtable, build_secondary_vtable): Likewise.
(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
Variable I is HOST_WIDE_INT.
(get_vfield_offset): Pass proper types to size_binop.
(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
(finish_struct_1): Likewise.
(skip_rtti_stuff): Arg N is now pointer to signed.
(layout_class_type): Use size_zero_node.
* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
(xref_basetypes): BINFO_OFFSET is sizetype.
* cp/error.c (dump_expr): Don't use size_binop non-sizes.
* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
* cp/init.c (construct_virtual_bases): Fix type error.
(build_vec_delete_1): Pass proper type to size_binop and don't
fold result.
* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
* cp/search.c (dfs_find_vbases): Fix type error.
(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
* cp/tree.c (debug_binfo): Variable N is signed.
Use HOST_WIDE_INT_PRINT_DEC.
* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
size_one_node and size_zero_node.
(c_alignof): Use size_one_node.
(build_component_addr): Pass proper types to size_binop.
(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
type.
(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
(ffecom_tree_canonize_ref_): Likewise.
(type_for_mode): Handle TImode.
* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
(ffeste_io_ciclist_): Likewise.
* java/expr.c (build_java_ret): Pass proper type to size_binop.
From-SVN: r32225
2000-02-27 22:39:40 +01:00
|
|
|
|
as the sum of a tree-expression and a constant. This structure is
|
|
|
|
|
also used to store offsets from the stack, which might be negative,
|
|
|
|
|
so the variable part must be ssizetype, not sizetype. */
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
struct args_size
|
|
|
|
|
{
|
1998-04-04 15:32:39 +02:00
|
|
|
|
HOST_WIDE_INT constant;
|
1992-03-07 00:36:01 +01:00
|
|
|
|
tree var;
|
|
|
|
|
};
|
2003-05-02 16:22:09 +02:00
|
|
|
|
|
|
|
|
|
/* Package up various arg related fields of struct args for
|
|
|
|
|
locate_and_pad_parm. */
|
|
|
|
|
struct locate_and_pad_arg_data
|
|
|
|
|
{
|
|
|
|
|
/* Size of this argument on the stack, rounded up for any padding it
|
|
|
|
|
gets. If REG_PARM_STACK_SPACE is defined, then register parms are
|
|
|
|
|
counted here, otherwise they aren't. */
|
|
|
|
|
struct args_size size;
|
|
|
|
|
/* Offset of this argument from beginning of stack-args. */
|
|
|
|
|
struct args_size offset;
|
|
|
|
|
/* Offset to the start of the stack slot. Different from OFFSET
|
|
|
|
|
if this arg pads downward. */
|
|
|
|
|
struct args_size slot_offset;
|
|
|
|
|
/* The amount that the stack pointer needs to be adjusted to
|
|
|
|
|
force alignment for the next argument. */
|
|
|
|
|
struct args_size alignment_pad;
|
2003-07-14 07:17:18 +02:00
|
|
|
|
/* Which way we should pad this arg. */
|
|
|
|
|
enum direction where_pad;
|
2005-01-11 10:51:17 +01:00
|
|
|
|
/* slot_offset is at least this aligned. */
|
|
|
|
|
unsigned int boundary;
|
2003-05-02 16:22:09 +02:00
|
|
|
|
};
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Add the value of the tree INC to the `struct args_size' TO. */
|
|
|
|
|
|
2006-04-03 05:07:40 +02:00
|
|
|
|
#define ADD_PARM_SIZE(TO, INC) \
|
|
|
|
|
do { \
|
|
|
|
|
tree inc = (INC); \
|
|
|
|
|
if (host_integerp (inc, 0)) \
|
|
|
|
|
(TO).constant += tree_low_cst (inc, 0); \
|
|
|
|
|
else if ((TO).var == 0) \
|
|
|
|
|
(TO).var = fold_convert (ssizetype, inc); \
|
|
|
|
|
else \
|
|
|
|
|
(TO).var = size_binop (PLUS_EXPR, (TO).var, \
|
|
|
|
|
fold_convert (ssizetype, inc)); \
|
2002-03-26 10:06:11 +01:00
|
|
|
|
} while (0)
|
|
|
|
|
|
2006-04-03 05:07:40 +02:00
|
|
|
|
#define SUB_PARM_SIZE(TO, DEC) \
|
|
|
|
|
do { \
|
|
|
|
|
tree dec = (DEC); \
|
|
|
|
|
if (host_integerp (dec, 0)) \
|
|
|
|
|
(TO).constant -= tree_low_cst (dec, 0); \
|
|
|
|
|
else if ((TO).var == 0) \
|
|
|
|
|
(TO).var = size_binop (MINUS_EXPR, ssize_int (0), \
|
|
|
|
|
fold_convert (ssizetype, dec)); \
|
|
|
|
|
else \
|
|
|
|
|
(TO).var = size_binop (MINUS_EXPR, (TO).var, \
|
|
|
|
|
fold_convert (ssizetype, dec)); \
|
2002-03-26 10:06:11 +01:00
|
|
|
|
} while (0)
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
(expand_builtin_strcpy): Pass correct type to size_binop.
(expand_builtin_strcmp): Likewise.
Clean up conditional structure.
* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
(complete_array_type): Don't use size_binop for MAXINDEX.
* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
(c_sizeof_nowarn, c_size_in_bytes): Likewise.
(c_alignof): Use size_one_node.
(build_unary_op): Pass arg of proper type to size_binop.
(really_start_incremental_init, push_init_level): Use sizetype for
constructor{,_bit,_unfilled}_index.
(pop_init_label, output_init_element): Likewise.
(output_pending_init_elements, process_init_element): Likewise.
* calls.c (compute_argument_block_size): Field VAR is ssizetype.
* expr.c (store_expr): Use size_int.
(store_constructor): Use proper types for size_binop args.
(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
(expand_expr_unaligned): Likewise.
(string_contant): Return object of sizetype.
* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
(ARGS_SIZE_TREE): Pass proper types to size_binop.
* fold-const.c (int_const_binop): Refine when size_int is called.
(fold_convert): Likewise.
(size_int_wide): Rework to take KIND as arg, only take low order
bits, handle new sizetype_tab datatype, and chain entries in
size_table.
(size_int_type_wide): New function.
(size_binop): Validate types of arguments.
(ssize_binop): Deleted.
(size_diffop): New function.
(extract_muldiv): Only fold division into multiplication for sizetypes.
* function.c (assign_parms): Use size_diffop and make sure
VAR field is of ssizetype; also pass proper type to size_binop.
(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
(round_down): Deleted from here.
* store-layout.c (sizetype_tab): Now an array.
(sizetype_set, early_root_list): New variables.
(variable_size): Use size_one_node.
(round_up): Pass proper type to size_binop.
(round_down): Moved to here and corrected as above.
(layout_record): Pass proper arg types to size_binop.
(layout_type): Likewise.
If sizetype_set is zero, record the type just laid out.
(make_unsigned_type): Don't call set_sizetype;
(make_signed_type): Likewise; also, call fixup_signed_type.
(initialize_sizetypes): New function.
(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
set name of bitsizetype to "bit_size_type".
Fix up type of sizes of all types made before call.
* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
* tree.c (fix_sizetype): Deleted.
(build_common_tree_nodes): Call initialize_sizetypes.
(build_common_tree_nodes_2): Don't call fix_sizetype.
* tree.h (TYPE_IS_SIZETYPE): New macro.
(initialize_sizetype): New declaration.
(enum size_type_kind): New type.
(struct sizetype_tab): Deleted.
(sizetype_tab): Now array; adjust sizetype macros.
(size_diffop, size_int_type_wide): New functions.
(size_int_wide): Change number of args and type; access macros changed.
(ssize_int, sbitsize_int): New macros.
* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
(ROUND_TYPE_SIZE_UNIT): New macro.
* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
for things that aren't sizes.
(expand_varying_length_assignment): Likewise.
* ch/convert.c (digest_array_tuple, convert): Likewise.
* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
(build_chill_slice_with_range): Likewise.
(build_chill_slice_with_length): Likewise.
(build_array_from_set): Adjust types for size_binop.
* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
(build_chill_sizeof): Use TYPE_SIZE_UNIT.
* ch/tree.c (build_string_type): Pass proper type to size_binop.
* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
size_binop on things that are not sizes; ssize_binop deleted.
Call size_diffop when appropriate.
(dfs_build_vcall_offset_vtbl_entries): Likewise.
(build_primary_vtable, build_secondary_vtable): Likewise.
(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
Variable I is HOST_WIDE_INT.
(get_vfield_offset): Pass proper types to size_binop.
(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
(finish_struct_1): Likewise.
(skip_rtti_stuff): Arg N is now pointer to signed.
(layout_class_type): Use size_zero_node.
* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
(xref_basetypes): BINFO_OFFSET is sizetype.
* cp/error.c (dump_expr): Don't use size_binop non-sizes.
* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
* cp/init.c (construct_virtual_bases): Fix type error.
(build_vec_delete_1): Pass proper type to size_binop and don't
fold result.
* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
* cp/search.c (dfs_find_vbases): Fix type error.
(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
* cp/tree.c (debug_binfo): Variable N is signed.
Use HOST_WIDE_INT_PRINT_DEC.
* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
size_one_node and size_zero_node.
(c_alignof): Use size_one_node.
(build_component_addr): Pass proper types to size_binop.
(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
type.
(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
(ffecom_tree_canonize_ref_): Likewise.
(type_for_mode): Handle TImode.
* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
(ffeste_io_ciclist_): Likewise.
* java/expr.c (build_java_ret): Pass proper type to size_binop.
From-SVN: r32225
2000-02-27 22:39:40 +01:00
|
|
|
|
/* Convert the implicit sum in a `struct args_size' into a tree
|
|
|
|
|
of type ssizetype. */
|
|
|
|
|
#define ARGS_SIZE_TREE(SIZE) \
|
|
|
|
|
((SIZE).var == 0 ? ssize_int ((SIZE).constant) \
|
2006-04-03 05:07:40 +02:00
|
|
|
|
: size_binop (PLUS_EXPR, fold_convert (ssizetype, (SIZE).var), \
|
2002-02-20 19:34:28 +01:00
|
|
|
|
ssize_int ((SIZE).constant)))
|
builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
(expand_builtin_strcpy): Pass correct type to size_binop.
(expand_builtin_strcmp): Likewise.
Clean up conditional structure.
* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
(complete_array_type): Don't use size_binop for MAXINDEX.
* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
(c_sizeof_nowarn, c_size_in_bytes): Likewise.
(c_alignof): Use size_one_node.
(build_unary_op): Pass arg of proper type to size_binop.
(really_start_incremental_init, push_init_level): Use sizetype for
constructor{,_bit,_unfilled}_index.
(pop_init_label, output_init_element): Likewise.
(output_pending_init_elements, process_init_element): Likewise.
* calls.c (compute_argument_block_size): Field VAR is ssizetype.
* expr.c (store_expr): Use size_int.
(store_constructor): Use proper types for size_binop args.
(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
(expand_expr_unaligned): Likewise.
(string_contant): Return object of sizetype.
* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
(ARGS_SIZE_TREE): Pass proper types to size_binop.
* fold-const.c (int_const_binop): Refine when size_int is called.
(fold_convert): Likewise.
(size_int_wide): Rework to take KIND as arg, only take low order
bits, handle new sizetype_tab datatype, and chain entries in
size_table.
(size_int_type_wide): New function.
(size_binop): Validate types of arguments.
(ssize_binop): Deleted.
(size_diffop): New function.
(extract_muldiv): Only fold division into multiplication for sizetypes.
* function.c (assign_parms): Use size_diffop and make sure
VAR field is of ssizetype; also pass proper type to size_binop.
(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
(round_down): Deleted from here.
* store-layout.c (sizetype_tab): Now an array.
(sizetype_set, early_root_list): New variables.
(variable_size): Use size_one_node.
(round_up): Pass proper type to size_binop.
(round_down): Moved to here and corrected as above.
(layout_record): Pass proper arg types to size_binop.
(layout_type): Likewise.
If sizetype_set is zero, record the type just laid out.
(make_unsigned_type): Don't call set_sizetype;
(make_signed_type): Likewise; also, call fixup_signed_type.
(initialize_sizetypes): New function.
(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
set name of bitsizetype to "bit_size_type".
Fix up type of sizes of all types made before call.
* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
* tree.c (fix_sizetype): Deleted.
(build_common_tree_nodes): Call initialize_sizetypes.
(build_common_tree_nodes_2): Don't call fix_sizetype.
* tree.h (TYPE_IS_SIZETYPE): New macro.
(initialize_sizetype): New declaration.
(enum size_type_kind): New type.
(struct sizetype_tab): Deleted.
(sizetype_tab): Now array; adjust sizetype macros.
(size_diffop, size_int_type_wide): New functions.
(size_int_wide): Change number of args and type; access macros changed.
(ssize_int, sbitsize_int): New macros.
* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
(ROUND_TYPE_SIZE_UNIT): New macro.
* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
for things that aren't sizes.
(expand_varying_length_assignment): Likewise.
* ch/convert.c (digest_array_tuple, convert): Likewise.
* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
(build_chill_slice_with_range): Likewise.
(build_chill_slice_with_length): Likewise.
(build_array_from_set): Adjust types for size_binop.
* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
(build_chill_sizeof): Use TYPE_SIZE_UNIT.
* ch/tree.c (build_string_type): Pass proper type to size_binop.
* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
size_binop on things that are not sizes; ssize_binop deleted.
Call size_diffop when appropriate.
(dfs_build_vcall_offset_vtbl_entries): Likewise.
(build_primary_vtable, build_secondary_vtable): Likewise.
(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
Variable I is HOST_WIDE_INT.
(get_vfield_offset): Pass proper types to size_binop.
(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
(finish_struct_1): Likewise.
(skip_rtti_stuff): Arg N is now pointer to signed.
(layout_class_type): Use size_zero_node.
* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
(xref_basetypes): BINFO_OFFSET is sizetype.
* cp/error.c (dump_expr): Don't use size_binop non-sizes.
* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
* cp/init.c (construct_virtual_bases): Fix type error.
(build_vec_delete_1): Pass proper type to size_binop and don't
fold result.
* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
* cp/search.c (dfs_find_vbases): Fix type error.
(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
* cp/tree.c (debug_binfo): Variable N is signed.
Use HOST_WIDE_INT_PRINT_DEC.
* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
size_one_node and size_zero_node.
(c_alignof): Use size_one_node.
(build_component_addr): Pass proper types to size_binop.
(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
type.
(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
(ffecom_tree_canonize_ref_): Likewise.
(type_for_mode): Handle TImode.
* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
(ffeste_io_ciclist_): Likewise.
* java/expr.c (build_java_ret): Pass proper type to size_binop.
From-SVN: r32225
2000-02-27 22:39:40 +01:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Convert the implicit sum in a `struct args_size' into an rtx. */
|
builtins.c (c_strlen): Use size_diffop and return ssizetype value.
* builtins.c (c_strlen): Use size_diffop and return ssizetype value.
(expand_builtin_strcpy): Pass correct type to size_binop.
(expand_builtin_strcmp): Likewise.
Clean up conditional structure.
* c-decl.c (init_decl_processing): Don't call set_sizetype twice.
(complete_array_type): Don't use size_binop for MAXINDEX.
* c-typeck.c (c_sizeof): Use size_one_node and TYPE_SIZE_UNIT.
(c_sizeof_nowarn, c_size_in_bytes): Likewise.
(c_alignof): Use size_one_node.
(build_unary_op): Pass arg of proper type to size_binop.
(really_start_incremental_init, push_init_level): Use sizetype for
constructor{,_bit,_unfilled}_index.
(pop_init_label, output_init_element): Likewise.
(output_pending_init_elements, process_init_element): Likewise.
* calls.c (compute_argument_block_size): Field VAR is ssizetype.
* expr.c (store_expr): Use size_int.
(store_constructor): Use proper types for size_binop args.
(get_inner_reference, expand_expr, case ARRAY_REF): Likewise.
(expand_expr_unaligned): Likewise.
(string_contant): Return object of sizetype.
* expr.h (SUB_PARM_SIZE): Call size_diffop and pass proper types.
(ARGS_SIZE_RTX): Call ARGS_SIZE_TREE.
(ARGS_SIZE_TREE): Pass proper types to size_binop.
* fold-const.c (int_const_binop): Refine when size_int is called.
(fold_convert): Likewise.
(size_int_wide): Rework to take KIND as arg, only take low order
bits, handle new sizetype_tab datatype, and chain entries in
size_table.
(size_int_type_wide): New function.
(size_binop): Validate types of arguments.
(ssize_binop): Deleted.
(size_diffop): New function.
(extract_muldiv): Only fold division into multiplication for sizetypes.
* function.c (assign_parms): Use size_diffop and make sure
VAR field is of ssizetype; also pass proper type to size_binop.
(locate_and_pad_parm, pad_to_arg_alignment): Likewise.
(round_down): Deleted from here.
* store-layout.c (sizetype_tab): Now an array.
(sizetype_set, early_root_list): New variables.
(variable_size): Use size_one_node.
(round_up): Pass proper type to size_binop.
(round_down): Moved to here and corrected as above.
(layout_record): Pass proper arg types to size_binop.
(layout_type): Likewise.
If sizetype_set is zero, record the type just laid out.
(make_unsigned_type): Don't call set_sizetype;
(make_signed_type): Likewise; also, call fixup_signed_type.
(initialize_sizetypes): New function.
(set_sizetype): Make copy of types, set TYPE_IS_SIZETYPE, and
set name of bitsizetype to "bit_size_type".
Fix up type of sizes of all types made before call.
* tm.texi (ROUND_TYPE_SIZE_UNIT): New macro.
* tree.c (fix_sizetype): Deleted.
(build_common_tree_nodes): Call initialize_sizetypes.
(build_common_tree_nodes_2): Don't call fix_sizetype.
* tree.h (TYPE_IS_SIZETYPE): New macro.
(initialize_sizetype): New declaration.
(enum size_type_kind): New type.
(struct sizetype_tab): Deleted.
(sizetype_tab): Now array; adjust sizetype macros.
(size_diffop, size_int_type_wide): New functions.
(size_int_wide): Change number of args and type; access macros changed.
(ssize_int, sbitsize_int): New macros.
* config/i960/i960.h (ROUND_TYPE_SIZE): Use size_int.
(ROUND_TYPE_SIZE_UNIT): New macro.
* ch/actions.c (chill_convert_for_assignment): Don't use size_binop
for things that aren't sizes.
(expand_varying_length_assignment): Likewise.
* ch/convert.c (digest_array_tuple, convert): Likewise.
* ch/typeck.c (build_chill_slice, smash_dummy_type): Likewise.
(build_chill_slice_with_range): Likewise.
(build_chill_slice_with_length): Likewise.
(build_array_from_set): Adjust types for size_binop.
* ch/expr.c (build_concat_expr, build_chill_repetition_op): Likewise.
(build_chill_sizeof): Use TYPE_SIZE_UNIT.
* ch/tree.c (build_string_type): Pass proper type to size_binop.
* cp/class.c (dfs_build_vtable_offset_vtbl_entries): Don't use
size_binop on things that are not sizes; ssize_binop deleted.
Call size_diffop when appropriate.
(dfs_build_vcall_offset_vtbl_entries): Likewise.
(build_primary_vtable, build_secondary_vtable): Likewise.
(dfs_set_offset_for_unshared_vbases, dfs_modify_vtables): Likewise.
Variable I is HOST_WIDE_INT.
(get_vfield_offset): Pass proper types to size_binop.
(size_extra_vtbl_entries, layout_virtual_bases): Likewise.
(finish_struct_1): Likewise.
(skip_rtti_stuff): Arg N is now pointer to signed.
(layout_class_type): Use size_zero_node.
* cp/cp-tree.h (skip_rtti_stuff): Arg N is pointer to signed.
* cp/cvt.c (cp_convert_to_pointer): Pass proper types to size_binop.
* cp/decl.c (complete_arry_type): Pass proper types to size_binop.
(xref_basetypes): BINFO_OFFSET is sizetype.
* cp/error.c (dump_expr): Don't use size_binop non-sizes.
* cp/expr.c (cplus_expand_constant): Pass proper types to size_binop.
* cp/init.c (construct_virtual_bases): Fix type error.
(build_vec_delete_1): Pass proper type to size_binop and don't
fold result.
* cp/lex.c (cp_make_lang_type): BINFO_OFFSET is sizetype.
* cp/rtti.c (get_base_offset): Pass proper type to size_binop.
* cp/search.c (dfs_find_vbases): Fix type error.
(expand_upcast_fixups): Arg to skip_rtti_stuff is pointer to signed.
(dfs_get_vbase_types): BINFO_OFFSET is sizetype.
* cp/tree.c (debug_binfo): Variable N is signed.
Use HOST_WIDE_INT_PRINT_DEC.
* cp/typeck.c (comptypes): sizetype is same as equivalent integer type.
(c_sizeof, c_sizeof_nowarn, expr_sizeof): Use TYPE_SIZE_UNIT,
size_one_node and size_zero_node.
(c_alignof): Use size_one_node.
(build_component_addr): Pass proper types to size_binop.
(expand_ptrmemfunc_cst): Don't use size_binop on non-sizes.
* f/com.c (ffecom_arrayref_): Convert args to size_binop to proper
type.
(ffecom_tree_canonize_ptr_): Don't use size_binop for non-sizes.
(ffecom_tree_canonize_ref_): Likewise.
(type_for_mode): Handle TImode.
* f/ste.c (ffeste_io_dofio_, ffeste_io_douio_): Use TYPE_SIZE_UNIT.
(ffeste_io_ciclist_): Likewise.
* java/expr.c (build_java_ret): Pass proper type to size_binop.
From-SVN: r32225
2000-02-27 22:39:40 +01:00
|
|
|
|
#define ARGS_SIZE_RTX(SIZE) \
|
|
|
|
|
((SIZE).var == 0 ? GEN_INT ((SIZE).constant) \
|
2006-01-31 05:44:14 +01:00
|
|
|
|
: expand_normal (ARGS_SIZE_TREE (SIZE)))
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Supply a default definition for FUNCTION_ARG_PADDING:
|
1992-12-01 00:05:11 +01:00
|
|
|
|
usually pad upward, but pad short args downward on
|
1992-03-07 00:36:01 +01:00
|
|
|
|
big-endian machines. */
|
|
|
|
|
|
2003-09-15 22:23:43 +02:00
|
|
|
|
#define DEFAULT_FUNCTION_ARG_PADDING(MODE, TYPE) \
|
1994-11-16 22:10:09 +01:00
|
|
|
|
(! BYTES_BIG_ENDIAN \
|
|
|
|
|
? upward \
|
|
|
|
|
: (((MODE) == BLKmode \
|
|
|
|
|
? ((TYPE) && TREE_CODE (TYPE_SIZE (TYPE)) == INTEGER_CST \
|
|
|
|
|
&& int_size_in_bytes (TYPE) < (PARM_BOUNDARY / BITS_PER_UNIT)) \
|
|
|
|
|
: GET_MODE_BITSIZE (MODE) < PARM_BOUNDARY) \
|
|
|
|
|
? downward : upward))
|
2003-09-15 22:23:43 +02:00
|
|
|
|
|
|
|
|
|
#ifndef FUNCTION_ARG_PADDING
|
|
|
|
|
#define FUNCTION_ARG_PADDING(MODE, TYPE) \
|
|
|
|
|
DEFAULT_FUNCTION_ARG_PADDING ((MODE), (TYPE))
|
1992-03-07 00:36:01 +01:00
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* Supply a default definition for FUNCTION_ARG_BOUNDARY. Normally, we let
|
|
|
|
|
FUNCTION_ARG_PADDING, which also pads the length, handle any needed
|
|
|
|
|
alignment. */
|
2002-06-03 03:13:17 +02:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
#ifndef FUNCTION_ARG_BOUNDARY
|
|
|
|
|
#define FUNCTION_ARG_BOUNDARY(MODE, TYPE) PARM_BOUNDARY
|
|
|
|
|
#endif
|
|
|
|
|
|
tree.c (get_inner_array_type): New function.
Thu Jun 4 14:35:27 1998 David Edelsohn <edelsohn@mhpcc.edu>
* tree.c (get_inner_array_type): New function.
* tree.h (get_inner_array_type): Prototype.
* expr.h (STACK_SAVEAREA_MODE): New macro.
* expr.c (expand_builtin_setjmp): Initialize sa_mode using
STACK_SAVEAREA_MODE.
(expand_builtin_longjmp): Likewise.
* explow.c (emit_stack_save): Likewise.
(allocate_dynamic_stack_space): Use Pmode not insn_operand_mode.
* rs6000/aix41.h (ASM_CPU_SPEC): Define relative to ASM_DEFAULT_SPEC.
(CPP_CPU_SPEC): Define relative to CPU_DEFAULT_SPEC.
* rs6000/aix43.h: New file.
* rs6000/t-aix43: New file.
* rs6000/x-aix41: New file.
* rs6000/x-aix43: New file.
* configure.in (rs6000-ibm-aix*): Use them.
* rs6000/powerpc.h: Delete.
* rs6000/sysv4.h: Move necessary powerpc.h definitions to here.
* rs6000/netware.h: and here.
* rs6000/win-nt.h: and here.
* rs6000/rs6000.c (processor_target_table, 620): Do not affect
MASK_POWERPC64.
(rs6000_override_options): Ignore flag_pic for AIX.
(rs6000_immed_double_const): Delete.
(u_short_cint_operand): Don't assume 32-bit CONST_INT.
(reg_or_u_short_operand): Don't assume 32-bit CONST_INT.
(num_insns_constant): mask64_operand() is 2 insns.
(logical_operand): Don't assume 32-bit CONST_INT.
(non_logical_cint_operand): Don't assume 32-bit CONST_INT.
(easy_fp_constant): Any CONST_DOUBLE_HIGH is okay for 64-bit.
(mask_constant): HOST_WIDE_INT parameter.
(non_and_cint_operand): Delete.
(mask64_operand): New function.
(and64_operand): New function.
(function_arg_advance): DImode arguments do not need special
alignment when 64-bit.
(function_arg): Likewise.
(setup_incoming_varargs): Reverse reg_size assignment.
(print_operand): HOST_WIDE_INT second parameter.
(print_operand, 'B'): New case.
(print_operand, 'M'): Fix typo in lossage string.
(print_operandm 'S'): New case.
(rs6000_stack_info): Reverse reg_size assignment. Use total_raw_size
to compute AIX push_p. Use reg_size to compute {cr,lr}_save_offset.
(rs6000_output_load_toc_table): Reverse init_ptr assignment. Use
TARGET_64BIT not TARGET_POWERPC64. Convert fprintf to fputs.
Load GOT highpart, don't add it. Add lowpart with {cal|la}.
(rs6000_allocate_stack_space): Use {cal|la}.
(output_epilog): Use {cal|la}
(output_function_profiler): Add call glue to mcount call.
Load GOT highpart, don't add it. Add lowpart with {cal|la}.
* rs6000/rs6000.h (TARGET_SWITCHES): Add powerpc64.
(STACK_BOUNDARY): Depend on TARGET_32BIT.
(ADJUST_FIELD_ALIGN): Calculate array alignment using innermost type.
(CONST_OK_FOR_LETTER_P): Don't assume 32-bit CONST_INT.
(EXTRA_CONSTRAINTS): Remove NT 'S' and 'T'. Replace 'S' with
64-bit mask operand.
(RS6000_SAVE_TOC): Depend on TARGET_32BIT.
(STACK_SAVEAREA_MODE): New macro.
(LEGITIMATE_CONSTANT_P): DImode okay for 64bit.
(LEGITIMIZE_RELOAD_ADDRESS): New macro.
(RTX_COSTS, AND/IOR/XOR): Reflect current machine description.
(ASM_FILE_START): Emit 64-bit ABI directive.
(ASM_DECLARE_FUNCTION_NAME): Align CSECT on doubleword in 64-bit mode.
(ASM_OUTPUT_SPECIAL_POOL_ENTRY): DImode okay for 64-bit.
(PREDICATE_CODES): Add "and64_operand" and "mask64_operand".
Delete "non_and_cint_operand". "input_operand" includes CONST_DOUBLE.
* rs6000/rs6000.md (iorsi3, xorsi3): Use HOST_WIDE_INT for mask.
Restore define_splits.
(floatsidf2, floatunssidf2): Remove !TARGET_POWERPC64 final constraint.
(floatsidf2_internal, floatunssidf2_internal2): Likewise.
Do not specify base register operand mode.
(floatsidf2_loadaddr): Do not specify base register operand mode.
(floatsidf2_store1, floatsidf2_store2): Operand 1 must be base
register; do not specify mode. Remove !TARGET_POWERPC64 final
constraint.
(floatsidf2_load): Do not specify base register operand mode. Remove
!TARGET_POWERPC64 final constraint.
(fix_truncdfsi2_internal, fix_truncdfsi2_{store,load}): Do not specify
base register operand mode.
(adddi3): Split large constants early.
(absdi3): Shift by 63, not 31.
(*mulsidi3_ppc64): New pattern.
(rotldi3): Add masking combiner patterns.
(anddi3): Add rldic{r,l} masking. Remove split of large constants
because PPC insns zero-extend.
(iordi3, xordi3): Split large constants early.
(movsi matcher): Remove S and T constraints.
(movsf const_double): create SImode constant from TARGET_DOUBLE.
(movdf_hardfloat32): Add default abort() case.
(movdf easy_fp_const): create DImode constant from TARGET_DOUBLE.
(movdi): Remove 64-bit constant generator. Try to convert
CONST_DOUBLE to CONST_INT. Handle TOC memory constants.
(movdi_32): Add default abort() case.
(movdi_64): Add numerous ways to split 64-bit constants.
Make catch-all define_split more optimal and never FAIL.
(movti_ppc64): Add default abort() case.
(allocate_stack): Remove operand modes. Use Pmode.
(restore_stack_block): Remove operand modes. Generate Pmode
temporary.
(save_stack_nonlocal, restore_stack_nonlocal): Generate Pmode
temporary. Save area is double Pmode.
(call_indirect_aix64, call_value_indirect_aix64): New patterns.
(call, call_value): Do not specify address operand mode. Choose
appropriate AIX ABI.
(*call_local64, *ret_call_local64): New patterns.
(*call_nonlocal_aix64, *ret_call_nonlocal_aix64): New patterns.
(*ret_call_nonlocal_aix32): Use call_value_indirect for REG.
(compare): Materialize DImode truthvalues.
From-SVN: r20229
1998-06-04 13:47:15 +02:00
|
|
|
|
/* Supply a default definition of STACK_SAVEAREA_MODE for emit_stack_save.
|
|
|
|
|
Normally move_insn, so Pmode stack pointer. */
|
|
|
|
|
|
|
|
|
|
#ifndef STACK_SAVEAREA_MODE
|
|
|
|
|
#define STACK_SAVEAREA_MODE(LEVEL) Pmode
|
|
|
|
|
#endif
|
|
|
|
|
|
1998-07-02 13:53:24 +02:00
|
|
|
|
/* Supply a default definition of STACK_SIZE_MODE for
|
|
|
|
|
allocate_dynamic_stack_space. Normally PLUS/MINUS, so word_mode. */
|
|
|
|
|
|
|
|
|
|
#ifndef STACK_SIZE_MODE
|
|
|
|
|
#define STACK_SIZE_MODE word_mode
|
|
|
|
|
#endif
|
|
|
|
|
|
1997-07-17 17:24:57 +02:00
|
|
|
|
/* Provide default values for the macros controlling stack checking. */
|
|
|
|
|
|
|
|
|
|
#ifndef STACK_CHECK_BUILTIN
|
|
|
|
|
#define STACK_CHECK_BUILTIN 0
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* The default interval is one page. */
|
|
|
|
|
#ifndef STACK_CHECK_PROBE_INTERVAL
|
|
|
|
|
#define STACK_CHECK_PROBE_INTERVAL 4096
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* The default is to do a store into the stack. */
|
|
|
|
|
#ifndef STACK_CHECK_PROBE_LOAD
|
|
|
|
|
#define STACK_CHECK_PROBE_LOAD 0
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* This value is arbitrary, but should be sufficient for most machines. */
|
|
|
|
|
#ifndef STACK_CHECK_PROTECT
|
|
|
|
|
#define STACK_CHECK_PROTECT (75 * UNITS_PER_WORD)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* Make the maximum frame size be the largest we can and still only need
|
|
|
|
|
one probe per function. */
|
|
|
|
|
#ifndef STACK_CHECK_MAX_FRAME_SIZE
|
|
|
|
|
#define STACK_CHECK_MAX_FRAME_SIZE \
|
|
|
|
|
(STACK_CHECK_PROBE_INTERVAL - UNITS_PER_WORD)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* This is arbitrary, but should be large enough everywhere. */
|
|
|
|
|
#ifndef STACK_CHECK_FIXED_FRAME_SIZE
|
|
|
|
|
#define STACK_CHECK_FIXED_FRAME_SIZE (4 * UNITS_PER_WORD)
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
/* Provide a reasonable default for the maximum size of an object to
|
|
|
|
|
allocate in the fixed frame. We may need to be able to make this
|
|
|
|
|
controllable by the user at some point. */
|
|
|
|
|
#ifndef STACK_CHECK_MAX_VAR_SIZE
|
|
|
|
|
#define STACK_CHECK_MAX_VAR_SIZE (STACK_CHECK_MAX_FRAME_SIZE / 100)
|
|
|
|
|
#endif
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
expr.h: Split out optab- and libfunc-related code to...
* expr.h: Split out optab- and libfunc-related code to...
* optabs.h, libfuncs.h: ... these new headers.
* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
(OPTABS_H): New.
(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
dependencies.
* mkconfig.sh: Don't include insn-codes.h from config.h.
* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
enum insn_code is available. Move reload_in_optab and
reload_out_optab array declarations to optabs.h.
* regmove.c (gen_add3_insn): Move to optabs.c, export from
there, prototype in expr.h.
* gencodes.c: Cleanup: zap global variables, don't use
printf where puts will do, don't bother defining MAX_INSN_CODE
which nothing uses, let CODE_FOR_nothing get its value implicitly.
* genemit.c, genopinit.c: Include optabs.h in generated file.
* genoutput.c: Include insn-codes.h in generated file.
* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
Include optabs.h.
* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/m88k/m88k.c, config/sparc/sparc.c:
Include libfuncs.h.
* reload.c: Include expr.h and optabs.h before reload.h.
* config/alpha/alpha.c: Include tree.h before reload.h.
* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
and reload.h in that order.
* config/sparc/sparc.c: Include debug.h.
* recog.c: Include insn-codes.h.
cp:
* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
* except.c: Include libfuncs.h.
java:
* Make-lang.in (java/decl.o): Update dependencies.
* decl.c: Include libfuncs.h, don't include toplev.h.
From-SVN: r44858
2001-08-13 17:56:51 +02:00
|
|
|
|
/* Functions from optabs.c, commonly used, and without need for the optabs
|
|
|
|
|
tables: */
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
optabs.h (OTI_flodiv, [...]): Kill.
* optabs.h (OTI_flodiv, flodiv_optab): Kill.
* genopinit.c: Put floating point divide insns in sdiv_optab.
* expr.c (expand_expr): Use sdiv_optab, not flodiv_optab.
* config/gofast.h, config/c4x/c4x.h,
config/ia64/hpux_longdouble.h, config/mips/mips.h,
config/pa/long_double.h, config/rs6000/sysv4.h,
config/sparc/sparc.h: Put floating point divide libcalls in sdiv_optab.
* optabs.c (init_optab): Break into new_optab, init_optab, init_optabv.
(init_optabs): Use init_optabv for overflow-trapping optabs.
Don't init flodiv_optab. Give mov_optab, movstrict_optab, and
cmp_optab RTX codes so have_insn_for can find them.
* optabs.c (expand_simple_binop, expand_simple_unop,
have_insn_for, gen_sub3_insn): New interfaces.
* expr.h: Prototype new functions.
(enum optab_methods): Move here from optabs.h.
* builtins.c, combine.c, doloop.c, function.c, ifcvt.c,
loop.c, profile.c, simplify-rtx.c, stmt.c, unroll.c:
Use new functions instead of working directly with optabs.
* doloop.c, ifcvt.c, loop.c, profile.c, simplify-rtx.c,
unroll.c: Don't include optabs.h.
* caller-save.c, combine.c, function.c, stmt.c: Just include
insn-codes.h, not optabs.h.
* Makefile.in: Update dependencies.
* combine.c (make_compound_operation, simplify_comparison):
Fix typos testing for this or that instruction.
From-SVN: r45008
2001-08-18 21:59:46 +02:00
|
|
|
|
/* Passed to expand_simple_binop and expand_binop to say which options
|
|
|
|
|
to try to use if the requested operation can't be open-coded on the
|
|
|
|
|
requisite mode. Either OPTAB_LIB or OPTAB_LIB_WIDEN says try using
|
|
|
|
|
a library call. Either OPTAB_WIDEN or OPTAB_LIB_WIDEN says try
|
|
|
|
|
using a wider mode. OPTAB_MUST_WIDEN says try widening and don't
|
|
|
|
|
try anything else. */
|
|
|
|
|
|
|
|
|
|
enum optab_methods
|
|
|
|
|
{
|
|
|
|
|
OPTAB_DIRECT,
|
|
|
|
|
OPTAB_LIB,
|
|
|
|
|
OPTAB_WIDEN,
|
|
|
|
|
OPTAB_LIB_WIDEN,
|
|
|
|
|
OPTAB_MUST_WIDEN
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
/* Generate code for a simple binary or unary operation. "Simple" in
|
|
|
|
|
this case means "can be unambiguously described by a (mode, code)
|
|
|
|
|
pair and mapped to a single optab." */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx expand_simple_binop (enum machine_mode, enum rtx_code, rtx,
|
|
|
|
|
rtx, rtx, int, enum optab_methods);
|
|
|
|
|
extern rtx expand_simple_unop (enum machine_mode, enum rtx_code, rtx, rtx,
|
|
|
|
|
int);
|
optabs.h (OTI_flodiv, [...]): Kill.
* optabs.h (OTI_flodiv, flodiv_optab): Kill.
* genopinit.c: Put floating point divide insns in sdiv_optab.
* expr.c (expand_expr): Use sdiv_optab, not flodiv_optab.
* config/gofast.h, config/c4x/c4x.h,
config/ia64/hpux_longdouble.h, config/mips/mips.h,
config/pa/long_double.h, config/rs6000/sysv4.h,
config/sparc/sparc.h: Put floating point divide libcalls in sdiv_optab.
* optabs.c (init_optab): Break into new_optab, init_optab, init_optabv.
(init_optabs): Use init_optabv for overflow-trapping optabs.
Don't init flodiv_optab. Give mov_optab, movstrict_optab, and
cmp_optab RTX codes so have_insn_for can find them.
* optabs.c (expand_simple_binop, expand_simple_unop,
have_insn_for, gen_sub3_insn): New interfaces.
* expr.h: Prototype new functions.
(enum optab_methods): Move here from optabs.h.
* builtins.c, combine.c, doloop.c, function.c, ifcvt.c,
loop.c, profile.c, simplify-rtx.c, stmt.c, unroll.c:
Use new functions instead of working directly with optabs.
* doloop.c, ifcvt.c, loop.c, profile.c, simplify-rtx.c,
unroll.c: Don't include optabs.h.
* caller-save.c, combine.c, function.c, stmt.c: Just include
insn-codes.h, not optabs.h.
* Makefile.in: Update dependencies.
* combine.c (make_compound_operation, simplify_comparison):
Fix typos testing for this or that instruction.
From-SVN: r45008
2001-08-18 21:59:46 +02:00
|
|
|
|
|
|
|
|
|
/* Report whether the machine description contains an insn which can
|
|
|
|
|
perform the operation described by CODE and MODE. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern int have_insn_for (enum rtx_code, enum machine_mode);
|
optabs.h (OTI_flodiv, [...]): Kill.
* optabs.h (OTI_flodiv, flodiv_optab): Kill.
* genopinit.c: Put floating point divide insns in sdiv_optab.
* expr.c (expand_expr): Use sdiv_optab, not flodiv_optab.
* config/gofast.h, config/c4x/c4x.h,
config/ia64/hpux_longdouble.h, config/mips/mips.h,
config/pa/long_double.h, config/rs6000/sysv4.h,
config/sparc/sparc.h: Put floating point divide libcalls in sdiv_optab.
* optabs.c (init_optab): Break into new_optab, init_optab, init_optabv.
(init_optabs): Use init_optabv for overflow-trapping optabs.
Don't init flodiv_optab. Give mov_optab, movstrict_optab, and
cmp_optab RTX codes so have_insn_for can find them.
* optabs.c (expand_simple_binop, expand_simple_unop,
have_insn_for, gen_sub3_insn): New interfaces.
* expr.h: Prototype new functions.
(enum optab_methods): Move here from optabs.h.
* builtins.c, combine.c, doloop.c, function.c, ifcvt.c,
loop.c, profile.c, simplify-rtx.c, stmt.c, unroll.c:
Use new functions instead of working directly with optabs.
* doloop.c, ifcvt.c, loop.c, profile.c, simplify-rtx.c,
unroll.c: Don't include optabs.h.
* caller-save.c, combine.c, function.c, stmt.c: Just include
insn-codes.h, not optabs.h.
* Makefile.in: Update dependencies.
* combine.c (make_compound_operation, simplify_comparison):
Fix typos testing for this or that instruction.
From-SVN: r45008
2001-08-18 21:59:46 +02:00
|
|
|
|
|
2001-10-10 00:40:12 +02:00
|
|
|
|
/* Emit code to make a call to a constant function or a library call. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_libcall_block (rtx, rtx, rtx, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
expr.h: Split out optab- and libfunc-related code to...
* expr.h: Split out optab- and libfunc-related code to...
* optabs.h, libfuncs.h: ... these new headers.
* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
(OPTABS_H): New.
(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
dependencies.
* mkconfig.sh: Don't include insn-codes.h from config.h.
* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
enum insn_code is available. Move reload_in_optab and
reload_out_optab array declarations to optabs.h.
* regmove.c (gen_add3_insn): Move to optabs.c, export from
there, prototype in expr.h.
* gencodes.c: Cleanup: zap global variables, don't use
printf where puts will do, don't bother defining MAX_INSN_CODE
which nothing uses, let CODE_FOR_nothing get its value implicitly.
* genemit.c, genopinit.c: Include optabs.h in generated file.
* genoutput.c: Include insn-codes.h in generated file.
* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
Include optabs.h.
* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/m88k/m88k.c, config/sparc/sparc.c:
Include libfuncs.h.
* reload.c: Include expr.h and optabs.h before reload.h.
* config/alpha/alpha.c: Include tree.h before reload.h.
* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
and reload.h in that order.
* config/sparc/sparc.c: Include debug.h.
* recog.c: Include insn-codes.h.
cp:
* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
* except.c: Include libfuncs.h.
java:
* Make-lang.in (java/decl.o): Update dependencies.
* decl.c: Include libfuncs.h, don't include toplev.h.
From-SVN: r44858
2001-08-13 17:56:51 +02:00
|
|
|
|
/* Create but don't emit one rtl instruction to perform certain operations.
|
|
|
|
|
Modes must match; operands must meet the operation's predicates.
|
expr.c (enqueue_insn, [...]): Remove.
2004-07-14 Paolo Bonzini <bonzini@gnu.org>
* expr.c (enqueue_insn, finish_expr_for_function,
protect_from_queue, queued_subexp_p, mark_queue,
emit_insns_enqueued_after_mark, emit_queue,
expand_increment): Remove.
(store_constructor): Expand increment as an assignment.
(expand_expr_real_1 <case PREINCREMENT_EXPR,
case PREDECREMENT_EXPR, case POSTINCREMENT_EXPR,
case POSTDECREMENT_EXPR>): Abort.
* expr.h (QUEUED_VAR, QUEUED_INSN, QUEUED_COPY,
QUEUED_BODY, QUEUED_NEXT, finish_expr_for_function,
protect_from_queue, emit_queue, queued_subexp_p): Remove.
* function.h (pending_chain, x_pending_chain): Remove.
* rtl.def (QUEUED): Remove.
* emit-rtl.c (copy_insn_1, copy_most_rtx,
set_used_flags, verify_rtx_sharing): Remove references to QUEUED.
* genattrtab.c (attr_copy_rtx, clear_struct_flag,
encode_units_mask): Likewise.
* local-alloc.c (equiv_init_varies_p): Likewise.
* rtl.c (copy_rtx): Likewise.
* rtlanal.c (rtx_unstable_p, rtx_varies_p): Likewise.
* simplify-rtx.c (simplify_gen_subreg): Likewise.
* config/mn10300/mn10300.c (legitimate_pic_operand_p): Likewise.
* builtins.c (expand_builtin, expand_builtin_apply,
expand_builtin_mathfn, expand_builtin_mathfn_2,
expand_builtin_mathfn_3, expand_builtin_setjmp_setup):
Remove calls to emit_queue and protect_from_queue.
* calls.c (expand_call, precompute_arguments,
precompute_register_parameters, rtx_for_function_call,
store_one_arg): Likewise.
* dojump.c (do_compare_and_jump, do_jump): Likewise.
* explow.c (memory_address): Likewise.
* expmed.c (clear_by_pieces_1, clear_storage,
clear_storage_via_libcall, emit_group_load,
emit_group_store, emit_store_flag,
expand_expr_real_1, store_by_pieces,
store_constructor, store_expr, try_casesi,
try_tablejump): Likewise.
* function.c (expand_pending_sizes): Likewise.
* optabs.c (emit_cmp_and_jump_insns,
emit_conditional_add, emit_conditional_move,
expand_fix, expand_float, prepare_cmp_insn): Likewise.
* stmt.c (emit_case_bit_tests,
expand_asm_expr, expand_computed_goto,
expand_decl_init, expand_end_case_type,
expand_end_stmt_expr, expand_expr_stmt_value,
expand_return, expand_start_case,
optimize_tail_recursion): Likewise.
* config/c4x/c4x.c (c4x_expand_builtin): Likewise.
* config/s390/s390.c (s390_expand_cmpmem): Likewise.
From-SVN: r84675
2004-07-14 09:30:23 +02:00
|
|
|
|
Likewise for subtraction and for just copying. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx gen_add2_insn (rtx, rtx);
|
|
|
|
|
extern rtx gen_add3_insn (rtx, rtx, rtx);
|
|
|
|
|
extern rtx gen_sub2_insn (rtx, rtx);
|
|
|
|
|
extern rtx gen_sub3_insn (rtx, rtx, rtx);
|
|
|
|
|
extern rtx gen_move_insn (rtx, rtx);
|
|
|
|
|
extern int have_add2_insn (rtx, rtx);
|
|
|
|
|
extern int have_sub2_insn (rtx, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2002-06-03 03:13:17 +02:00
|
|
|
|
/* Emit a pair of rtl insns to compare two rtx's and to jump
|
1999-01-03 21:43:14 +01:00
|
|
|
|
to a label if the comparison is true. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_cmp_and_jump_insns (rtx, rtx, enum rtx_code, rtx,
|
|
|
|
|
enum machine_mode, int, rtx);
|
1999-01-03 21:43:14 +01:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Generate code to indirectly jump to a location given in the rtx LOC. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_indirect_jump (rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2004-11-02 18:59:46 +01:00
|
|
|
|
/* Generate a conditional trap instruction. */
|
|
|
|
|
extern rtx gen_cond_trap (enum rtx_code, rtx, rtx, rtx);
|
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
#include "insn-config.h"
|
|
|
|
|
|
1995-01-25 05:14:56 +01:00
|
|
|
|
#ifdef HAVE_conditional_move
|
|
|
|
|
/* Emit a conditional move operation. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
rtx emit_conditional_move (rtx, enum rtx_code, rtx, rtx, enum machine_mode,
|
|
|
|
|
rtx, rtx, enum machine_mode, int);
|
1995-01-25 05:14:56 +01:00
|
|
|
|
|
2002-09-22 16:09:34 +02:00
|
|
|
|
/* Return nonzero if the conditional move is supported. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
int can_conditionally_move_p (enum machine_mode mode);
|
1997-08-19 17:51:10 +02:00
|
|
|
|
|
1995-01-25 05:14:56 +01:00
|
|
|
|
#endif
|
2003-06-29 18:21:58 +02:00
|
|
|
|
rtx emit_conditional_add (rtx, enum rtx_code, rtx, rtx, enum machine_mode,
|
|
|
|
|
rtx, rtx, enum machine_mode, int);
|
1995-01-25 05:14:56 +01:00
|
|
|
|
|
re PR middle-end/14311 (builtins for atomic operations needed)
PR middle-end/14311
* builtin-types.def (BT_BOOL, BT_VOLATILE_PTR, BT_I1, BT_I2,
BT_I4, BT_I8, BT_FN_VOID_VPTR, BT_FN_I1_VPTR_I1, BT_FN_I2_VPTR_I2,
BT_FN_I4_VPTR_I4, BT_FN_I8_VPTR_I8, BT_FN_BOOL_VPTR_I1_I1,
BT_FN_BOOL_VPTR_I2_I2, BT_FN_BOOL_VPTR_I4_I4, BT_FN_BOOL_VPTR_I8_I8,
BT_FN_I1_VPTR_I1_I1, BT_FN_I2_VPTR_I2_I2, BT_FN_I4_VPTR_I4_I4,
BT_FN_I8_VPTR_I8_I8): New.
* builtins.def (DEF_SYNC_BUILTIN): New.
(BUILT_IN_FETCH_AND_ADD_N, BUILT_IN_FETCH_AND_ADD_1,
BUILT_IN_FETCH_AND_ADD_2, BUILT_IN_FETCH_AND_ADD_4,
BUILT_IN_FETCH_AND_ADD_8, BUILT_IN_FETCH_AND_SUB_N,
BUILT_IN_FETCH_AND_SUB_1, BUILT_IN_FETCH_AND_SUB_2,
BUILT_IN_FETCH_AND_SUB_4, BUILT_IN_FETCH_AND_SUB_8,
BUILT_IN_FETCH_AND_OR_N, BUILT_IN_FETCH_AND_OR_1,
BUILT_IN_FETCH_AND_OR_2, BUILT_IN_FETCH_AND_OR_4,
BUILT_IN_FETCH_AND_OR_8, BUILT_IN_FETCH_AND_AND_N,
BUILT_IN_FETCH_AND_AND_1, BUILT_IN_FETCH_AND_AND_2,
BUILT_IN_FETCH_AND_AND_4, BUILT_IN_FETCH_AND_AND_8,
BUILT_IN_FETCH_AND_XOR_N, BUILT_IN_FETCH_AND_XOR_1,
BUILT_IN_FETCH_AND_XOR_2, BUILT_IN_FETCH_AND_XOR_4,
BUILT_IN_FETCH_AND_XOR_8, BUILT_IN_FETCH_AND_NAND_N,
BUILT_IN_FETCH_AND_NAND_1, BUILT_IN_FETCH_AND_NAND_2,
BUILT_IN_FETCH_AND_NAND_4, BUILT_IN_FETCH_AND_NAND_8,
BUILT_IN_ADD_AND_FETCH_N, BUILT_IN_ADD_AND_FETCH_1,
BUILT_IN_ADD_AND_FETCH_2, BUILT_IN_ADD_AND_FETCH_4,
BUILT_IN_ADD_AND_FETCH_8, BUILT_IN_SUB_AND_FETCH_N,
BUILT_IN_SUB_AND_FETCH_1, BUILT_IN_SUB_AND_FETCH_2,
BUILT_IN_SUB_AND_FETCH_4, BUILT_IN_SUB_AND_FETCH_8,
BUILT_IN_OR_AND_FETCH_N, BUILT_IN_OR_AND_FETCH_1,
BUILT_IN_OR_AND_FETCH_2, BUILT_IN_OR_AND_FETCH_4,
BUILT_IN_OR_AND_FETCH_8, BUILT_IN_AND_AND_FETCH_N,
BUILT_IN_AND_AND_FETCH_1, BUILT_IN_AND_AND_FETCH_2,
BUILT_IN_AND_AND_FETCH_4, BUILT_IN_AND_AND_FETCH_8,
BUILT_IN_XOR_AND_FETCH_N, BUILT_IN_XOR_AND_FETCH_1,
BUILT_IN_XOR_AND_FETCH_2, BUILT_IN_XOR_AND_FETCH_4,
BUILT_IN_XOR_AND_FETCH_8, BUILT_IN_NAND_AND_FETCH_N,
BUILT_IN_NAND_AND_FETCH_1, BUILT_IN_NAND_AND_FETCH_2,
BUILT_IN_NAND_AND_FETCH_4, BUILT_IN_NAND_AND_FETCH_8,
BUILT_IN_BOOL_COMPARE_AND_SWAP_N, BUILT_IN_BOOL_COMPARE_AND_SWAP_1,
BUILT_IN_BOOL_COMPARE_AND_SWAP_2, BUILT_IN_BOOL_COMPARE_AND_SWAP_4,
BUILT_IN_BOOL_COMPARE_AND_SWAP_8, BUILT_IN_VAL_COMPARE_AND_SWAP_N,
BUILT_IN_VAL_COMPARE_AND_SWAP_1, BUILT_IN_VAL_COMPARE_AND_SWAP_2,
BUILT_IN_VAL_COMPARE_AND_SWAP_4, BUILT_IN_VAL_COMPARE_AND_SWAP_8,
BUILT_IN_LOCK_TEST_AND_SET_N, BUILT_IN_LOCK_TEST_AND_SET_1,
BUILT_IN_LOCK_TEST_AND_SET_2, BUILT_IN_LOCK_TEST_AND_SET_4,
BUILT_IN_LOCK_TEST_AND_SET_8, BUILT_IN_LOCK_RELEASE_N,
BUILT_IN_LOCK_RELEASE_1, BUILT_IN_LOCK_RELEASE_2,
BUILT_IN_LOCK_RELEASE_4, BUILT_IN_LOCK_RELEASE_8,
BUILT_IN_SYNCHRONIZE: New.
* builtins.c (called_as_built_in): Rewrite from CALLED_AS_BUILT_IN
as a function. Accept __sync_ as a prefix as well.
(expand_builtin_sync_operation, expand_builtin_compare_and_swap,
expand_builtin_lock_test_and_set, expand_builtin_synchronize,
expand_builtin_lock_release): New.
(expand_builtin): Call them.
* c-common.c (DEF_BUILTIN): Don't require __builtin_ prefix if
neither BOTH_P nor FALLBACK_P are defined.
(builtin_type_for_size): New.
(sync_resolve_size, sync_resolve_params, sync_resolve_return): New.
(resolve_overloaded_builtin): New.
* c-common.h (resolve_overloaded_builtin): Declare.
(builtin_type_for_size): Declare.
* c-typeck.c (build_function_call): Invoke resolve_overloaded_builtin.
* expr.c (sync_add_optab, sync_sub_optab, sync_ior_optab,
sync_and_optab, sync_xor_optab, sync_nand_optab, sync_old_add_optab,
sync_old_sub_optab, sync_old_ior_optab, sync_old_and_optab,
sync_old_xor_optab, sync_old_nand_optab, sync_new_add_optab,
sync_new_sub_optab, sync_new_ior_optab, sync_new_and_optab,
sync_new_xor_optab, sync_new_nand_optab, sync_compare_and_swap,
sync_compare_and_swap_cc, sync_lock_test_and_set,
sync_lock_release): New.
* optabs.h: Declare them.
* expr.h (expand_val_compare_and_swap, expand_bool_compare_and_swap,
expand_sync_operation, expand_sync_fetch_operation,
expand_sync_lock_test_and_set): Declare.
* genopinit.c (optabs): Add sync optabs.
* optabs.c (init_optabs): Initialize sync optabs.
(expand_val_compare_and_swap_1, expand_val_compare_and_swap,
expand_bool_compare_and_swap, expand_compare_and_swap_loop,
expand_sync_operation, expand_sync_fetch_operation,
expand_sync_lock_test_and_set): New.
* doc/extend.texi (Atomic Builtins): New section
* doc/md.texi (Standard Names): Add sync patterns.
From-SVN: r98154
2005-04-15 01:37:47 +02:00
|
|
|
|
rtx expand_val_compare_and_swap (rtx, rtx, rtx, rtx);
|
|
|
|
|
rtx expand_bool_compare_and_swap (rtx, rtx, rtx, rtx);
|
|
|
|
|
rtx expand_sync_operation (rtx, rtx, enum rtx_code);
|
|
|
|
|
rtx expand_sync_fetch_operation (rtx, rtx, enum rtx_code, bool, rtx);
|
|
|
|
|
rtx expand_sync_lock_test_and_set (rtx, rtx, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
1993-05-06 03:47:12 +02:00
|
|
|
|
/* Functions from expmed.c: */
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Arguments MODE, RTX: return an rtx for the negation of that value.
|
|
|
|
|
May emit insns. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx negate_rtx (enum machine_mode, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Expand a logical AND operation. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx expand_and (enum machine_mode, rtx, rtx, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Emit a store-flag operation. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx emit_store_flag (rtx, enum rtx_code, rtx, rtx, enum machine_mode,
|
|
|
|
|
int, int);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1996-10-23 06:15:02 +02:00
|
|
|
|
/* Like emit_store_flag, but always succeeds. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx emit_store_flag_force (rtx, enum rtx_code, rtx, rtx,
|
|
|
|
|
enum machine_mode, int, int);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
1999-07-22 13:04:58 +02:00
|
|
|
|
/* Functions from builtins.c: */
|
2003-06-15 15:43:32 +02:00
|
|
|
|
extern rtx expand_builtin (tree, rtx, rtx, enum machine_mode, int);
|
builtins.c (std_build_builtin_va_list): New.
* builtins.c (std_build_builtin_va_list): New.
* expr.h (std_build_builtin_va_list): Declare.
* defaults.h (BUILD_VA_LIST_TYPE): New.
* system.h (BUILD_VA_LIST_TYPE): Poison.
* target-def.h (TARGET_BUILD_BUILTIN_VA_LIST): New.
* target.h (struct gcc_target): Add build_builtin_va_list.
* tree.c (build_common_tree_nodes_2): Use it.
* config/alpha/alpha-protos.h, config/alpha/alpha.c,
config/alpha/alpha.h, config/alpha/unicosmk.h,
config/d30v/d30v-protos.h, config/d30v/d30v.c, config/d30v/d30v.h,
config/i386/i386-protos.h, config/i386/i386.c, config/i386/i386.h,
config/i860/i860-protos.h, config/i860/i860.c, config/i860/i860.h,
config/i960/i960-protos.h, config/i960/i960.c, config/i960/i960.h,
config/mips/iris6.h, config/mips/mips-protos.h, config/mips/mips.c,
config/mips/mips.h, config/rs6000/rs6000-protos.h,
config/rs6000/rs6000.c, config/rs6000/rs6000.h,
config/s390/s390-protos.h, config/s390/s390.c, config/s390/s390.h,
config/sh/sh-protos.h, config/sh/sh.c, config/sh/sh.h,
config/xtensa/xtensa-protos.h, config/xtensa/xtensa.c,
config/xtensa/xtensa.h: Rename foo_build_va_list to
foo_build_builtin_va_list; make it static. Define
TARGET_BUILD_BUILTIN_VA_LIST. Remove BUILD_VA_LIST_TYPE.
Update protos.
* config/i386/i386.c (ix86_expand_carry_flag_compare): Make static.
* config/iq2000/iq2000.h (BUILD_VA_LIST_TYPE): Remove.
From-SVN: r73076
2003-10-30 03:02:49 +01:00
|
|
|
|
extern tree std_build_builtin_va_list (void);
|
2003-06-15 15:43:32 +02:00
|
|
|
|
extern void std_expand_builtin_va_start (tree, rtx);
|
|
|
|
|
extern rtx default_expand_builtin (tree, rtx, rtx, enum machine_mode, int);
|
|
|
|
|
extern void expand_builtin_setjmp_setup (rtx, rtx);
|
|
|
|
|
extern void expand_builtin_setjmp_receiver (rtx);
|
|
|
|
|
extern rtx expand_builtin_saveregs (void);
|
2005-10-16 02:07:17 +02:00
|
|
|
|
extern void expand_builtin_trap (void);
|
1999-07-22 13:04:58 +02:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Functions from expr.c: */
|
1993-02-26 04:49:17 +01:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* This is run once per compilation to set up which modes can be used
|
|
|
|
|
directly in memory and to initialize the block move optab. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void init_expr_once (void);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* This is run at the start of compiling a function. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void init_expr (void);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Emit some rtl insns to move data between rtx's, converting machine modes.
|
|
|
|
|
Both modes must be floating or both fixed. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void convert_move (rtx, rtx, int);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Convert an rtx to specified machine mode and return the result. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx convert_to_mode (enum machine_mode, rtx, int);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1993-09-12 14:37:26 +02:00
|
|
|
|
/* Convert an rtx to MODE from OLDMODE and return the result. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx convert_modes (enum machine_mode, enum machine_mode, rtx, int);
|
1993-09-12 14:37:26 +02:00
|
|
|
|
|
1993-05-06 03:47:12 +02:00
|
|
|
|
/* Emit code to move a block Y to a block X. */
|
2002-08-29 21:20:01 +02:00
|
|
|
|
|
|
|
|
|
enum block_op_methods
|
|
|
|
|
{
|
|
|
|
|
BLOCK_OP_NORMAL,
|
2003-02-23 23:19:39 +01:00
|
|
|
|
BLOCK_OP_NO_LIBCALL,
|
re PR middle-end/21265 (GCC fails to optimize tail call to memset)
PR middle-end/21265
* expr.h (enum block_op_methods): Add BLOCK_OP_TAILCALL.
(clear_storage): Add argument.
* expr.c (emit_block_move_via_libcall, clear_storage_via_libcall):
Add tailcall argument, set CALL_EXPR_TAILCALL of the CALL_EXPR to
tailcall.
(emit_block_move): Handle BLOCK_OP_TAILCALL method.
(clear_storage): Add method argument, handle BLOCK_OP_TAILCALL.
(store_expr, store_constructor): Adjust callers.
* builtins.c (expand_builtin_memcpy): Pass BLOCK_OP_TAILCALL
to emit_block_move if CALL_EXPR_TAILCALL (exp).
(expand_builtin_memmove): Add ORIG_EXP argument, copy
CALL_EXPR_TAILCALL from ORIG_EXP to the new CALL_EXPR.
(expand_builtin_bcopy): Replace ARGLIST and TYPE arguments
with EXP. Pass EXP to expand_builtin_memmove.
(expand_builtin_memset): Add ORIG_EXP argument, pass
BLOCK_OP_TAILCALL to clear_storage if CALL_EXPR_TAILCALL (orig_exp).
(expand_builtin_bzero): Replace ARGLIST argument with EXP.
Pass EXP to expand_builtin_memset.
(expand_builtin_strcmp): Copy CALL_EXPR_TAILCALL from EXP to
the new CALL_EXPR.
(expand_builtin_strncmp): Likewise.
(expand_builtin_printf): Replace ARGLIST argument with EXP.
Copy CALL_EXPR_TAILCALL from EXP to the new CALL_EXPR.
(expand_builtin_fprintf): Likewise.
(expand_builtin): Adjust calls to
expand_builtin_{memmove,bcopy,memset,bzero,{,f}printf}.
* gcc.dg/20050503-1.c: New test.
From-SVN: r99187
2005-05-04 00:22:02 +02:00
|
|
|
|
BLOCK_OP_CALL_PARM,
|
|
|
|
|
/* Like BLOCK_OP_NORMAL, but the libcall can be tail call optimized. */
|
|
|
|
|
BLOCK_OP_TAILCALL
|
2002-08-29 21:20:01 +02:00
|
|
|
|
};
|
|
|
|
|
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void init_block_move_fn (const char *);
|
|
|
|
|
extern void init_block_clear_fn (const char *);
|
2003-04-28 21:58:52 +02:00
|
|
|
|
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx emit_block_move (rtx, rtx, rtx, enum block_op_methods);
|
expr.c (emit_block_move_via_libcall): Export.
* expr.c (emit_block_move_via_libcall): Export.
(clear_storage_via_libcall): Rename to ...
(set_storage_via_libcall): ... this one; handle arbitrary value to set.
(clear_storage): Update to set_storage_via_libcall.
* expr.h (emit_block_move_via_libcall): Declare
* config/i386/i386.h (stringop_alg): New enum.
(MAX_STRINGOP_ALGS): New constant.
(stringop_algs): New struct.
(processor_costs): Add memcpy/memset descriptors.
(TARGET_REP_MOVEL_OPTIMAL): Remove.
* config/i386/i386.md (movsi_insv_1_rex64): New pattern.
(strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
for memset.
* config/i386/i386.opt (minline-stringops-dynamically,
mstringop-strategy): New
parameters.
* config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
(ix86_expand-clrmem): Rename to ...
(ix86_expand_setmem): ... this one; update prototype.
* config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
(size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
nocona_cost, core2_cost, generic_cost, generic64_cost,
generic32_cost): Add memcpy/memset descriptors.
(x86_rep_movl_optimal): Remove.
(stringop_alg): New static variable.
(ix86_expand_aligntest): Handle predictions.
(override_options): Add strgop_alg handling.
(predict_jump): New function.
(scale_counter): New function.
(expand_set_or_movmem_via_loop): New function.
(expand_movmem_via_rep_mov): New function.
(expand_setmem_via_rep_stots): New function.
(emit_strmov): New function.
(expand_movmem_epilogue): New function.
(expand_setmem_epilogue_via_loop): New function.
(expand_setmem_epilogue): New function.
(expand_movmem_prologue): New function.
(expand_setmem_prologue): New function.
(decide_alg): New function.
(decide_alignment): New function.
(ix86_exand_movmem): Rewrite.
(promote_duplicated_reg): New function.
(ix86_expand_clrmem): Rename to ...
(ix86_expand_setmem): ... this one. Rewrite.
* invoke.texi (minline-stringops-dynamically): New command line option.
(mstringop-strategy): Likewise.
From-SVN: r119252
2006-11-27 17:00:26 +01:00
|
|
|
|
extern rtx emit_block_move_via_libcall (rtx, rtx, rtx, bool);
|
expr.c (emit_block_move_via_movmem, [...]): Add variant handling histograms; add wrapper.
* expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
variant handling histograms; add wrapper.
(clear_storage_via_libcall): Export.
(emit_block_move_hints): Break out from ...; add histograms.
(emit_block_move): ... this one.
(clear_storage_hints): Break out from ...; add histograms.
(clear_storage): ... this one.
(set_storage_via_memset): Handle histogram.
* expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
(clear_storage_hints, clear_storage_via_libcall): Declare.
(set_storage_via_setmem): Update prototype.
* doc/md.texi (movmem, setmem): Document new arguments.
* value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
new histograms.
(stringop_block_profile): New global function.
(tree_stringops_values_to_profile): Profile block size and alignment.
* value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
HIST_TYPE_IOR.
(struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
(stringop_block_profile): Declare.
* builtins.c: Include value-prof.h.
(expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
* gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
(GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
(GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
* profile.c (instrument_values): Add new counters.
* cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
calls.
* tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
(tree_init_edge_profiler): Build new profilers.
(tree_gen_average_profiler, tree_gen_ior_profiler): New.
(pass_tree_profile): Add dump.
(tree_profile_hooks): Update.
* Makefile.in (LIBGCOV): Add new constants.
* libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
__gcov_ior_profiler): New.
* i386.md (movmem/setmem expanders): Add new optional arguments.
From-SVN: r121270
2007-01-28 20:38:39 +01:00
|
|
|
|
extern rtx emit_block_move_hints (rtx, rtx, rtx, enum block_op_methods,
|
|
|
|
|
unsigned int, HOST_WIDE_INT);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Copy all or part of a value X into registers starting at REGNO.
|
|
|
|
|
The number of registers to be filled is NREGS. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void move_block_to_reg (int, rtx, int, enum machine_mode);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Copy all or part of a BLKmode value X out of registers starting at REGNO.
|
|
|
|
|
The number of registers to be filled is NREGS. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void move_block_from_reg (int, rtx, int);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2002-11-27 03:29:12 +01:00
|
|
|
|
/* Generate a non-consecutive group of registers represented by a PARALLEL. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx gen_group_rtx (rtx);
|
2002-11-27 03:29:12 +01:00
|
|
|
|
|
1996-06-07 01:12:26 +02:00
|
|
|
|
/* Load a BLKmode value into non-consecutive registers represented by a
|
|
|
|
|
PARALLEL. */
|
2003-07-14 07:17:18 +02:00
|
|
|
|
extern void emit_group_load (rtx, rtx, tree, int);
|
combine.c (make_extraction, [...]): Avoid warning on mixed-signedness conditionals.
* combine.c (make_extraction, force_to_mode): Avoid warning on
mixed-signedness conditionals.
(make_field_assignment, nonzero_bits): Likewise.
* expmed.c (store_fixed_bit_field): ALIGN arg now unsigned.
(store_split_bit_field, extract_split_bit_field): Likewise.
(extract_fixed_bit_field, store_bit_field,
* expr.c: Change alignment to be unsigned everywhere.
(move_by_pieces, store_constructor_field, store_constructor):
Alignment parm is unsigned.
(emit_block_move, emit_group_load, emit_group_store): Likewise.
(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
(do_compare_rtx_and_jump): Likewise.
(move_by_pieces_ninsns, clear_by_pieces): Likewise.
Compare align with GET_MODE_ALIGNMENT.
(expand_expr_unaligned): Pointer to alignment is pointer to unsigned.
(get_inner_reference): Likewise.
(copy_blkmode_from_reg, emit_push_insn): Remove unneeded casts.
(expand_assignment): Local vars for alignment now unsigned.
(store_constructor, store_field, expand_expr, do_jump): Likewise.
(do_compare_and_jump): Likewise.
(store_field): Call new function expr_align.
* expr.h (emit_block_move, emit_group_load, emit_group_store):
Alignment arg now unsigned.
(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
(do_compare_rtx_and_jump, store_bit_field): Likewise.
(extract_bit_field): Likewise.
* fold-const.c (add_double): Add cast to eliminate signedness warning.
* machmode.h (GET_MODE_ALIGNMENT): Result is unsigned.
(get_best_mode): Alignment arg is unsigned.
* rtl.h (move_by_pieces): Likewise.
* store-layout.c (maximum_field_alignment, set_alignment):
Now unsigned.
(layout_decl): Alignment arg is now unsigned.
Remove unneeded casts.
(layout_record, layout_union, layout_type): Remove unneeded casts.
Local alignment variables now unsigned.
(get_best_mode): Alignment arg now unsigned.
* tree.c (expr_align): New function.
* tree.h (expr_align): Likewise.
(maximum_field_alignment, set_alignment): Now unsigned.
(get_inner_reference): Alignment argument is now pointer to unsigned.
* varasm.c (assemble_variable): Add cast to eliminate warning.
From-SVN: r31904
2000-02-10 23:05:40 +01:00
|
|
|
|
|
2004-11-14 07:22:56 +01:00
|
|
|
|
/* Similarly, but load into new temporaries. */
|
|
|
|
|
extern rtx emit_group_load_into_temps (rtx, rtx, tree, int);
|
|
|
|
|
|
2002-11-27 03:29:12 +01:00
|
|
|
|
/* Move a non-consecutive group of registers represented by a PARALLEL into
|
|
|
|
|
a non-consecutive group of registers represented by a PARALLEL. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_group_move (rtx, rtx);
|
2002-11-27 03:29:12 +01:00
|
|
|
|
|
2004-11-14 07:22:56 +01:00
|
|
|
|
/* Move a group of registers represented by a PARALLEL into pseudos. */
|
|
|
|
|
extern rtx emit_group_move_into_temps (rtx);
|
|
|
|
|
|
1996-06-07 01:12:26 +02:00
|
|
|
|
/* Store a BLKmode value from non-consecutive registers represented by a
|
|
|
|
|
PARALLEL. */
|
2003-07-14 07:17:18 +02:00
|
|
|
|
extern void emit_group_store (rtx, rtx, tree, int);
|
1996-06-07 01:12:26 +02:00
|
|
|
|
|
2001-10-10 00:40:12 +02:00
|
|
|
|
/* Copy BLKmode object from a set of registers. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx copy_blkmode_from_reg (rtx, rtx, tree);
|
1998-10-01 15:00:21 +02:00
|
|
|
|
|
1994-05-06 23:48:22 +02:00
|
|
|
|
/* Mark REG as holding a parameter for the next CALL_INSN. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void use_reg (rtx *, rtx);
|
combine.c (make_extraction, [...]): Avoid warning on mixed-signedness conditionals.
* combine.c (make_extraction, force_to_mode): Avoid warning on
mixed-signedness conditionals.
(make_field_assignment, nonzero_bits): Likewise.
* expmed.c (store_fixed_bit_field): ALIGN arg now unsigned.
(store_split_bit_field, extract_split_bit_field): Likewise.
(extract_fixed_bit_field, store_bit_field,
* expr.c: Change alignment to be unsigned everywhere.
(move_by_pieces, store_constructor_field, store_constructor):
Alignment parm is unsigned.
(emit_block_move, emit_group_load, emit_group_store): Likewise.
(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
(do_compare_rtx_and_jump): Likewise.
(move_by_pieces_ninsns, clear_by_pieces): Likewise.
Compare align with GET_MODE_ALIGNMENT.
(expand_expr_unaligned): Pointer to alignment is pointer to unsigned.
(get_inner_reference): Likewise.
(copy_blkmode_from_reg, emit_push_insn): Remove unneeded casts.
(expand_assignment): Local vars for alignment now unsigned.
(store_constructor, store_field, expand_expr, do_jump): Likewise.
(do_compare_and_jump): Likewise.
(store_field): Call new function expr_align.
* expr.h (emit_block_move, emit_group_load, emit_group_store):
Alignment arg now unsigned.
(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
(do_compare_rtx_and_jump, store_bit_field): Likewise.
(extract_bit_field): Likewise.
* fold-const.c (add_double): Add cast to eliminate signedness warning.
* machmode.h (GET_MODE_ALIGNMENT): Result is unsigned.
(get_best_mode): Alignment arg is unsigned.
* rtl.h (move_by_pieces): Likewise.
* store-layout.c (maximum_field_alignment, set_alignment):
Now unsigned.
(layout_decl): Alignment arg is now unsigned.
Remove unneeded casts.
(layout_record, layout_union, layout_type): Remove unneeded casts.
Local alignment variables now unsigned.
(get_best_mode): Alignment arg now unsigned.
* tree.c (expr_align): New function.
* tree.h (expr_align): Likewise.
(maximum_field_alignment, set_alignment): Now unsigned.
(get_inner_reference): Alignment argument is now pointer to unsigned.
* varasm.c (assemble_variable): Add cast to eliminate warning.
From-SVN: r31904
2000-02-10 23:05:40 +01:00
|
|
|
|
|
1994-05-06 23:48:22 +02:00
|
|
|
|
/* Mark NREGS consecutive regs, starting at REGNO, as holding parameters
|
|
|
|
|
for the next CALL_INSN. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void use_regs (rtx *, int, int);
|
combine.c (make_extraction, [...]): Avoid warning on mixed-signedness conditionals.
* combine.c (make_extraction, force_to_mode): Avoid warning on
mixed-signedness conditionals.
(make_field_assignment, nonzero_bits): Likewise.
* expmed.c (store_fixed_bit_field): ALIGN arg now unsigned.
(store_split_bit_field, extract_split_bit_field): Likewise.
(extract_fixed_bit_field, store_bit_field,
* expr.c: Change alignment to be unsigned everywhere.
(move_by_pieces, store_constructor_field, store_constructor):
Alignment parm is unsigned.
(emit_block_move, emit_group_load, emit_group_store): Likewise.
(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
(do_compare_rtx_and_jump): Likewise.
(move_by_pieces_ninsns, clear_by_pieces): Likewise.
Compare align with GET_MODE_ALIGNMENT.
(expand_expr_unaligned): Pointer to alignment is pointer to unsigned.
(get_inner_reference): Likewise.
(copy_blkmode_from_reg, emit_push_insn): Remove unneeded casts.
(expand_assignment): Local vars for alignment now unsigned.
(store_constructor, store_field, expand_expr, do_jump): Likewise.
(do_compare_and_jump): Likewise.
(store_field): Call new function expr_align.
* expr.h (emit_block_move, emit_group_load, emit_group_store):
Alignment arg now unsigned.
(clear_storage, emit_push_insn, compare_from_rtx): Likewise.
(do_compare_rtx_and_jump, store_bit_field): Likewise.
(extract_bit_field): Likewise.
* fold-const.c (add_double): Add cast to eliminate signedness warning.
* machmode.h (GET_MODE_ALIGNMENT): Result is unsigned.
(get_best_mode): Alignment arg is unsigned.
* rtl.h (move_by_pieces): Likewise.
* store-layout.c (maximum_field_alignment, set_alignment):
Now unsigned.
(layout_decl): Alignment arg is now unsigned.
Remove unneeded casts.
(layout_record, layout_union, layout_type): Remove unneeded casts.
Local alignment variables now unsigned.
(get_best_mode): Alignment arg now unsigned.
* tree.c (expr_align): New function.
* tree.h (expr_align): Likewise.
(maximum_field_alignment, set_alignment): Now unsigned.
(get_inner_reference): Alignment argument is now pointer to unsigned.
* varasm.c (assemble_variable): Add cast to eliminate warning.
From-SVN: r31904
2000-02-10 23:05:40 +01:00
|
|
|
|
|
1996-06-07 01:12:26 +02:00
|
|
|
|
/* Mark a PARALLEL as holding a parameter for the next CALL_INSN. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void use_group_regs (rtx *, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Write zeros through the storage of OBJECT.
|
alias.c (can_address_p): Compnonents are not addressable if the containing type has alias set 0.
* alias.c (can_address_p): Compnonents are not addressable if
the containing type has alias set 0.
(get_alias_set): Rework to use STRIP_NOPS.
Only call front-end routine on object, type, or object with
NOPs stripped, not inner values.
Use language hook to call front-end routine.
* builtins.c (get_memory_rtx): Always call set_mem_attributes.
(expand_builtin_apply): Call set_mem_align on MEMs we make.
Don't pass alignment to emit_block_move.
(expand_builtin_memcpy, expand_builtin_va_copy): Likewise.
(expand_builtin_memset): Likewise, but for clear_storage.
* c-common.c (lang_get_alias_set): Renamed to c_common_alias_set
and remove C++ specific parts.
* c-common.h (c_common_get_alias_set): Add declaration.
* c-lang.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
* calls.c (emit_call_1): Fix typo in sibcall_pop case.
(save_fixed_argument_area): Call set_mem_align.
Remove alignment in call to emit_block_move.
(emit_library_call_value_1, store_one_arg): Likewise.
(target_for_arg): Remove; disabled long ago.
* emit-rtl.c (set_mem_attributes): Rework to only call get_mem_attrs
once and similar cleanups.
(offset_address): Use proper introductory comment.
* expr.c (emit_block_move): Use alignment from that of MEM args, not
from explicit operand; all callers changed.
(clear_storage): Likewise.
(expand_assignment): Don't call set_mem_alias_set on to_rtx.
(store_field): Remove kludge on alias set used for to_rtx.
(highest_pow2_factor, case *_DIV_EXPR): Never return 0.
(expand_expr_unaligned): Call set_mem_attributes instead of
set_mem_alias_set.
* expr.h (emit_block_move, clear_storage): Remove ALIGN argument.
* function.c (assign_stack_temp_for_type): Set MEM alignment.
(expand_function_end): Track MEM attributes of trampolines.
* ifcvt.c (noce_try_cmove_arith): Set alignment of new MEM.
* integrate.c (copy_rtx_and_substitute, case CALL): Copy memory
attributes from original.
* langhooks.c (lang_hook_default_get_alias_set): New function.
(hook_get_alias_set_0): New function.
* langhooks.h (hook_get_alias_set_0): New declaration.
(lang_hook_default_get_alias_set): Likewise.
(LANG_HOOKS_GET_ALIAS_SET): New macro; add to initializer.
* reload1.c (alter_reg): Use adjust_address_nv.
* rtl.c (get_mode_alignment): Moved to here.
* rtl.h (MEM_ALIGN): Take default from mode, if not BLKmode, and
change default if unknown from 1 to BITS_PER_UNIT.
* stor-layout.c (get_mode_alignment): Remove from here.
* toplev.h (struct lang_hoks): Add get_alias_set field.
* tree.h (lang_get_alias_set): Delete declaration.
* config/arc/arc.c (arc_setup_incoming_varags): Set MEM alignment.
* config/i386/i386.c (ix86_setup_incoming_varargs): Likewise.
(ix86_va_arg): Likewise.
* config/i960/i960.c (i960_setup_incoming_varargs): Likewise.
* config/pa/pa.c (hppa_builtin_saveregs): Likewise.
* config/sparc/sparc.c (sparc_va_arg): Likewise.
* config/rs6000/rs6000.c (setup_incoming_varargs): Likewise.
(expand_block_move_mem): Remove dead code.
* cp/cp-lang.c (cxx_get_alias_set): New function.
Point LANG_HOOKS_GET_ALIAS_SET to it.
* f/com.c (LANG_HOOKS_GET_ALIAS_SET): New macro.
(lang_get_alias_set): Delete.
* java/lang.c (lang_get_alias_set): Deleted.
From-SVN: r46440
2001-10-23 20:51:18 +02:00
|
|
|
|
If OBJECT has BLKmode, SIZE is its length in bytes. */
|
re PR middle-end/21265 (GCC fails to optimize tail call to memset)
PR middle-end/21265
* expr.h (enum block_op_methods): Add BLOCK_OP_TAILCALL.
(clear_storage): Add argument.
* expr.c (emit_block_move_via_libcall, clear_storage_via_libcall):
Add tailcall argument, set CALL_EXPR_TAILCALL of the CALL_EXPR to
tailcall.
(emit_block_move): Handle BLOCK_OP_TAILCALL method.
(clear_storage): Add method argument, handle BLOCK_OP_TAILCALL.
(store_expr, store_constructor): Adjust callers.
* builtins.c (expand_builtin_memcpy): Pass BLOCK_OP_TAILCALL
to emit_block_move if CALL_EXPR_TAILCALL (exp).
(expand_builtin_memmove): Add ORIG_EXP argument, copy
CALL_EXPR_TAILCALL from ORIG_EXP to the new CALL_EXPR.
(expand_builtin_bcopy): Replace ARGLIST and TYPE arguments
with EXP. Pass EXP to expand_builtin_memmove.
(expand_builtin_memset): Add ORIG_EXP argument, pass
BLOCK_OP_TAILCALL to clear_storage if CALL_EXPR_TAILCALL (orig_exp).
(expand_builtin_bzero): Replace ARGLIST argument with EXP.
Pass EXP to expand_builtin_memset.
(expand_builtin_strcmp): Copy CALL_EXPR_TAILCALL from EXP to
the new CALL_EXPR.
(expand_builtin_strncmp): Likewise.
(expand_builtin_printf): Replace ARGLIST argument with EXP.
Copy CALL_EXPR_TAILCALL from EXP to the new CALL_EXPR.
(expand_builtin_fprintf): Likewise.
(expand_builtin): Adjust calls to
expand_builtin_{memmove,bcopy,memset,bzero,{,f}printf}.
* gcc.dg/20050503-1.c: New test.
From-SVN: r99187
2005-05-04 00:22:02 +02:00
|
|
|
|
extern rtx clear_storage (rtx, rtx, enum block_op_methods);
|
expr.c (emit_block_move_via_movmem, [...]): Add variant handling histograms; add wrapper.
* expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
variant handling histograms; add wrapper.
(clear_storage_via_libcall): Export.
(emit_block_move_hints): Break out from ...; add histograms.
(emit_block_move): ... this one.
(clear_storage_hints): Break out from ...; add histograms.
(clear_storage): ... this one.
(set_storage_via_memset): Handle histogram.
* expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
(clear_storage_hints, clear_storage_via_libcall): Declare.
(set_storage_via_setmem): Update prototype.
* doc/md.texi (movmem, setmem): Document new arguments.
* value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
new histograms.
(stringop_block_profile): New global function.
(tree_stringops_values_to_profile): Profile block size and alignment.
* value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
HIST_TYPE_IOR.
(struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
(stringop_block_profile): Declare.
* builtins.c: Include value-prof.h.
(expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
* gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
(GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
(GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
* profile.c (instrument_values): Add new counters.
* cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
calls.
* tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
(tree_init_edge_profiler): Build new profilers.
(tree_gen_average_profiler, tree_gen_ior_profiler): New.
(pass_tree_profile): Add dump.
(tree_profile_hooks): Update.
* Makefile.in (LIBGCOV): Add new constants.
* libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
__gcov_ior_profiler): New.
* i386.md (movmem/setmem expanders): Add new optional arguments.
From-SVN: r121270
2007-01-28 20:38:39 +01:00
|
|
|
|
extern rtx clear_storage_hints (rtx, rtx, enum block_op_methods,
|
|
|
|
|
unsigned int, HOST_WIDE_INT);
|
expr.c (emit_block_move_via_libcall): Export.
* expr.c (emit_block_move_via_libcall): Export.
(clear_storage_via_libcall): Rename to ...
(set_storage_via_libcall): ... this one; handle arbitrary value to set.
(clear_storage): Update to set_storage_via_libcall.
* expr.h (emit_block_move_via_libcall): Declare
* config/i386/i386.h (stringop_alg): New enum.
(MAX_STRINGOP_ALGS): New constant.
(stringop_algs): New struct.
(processor_costs): Add memcpy/memset descriptors.
(TARGET_REP_MOVEL_OPTIMAL): Remove.
* config/i386/i386.md (movsi_insv_1_rex64): New pattern.
(strmovsi, strmovdi, strsetsi, strsetdi): Update; accept all operands
for memset.
* config/i386/i386.opt (minline-stringops-dynamically,
mstringop-strategy): New
parameters.
* config/i386/i386-prostos.h (ix86_expand_movmem): Update prototype.
(ix86_expand-clrmem): Rename to ...
(ix86_expand_setmem): ... this one; update prototype.
* config/i386/i386.c (DUMMY_STRINGOP_ALGS): New constant.
(size_cost, i386_cost, i486_cost, pentium_cost, pentiumpro_cost,
geode_cost, k6_cost, athlon_cost, k8_cost, pentium4_cost,
nocona_cost, core2_cost, generic_cost, generic64_cost,
generic32_cost): Add memcpy/memset descriptors.
(x86_rep_movl_optimal): Remove.
(stringop_alg): New static variable.
(ix86_expand_aligntest): Handle predictions.
(override_options): Add strgop_alg handling.
(predict_jump): New function.
(scale_counter): New function.
(expand_set_or_movmem_via_loop): New function.
(expand_movmem_via_rep_mov): New function.
(expand_setmem_via_rep_stots): New function.
(emit_strmov): New function.
(expand_movmem_epilogue): New function.
(expand_setmem_epilogue_via_loop): New function.
(expand_setmem_epilogue): New function.
(expand_movmem_prologue): New function.
(expand_setmem_prologue): New function.
(decide_alg): New function.
(decide_alignment): New function.
(ix86_exand_movmem): Rewrite.
(promote_duplicated_reg): New function.
(ix86_expand_clrmem): Rename to ...
(ix86_expand_setmem): ... this one. Rewrite.
* invoke.texi (minline-stringops-dynamically): New command line option.
(mstringop-strategy): Likewise.
From-SVN: r119252
2006-11-27 17:00:26 +01:00
|
|
|
|
/* The same, but always output an library call. */
|
|
|
|
|
rtx set_storage_via_libcall (rtx, rtx, rtx, bool);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2005-06-28 21:56:23 +02:00
|
|
|
|
/* Expand a setmem pattern; return true if successful. */
|
expr.c (emit_block_move_via_movmem, [...]): Add variant handling histograms; add wrapper.
* expr.c (emit_block_move_via_movmem, emit_block_move_via_libcall): Add
variant handling histograms; add wrapper.
(clear_storage_via_libcall): Export.
(emit_block_move_hints): Break out from ...; add histograms.
(emit_block_move): ... this one.
(clear_storage_hints): Break out from ...; add histograms.
(clear_storage): ... this one.
(set_storage_via_memset): Handle histogram.
* expr.h (emit_block_move_via_libcall, emit_block_move_hints): Declare.
(clear_storage_hints, clear_storage_via_libcall): Declare.
(set_storage_via_setmem): Update prototype.
* doc/md.texi (movmem, setmem): Document new arguments.
* value-prof.c (dump_histogram_value, tree_find_values_to_profile): Add
new histograms.
(stringop_block_profile): New global function.
(tree_stringops_values_to_profile): Profile block size and alignment.
* value-prof.h (enum hist_type): add HIST_TYPE_AVERAGE and
HIST_TYPE_IOR.
(struct profile_hooks): Add gen_average_profiler and gen_ior_profiler.
(stringop_block_profile): Declare.
* builtins.c: Include value-prof.h.
(expand_builtin_memcpy, expand_builtin_memset): Pass block profile.
* gcov-ui.h (GCOV_COUNTER_NAMES): Add new counter.
(GCOV_COUNTER_AVERAGE, GCOV_COUNTER_IOR): New constants.
(GCOV_COUNTERS, GCOV_LAST_VALUE_COUNTER): Update.
* profile.c (instrument_values): Add new counters.
* cfgexpand.c (expand_gimple_basic_block): Propagate histograms to
calls.
* tree-profile.c (tree_average_profiler_fn, tree_ior_profiler_fn): New.
(tree_init_edge_profiler): Build new profilers.
(tree_gen_average_profiler, tree_gen_ior_profiler): New.
(pass_tree_profile): Add dump.
(tree_profile_hooks): Update.
* Makefile.in (LIBGCOV): Add new constants.
* libgcov.c (__gcov_merge_ior, __gcov_average_profiler,
__gcov_ior_profiler): New.
* i386.md (movmem/setmem expanders): Add new optional arguments.
From-SVN: r121270
2007-01-28 20:38:39 +01:00
|
|
|
|
extern bool set_storage_via_setmem (rtx, rtx, rtx, unsigned int,
|
|
|
|
|
unsigned int, HOST_WIDE_INT);
|
2005-06-28 21:56:23 +02:00
|
|
|
|
|
2003-06-03 10:57:55 +02:00
|
|
|
|
/* Determine whether the LEN bytes can be moved by using several move
|
|
|
|
|
instructions. Return nonzero if a call to move_by_pieces should
|
|
|
|
|
succeed. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern int can_move_by_pieces (unsigned HOST_WIDE_INT, unsigned int);
|
2003-06-03 10:57:55 +02:00
|
|
|
|
|
2002-09-22 16:09:34 +02:00
|
|
|
|
/* Return nonzero if it is desirable to store LEN bytes generated by
|
2000-11-29 19:24:50 +01:00
|
|
|
|
CONSTFUN with several move instructions by store_by_pieces
|
|
|
|
|
function. CONSTFUNDATA is a pointer which will be passed as argument
|
|
|
|
|
in every CONSTFUN call.
|
|
|
|
|
ALIGN is maximum alignment we can assume. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern int can_store_by_pieces (unsigned HOST_WIDE_INT,
|
|
|
|
|
rtx (*) (void *, HOST_WIDE_INT,
|
|
|
|
|
enum machine_mode),
|
|
|
|
|
void *, unsigned int);
|
2000-11-29 19:24:50 +01:00
|
|
|
|
|
|
|
|
|
/* Generate several move instructions to store LEN bytes generated by
|
|
|
|
|
CONSTFUN to block TO. (A MEM rtx with BLKmode). CONSTFUNDATA is a
|
|
|
|
|
pointer which will be passed as argument in every CONSTFUN call.
|
2003-06-03 10:57:55 +02:00
|
|
|
|
ALIGN is maximum alignment we can assume.
|
|
|
|
|
Returns TO + LEN. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx store_by_pieces (rtx, unsigned HOST_WIDE_INT,
|
|
|
|
|
rtx (*) (void *, HOST_WIDE_INT, enum machine_mode),
|
|
|
|
|
void *, unsigned int, int);
|
2000-11-29 19:24:50 +01:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Emit insns to set X from Y. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx emit_move_insn (rtx, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Emit insns to set X from Y, with no frills. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx emit_move_insn_1 (rtx, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2007-03-01 17:30:38 +01:00
|
|
|
|
extern rtx emit_move_complex_push (enum machine_mode, rtx, rtx);
|
|
|
|
|
extern rtx emit_move_complex_parts (rtx, rtx);
|
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Push a block of length SIZE (perhaps variable)
|
|
|
|
|
and return an rtx to address the beginning of the block. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx push_block (rtx, int, int);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Generate code to push something onto the stack, given its mode and type. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_push_insn (rtx, enum machine_mode, tree, rtx, unsigned int,
|
|
|
|
|
int, rtx, int, rtx, rtx, int, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2001-10-10 00:40:12 +02:00
|
|
|
|
/* Expand an assignment that stores the value of FROM into TO. */
|
2004-10-19 16:43:56 +02:00
|
|
|
|
extern void expand_assignment (tree, tree);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Generate code for computing expression EXP,
|
|
|
|
|
and storing the value into TARGET.
|
|
|
|
|
If SUGGEST_REG is nonzero, copy the value through a register
|
|
|
|
|
and return that register, if that is possible. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx store_expr (tree, rtx, int);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Given an rtx that may include add and multiply operations,
|
|
|
|
|
generate them as insns and return a pseudo-reg containing the value.
|
|
|
|
|
Useful after calling expand_expr with 1 as sum_ok. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx force_operand (rtx, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
c-gimplify.c (c_genericize): Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-gimplify.c (c_genericize):
Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-parse.in <expr_no_commas>: Likewise.
<if_prefix>: Likewise.
<select_or_iter_stmt>: Likewise.
* expr.c (expand_var, expand_expr_real_1): Likewise.
* expr.h (expand_expr): Make it a static inline function.
Move prototype for expand_expr_real up before this.
* fold-const.c (fold_relational_hi_lo, fold_relational_const):
Likewise.
* gimplify.c (gimple_boolify, gimplify_addr_expr,
gimplify_asm_expr, gimplify_expr): Likewise.
* tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
dump_function_to_file): Likewise.
* tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
* tree-inline.c (remap_block, save_body, walk_tree): Likewise.
* tree-into-ssa.c (dump_tree_ssa): Likewise.
* tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
Likewise.
* tree-optimize.c (execute_one_pass): Likewise.
* tree-pretty-print.c (dump_generic_bb_buff): Likewise.
* tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
objc/
* objc-act.c (objc_build_try_enter_fragment,
objc_build_try_epilogue, objc_build_catch_stmt,
objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
with lang_hooks.foo ().
From-SVN: r81907
2004-05-16 01:07:53 +02:00
|
|
|
|
/* Work horse for expand_expr. */
|
|
|
|
|
extern rtx expand_expr_real (tree, rtx, enum machine_mode,
|
|
|
|
|
enum expand_modifier, rtx *);
|
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Generate code for computing expression EXP.
|
|
|
|
|
An rtx for the computed value is returned. The value is never null.
|
|
|
|
|
In the case of a void EXP, const0_rtx is returned. */
|
c-gimplify.c (c_genericize): Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-gimplify.c (c_genericize):
Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-parse.in <expr_no_commas>: Likewise.
<if_prefix>: Likewise.
<select_or_iter_stmt>: Likewise.
* expr.c (expand_var, expand_expr_real_1): Likewise.
* expr.h (expand_expr): Make it a static inline function.
Move prototype for expand_expr_real up before this.
* fold-const.c (fold_relational_hi_lo, fold_relational_const):
Likewise.
* gimplify.c (gimple_boolify, gimplify_addr_expr,
gimplify_asm_expr, gimplify_expr): Likewise.
* tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
dump_function_to_file): Likewise.
* tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
* tree-inline.c (remap_block, save_body, walk_tree): Likewise.
* tree-into-ssa.c (dump_tree_ssa): Likewise.
* tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
Likewise.
* tree-optimize.c (execute_one_pass): Likewise.
* tree-pretty-print.c (dump_generic_bb_buff): Likewise.
* tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
objc/
* objc-act.c (objc_build_try_enter_fragment,
objc_build_try_epilogue, objc_build_catch_stmt,
objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
with lang_hooks.foo ().
From-SVN: r81907
2004-05-16 01:07:53 +02:00
|
|
|
|
static inline rtx
|
|
|
|
|
expand_expr (tree exp, rtx target, enum machine_mode mode,
|
|
|
|
|
enum expand_modifier modifier)
|
|
|
|
|
{
|
2004-06-24 15:47:49 +02:00
|
|
|
|
return expand_expr_real (exp, target, mode, modifier, NULL);
|
c-gimplify.c (c_genericize): Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-gimplify.c (c_genericize):
Replace calls via (*lang_hooks.foo) with lang_hooks.foo.
* c-parse.in <expr_no_commas>: Likewise.
<if_prefix>: Likewise.
<select_or_iter_stmt>: Likewise.
* expr.c (expand_var, expand_expr_real_1): Likewise.
* expr.h (expand_expr): Make it a static inline function.
Move prototype for expand_expr_real up before this.
* fold-const.c (fold_relational_hi_lo, fold_relational_const):
Likewise.
* gimplify.c (gimple_boolify, gimplify_addr_expr,
gimplify_asm_expr, gimplify_expr): Likewise.
* tree-cfg.c (dump_tree_cfg, dump_cfg_stats, tree_cfg2vcg,
dump_function_to_file): Likewise.
* tree-dfa.c (dump_immediate_uses, dump_dfa_stats): Likewise.
* tree-inline.c (remap_block, save_body, walk_tree): Likewise.
* tree-into-ssa.c (dump_tree_ssa): Likewise.
* tree-mudflap.c (mf_varname_tree, mf_file_function_line_tree):
Likewise.
* tree-optimize.c (execute_one_pass): Likewise.
* tree-pretty-print.c (dump_generic_bb_buff): Likewise.
* tree-ssa-alias.c (dump_alias_stats, dump_alias_info): Likewise.
objc/
* objc-act.c (objc_build_try_enter_fragment,
objc_build_try_epilogue, objc_build_catch_stmt,
objc_build_finally_prologue): Replace calls via (*lang_hooks.foo)
with lang_hooks.foo ().
From-SVN: r81907
2004-05-16 01:07:53 +02:00
|
|
|
|
}
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2006-01-31 05:44:14 +01:00
|
|
|
|
static inline rtx
|
|
|
|
|
expand_normal (tree exp)
|
|
|
|
|
{
|
|
|
|
|
return expand_expr_real (exp, NULL_RTX, VOIDmode, EXPAND_NORMAL, NULL);
|
|
|
|
|
}
|
|
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
|
extern void expand_var (tree);
|
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* At the start of a function, record that we have no previously-pushed
|
|
|
|
|
arguments waiting to be popped. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void init_pending_stack_adjust (void);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2004-10-19 00:06:36 +02:00
|
|
|
|
/* Discard any pending stack adjustment. */
|
|
|
|
|
extern void discard_pending_stack_adjust (void);
|
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* When exiting from function, if safe, clear out any pending stack adjust
|
|
|
|
|
so the adjustment won't get done. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void clear_pending_stack_adjust (void);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Pop any previously-pushed arguments that have not been popped yet. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void do_pending_stack_adjust (void);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
1999-07-22 13:04:58 +02:00
|
|
|
|
/* Return the tree node and offset if a given argument corresponds to
|
|
|
|
|
a string constant. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern tree string_constant (tree, tree *);
|
1999-07-22 13:04:58 +02:00
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
/* Generate code to evaluate EXP and jump to LABEL if the value is zero. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void jumpifnot (tree, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Generate code to evaluate EXP and jump to LABEL if the value is nonzero. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void jumpif (tree, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Generate code to evaluate EXP and jump to IF_FALSE_LABEL if
|
|
|
|
|
the result is zero, or IF_TRUE_LABEL if the result is one. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void do_jump (tree, rtx, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
|
|
|
|
/* Generate rtl to compare two rtx's, will call emit_cmp_insn. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx compare_from_rtx (rtx, rtx, enum rtx_code, int, enum machine_mode,
|
|
|
|
|
rtx);
|
|
|
|
|
extern void do_compare_rtx_and_jump (rtx, rtx, enum rtx_code, int,
|
|
|
|
|
enum machine_mode, rtx, rtx, rtx);
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
2001-08-21 17:51:22 +02:00
|
|
|
|
/* Two different ways of generating switch statements. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern int try_casesi (tree, tree, tree, tree, rtx, rtx);
|
|
|
|
|
extern int try_tablejump (tree, tree, tree, tree, rtx, rtx);
|
2001-08-21 17:51:22 +02:00
|
|
|
|
|
|
|
|
|
/* Smallest number of adjacent cases before we use a jump table.
|
|
|
|
|
XXX Should be a target hook. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern unsigned int case_values_threshold (void);
|
2001-08-21 17:51:22 +02:00
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
/* Functions from alias.c */
|
|
|
|
|
#include "alias.h"
|
|
|
|
|
|
1993-03-08 13:22:39 +01:00
|
|
|
|
|
1993-02-26 04:49:17 +01:00
|
|
|
|
/* rtl.h and tree.h were included. */
|
|
|
|
|
/* Return an rtx for the size in bytes of the value of an expr. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx expr_size (tree);
|
1993-02-26 04:49:17 +01:00
|
|
|
|
|
2002-08-03 22:20:35 +02:00
|
|
|
|
/* Return a wide integer for the size in bytes of the value of EXP, or -1
|
|
|
|
|
if the size can vary or is larger than an integer. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern HOST_WIDE_INT int_expr_size (tree);
|
2002-08-03 22:20:35 +02:00
|
|
|
|
|
1993-02-26 04:49:17 +01:00
|
|
|
|
/* Return an rtx that refers to the value returned by a function
|
|
|
|
|
in its original home. This becomes invalid if any more code is emitted. */
|
2005-07-14 09:39:56 +02:00
|
|
|
|
extern rtx hard_function_value (tree, tree, tree, int);
|
1993-02-26 04:49:17 +01:00
|
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
|
extern rtx prepare_call_address (rtx, rtx, rtx *, int, int);
|
1993-02-26 04:49:17 +01:00
|
|
|
|
|
2004-11-24 19:50:26 +01:00
|
|
|
|
extern bool shift_return_value (enum machine_mode, bool, rtx);
|
|
|
|
|
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx expand_call (tree, rtx, int);
|
1993-02-26 04:49:17 +01:00
|
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
|
extern void fixup_tail_calls (void);
|
|
|
|
|
|
2003-07-14 07:17:18 +02:00
|
|
|
|
#ifdef TREE_CODE
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx expand_shift (enum tree_code, enum machine_mode, rtx, tree, rtx,
|
|
|
|
|
int);
|
|
|
|
|
extern rtx expand_divmod (int, enum tree_code, enum machine_mode, rtx, rtx,
|
|
|
|
|
rtx, int);
|
2003-07-14 07:17:18 +02:00
|
|
|
|
#endif
|
|
|
|
|
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void locate_and_pad_parm (enum machine_mode, tree, int, int, tree,
|
|
|
|
|
struct args_size *,
|
|
|
|
|
struct locate_and_pad_arg_data *);
|
Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
(REG_BASE_VALUE): Remove unneeded cast to unsigned.
(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
(find_base_decl): New function, from c_find_base_decl in c-common.c.
(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
(get_alias_set): Likewise.
Major rework to do more things and allow language-specific code
to just handle special-cases.
(record_alias_subset): Args are HOST_WIDE_INT.
(record_component_alias): Local vars are HOST_WIDE_INT.
Don't handle COMPLEX_EXPR.
(get_varargs_alias_set): Moved from builtins.c.
(get_frame_alias_set): New function.
* builtins.c (expand_builtin_return_address): Use frame alias set.
(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
for setjmp buffer.
(get_memory_rtx): Rework to use set_mem_attributes.
(get_varargs_alias_set): Deleted from here.
* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
(c_find_base_decl): Deleted from here.
(c_get_alias_set): Remove many cases and rework to just handle
C-specific cases.
* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
* c-decl.c (rtl.h, expr.h): Now included.
(init_decl_processing): Call record_component_aliases on array types.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for all fields that are not bitfields.
* c-typeck.c (common_type): Call record_component_aliases for array.
* caller-save.c (setup_save_areas): Rework register loop for unsigned.
Set all save areas to the frame alias set.
* calls.c (initialie_argument_information): Call set_mem_attributes.
(compute_argument_addresses, expand_call): Likewise.
* explow.c (set_mem_attributes): New function.
(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
LEN and OFFSET now HOST_WIDE_INT.
(clear_by_pieces): Similar changes.
(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
(clear_by_pieces_1): Likewise.
(emit_push_insn): Call set_mem_attributes.
(expand_expr, case INDIRECT_REF): Likewise.
(expand_expr, case VAR_DECL): Call change_address.
* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
tree_low_cst.
(get_varargs_alias_set, get_frame_alias_set): New decls.
(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
(new_alias_set, set_mem_attributes): Likewse.
* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
(assign_stack_temp_for_type): Likewise.
Can split slot even if alias set since can copy.
Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
(assign_temp): Use host_integerp and tree_low_cst.
(put_var_into_stack): Properly handle SAVE_EXPR.
(put_addressof_into_stack): Likewise.
(assign_parms): Call set_mem_attributes.
Delete #if 0 code.
(fix_lexical_address): Put reference to chain into frame alias set.
(expand_function_start): Call set_mem_attributes.
* integrate.c (expand_inline_function): Likewise.
* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (alter_reg): Make alias sets for spilled pseudos.
* rtl.def (MEM): Update comment.
* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
(move_by_pieces): Change length to HOST_WIDE_INT.
(record_base_value, record_alias_subset): Delete from here.
* stmt.c (expand_decl): Call set_mem_attributes.
* stor-layout.c (finish_record_layout): Call record_component_aliases.i
* toplev.c (compile_file): Call init_alias_once earlier.
* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
from here: now in alias.c.
* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
(struct tree_decl): Likewise.
(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
(output_constant_def, force_const_mem): Likewise.
* cp/Makefile.in (decl.o): Include ../expr.h.
* cp/decl.c (expr.h): Include.
(init_decl_processing): Call record_component_aliases for arrays.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for fields that aren't bitfields.
* cp/tree.c (build_cplus_array_type_1): Call record_component_aliases.
From-SVN: r34305
2000-05-31 20:37:31 +02:00
|
|
|
|
|
1993-02-26 04:49:17 +01:00
|
|
|
|
/* Return the CODE_LABEL rtx for a LABEL_DECL, creating it if necessary. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx label_rtx (tree);
|
2003-05-07 23:14:48 +02:00
|
|
|
|
|
|
|
|
|
/* As label_rtx, but additionally the label is placed on the forced label
|
|
|
|
|
list of its containing function (i.e. it is treated as reachable even
|
|
|
|
|
if how is not obvious). */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx force_label_rtx (tree);
|
1993-02-26 04:49:17 +01:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Return an rtx like arg but sans any constant terms.
|
|
|
|
|
Returns the original rtx if it has no constant terms.
|
|
|
|
|
The constant terms are added and stored via a second arg. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx eliminate_constant_term (rtx, rtx *);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Convert arg to a valid memory address for specified machine mode,
|
|
|
|
|
by emitting insns to perform arithmetic if nec. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx memory_address (enum machine_mode, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
c-common.c, [...]: Fix comment typos.
* c-common.c, c-parser.c, cfgbuild.c, cfghooks.c, cfghooks.h,
cfgrtl.c, cgraphunit.c, ddg.c, expr.h, gcse.c, ggc-page.c,
ggc-zone.c, gimplify.c, ipa-inline.c, longlong.h, targhooks.c,
tree-flow-inline.h, tree-pass.h, tree-ssa-dse.c,
tree-ssa-loop-im.c, tree-ssa-loop-ivopts.c,
tree-ssa-operands.c, tree-vect-analyze.c,
tree-vect-transform.c, tree-vectorizer.c, tree.c,
config/arm/arm.c, config/bfin/bfin.c, config/frv/frv.c,
config/frv/frv.md, config/i386/i386.c, config/i386/sse.md,
config/m68hc11/m68hc11.c, config/m68hc11/m68hc11.h,
config/mcore/mcore.c, config/mips/mips.c, config/mips/mips.md,
config/rs6000/darwin-ldouble.c, config/rs6000/rs6000.c,
config/rs6000/rs6000.h, config/sh/sh.c, config/sh/sh.md,
config/sh/ushmedia.h, config/sparc/sparc.c,
config/sparc/sparc.md, config/stormy16/stormy-abi: Fix comment
typos. Follow spelling conventions.
* doc/invoke.texi, doc/tm.texi, doc/tree-ssa.texi: Fix typos.
Follow spelling conventions.
From-SVN: r100218
2005-05-26 20:15:27 +02:00
|
|
|
|
/* Like `memory_address' but pretend `flag_force_addr' is 0. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx memory_address_noforce (enum machine_mode, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
|
to MODE and its address changed to ADDR.
|
|
|
|
|
(VOIDmode means don't change the mode.
|
2001-10-17 11:31:36 +02:00
|
|
|
|
NULL for ADDR means don't change the address.) */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx change_address (rtx, enum machine_mode, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
emit-rtl.c (adjust_address): New function.
* emit-rtl.c (adjust_address): New function.
* expr.h (adjust_address): Add declaration.
* builtins.c: Replace some calls to change_address with calls to it
or to validize_mem.
* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
* config/arm/arm.c, config/convex/convex.c: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.c, config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
* config/sh/sh.c, config/sparc/sparc.md: Likewise.
From-SVN: r43702
2001-07-02 21:47:44 +02:00
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
|
to MODE and its address offset by OFFSET bytes. */
|
2001-10-17 11:31:36 +02:00
|
|
|
|
#define adjust_address(MEMREF, MODE, OFFSET) \
|
2001-11-13 17:52:37 +01:00
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 1, 1)
|
emit-rtl.c (adjust_address): New function.
* emit-rtl.c (adjust_address): New function.
* expr.h (adjust_address): Add declaration.
* builtins.c: Replace some calls to change_address with calls to it
or to validize_mem.
* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
* config/arm/arm.c, config/convex/convex.c: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.c, config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
* config/sh/sh.c, config/sparc/sparc.md: Likewise.
From-SVN: r43702
2001-07-02 21:47:44 +02:00
|
|
|
|
|
[multiple changes]
Mon Jul 9 06:41:07 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (adjust_address_nv, replace_equiv_address_nv): New fcns.
(operand_subword): Use them.
(change_address_1): Renamed from change_address; new arg VALIDATE.
* expr.h: Reflect above changes; change_address now macro.
* alias.c (canon_rtx): Use replace_equiv_address_nv instead of
making MEM.
* cselib.c (add_mem_for_addr): Likewise.
* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (eliminate_regs): Likewise.
* simplify-rtx.c (simplify_replace_rtx): Likewise.
* caller-save.c (setup_save_areas): Use adjust_address_nv instead of
adjust_addess.
* combine.c (make_extraction, simplify_shift_const): Likewise.
(gen_lowpart_for_combine): Likewise.
* cse.c (gen_lowpart_if_possible): Likewise.
* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
* expr.c (expand_expr, case COMPONENT_REF): Likewise.
* optabs.c (gen_move_insn): Likewise.
* reload1.c (alter_reg): Likewise.
* simplify-rtx.c (simplify_subreg): Likewise.
* stmt.c (expand_anon_union_decl): Likewise.
* recog.c (validate_replace_rtx_1): Likewise.
(expr.h): Include.
* Makefile.in (recog.o): Add $(EXPR_H).
* explow.c (stabilize): Call replace_equiv_address.
* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
* final.c (alter_subreg): OFFSET is HOST_WIDE_INT.
2001-07-09 Bo Thorsen <bo@suse.co.uk>
* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.
2001-07-09 Neil Booth <neil@daikokuya.demon.co.uk>
* final.c (output_addr_const): Use target opening and
closing parentheses.
* target-def.h: Define TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN
defaults, add to TARGET_ASM_OUT.
* target.h (struct gcc_target): Add open_paren and close_paren.
* doc/md.texi: Update.
* doc/tm.texi: Document TARGET_ASM_FUNCTION_END_PROLOGUE,
TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, TARGET_ASM_OPEN_PAREN and
TARGET_ASM_CLOSE_PAREN.
* config/i386/i386.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
Override.
* config/pdp11/pdp11.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
Override.
* config/1750a/1750a.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
* config/a29k/a29k.h: Similarly.
* config/alpha/alpha.h: Similarly.
* config/arc/arc.h: Similarly.
* config/arm/aof.h: Similarly.
* config/arm/aout.h: Similarly.
* config/avr/avr.h: Similarly.
* config/c4x/c4x.h: Similarly.
* config/clipper/clipper.h: Similarly.
* config/convex/convex.h: Similarly.
* config/d30v/d30v.h: Similarly.
* config/dsp16xx/dsp16xx.h: Similarly.
* config/elxsi/elxsi.h: Similarly.
* config/fr30/fr30.h: Similarly.
* config/h8300/h8300.h: Similarly.
* config/i370/i370.h: Similarly.
* config/i386/i386.h: Similarly.
* config/i860/i860.h: Similarly.
* config/i960/i960.h: Similarly.
* config/ia64/ia64.h: Similarly.
* config/m32r/m32r.h: Similarly.
* config/m68hc11/m68hc11.h: Similarly.
* config/m68k/m68k.h: Similarly.
* config/m88k/m88k.h: Similarly.
* config/mcore/mcore.h: Similarly.
* config/mips/mips.h: Similarly.
* config/mn10200/mn10200.h: Similarly.
* config/mn10300/mn10300.h: Similarly.
* config/ns32k/ns32k.h: Similarly.
* config/pa/pa.h: Similarly.
* config/pdp11/pdp11.h: Similarly.
* config/pj/pj.h: Similarly.
* config/romp/romp.h: Similarly.
* config/rs6000/rs6000.h: Similarly.
* config/sh/sh.h: Similarly.
* config/sparc/sparc.h: Similarly.
* config/v850/v850.h: Similarly.
* config/vax/vax.h: Similarly.
* config/we32k/we32k.h: Similarly.
2001-07-09 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/c-tree.texi: Document representation of attributes.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/tm.texi: Update some places for the rename of target to
targetm. Fix typo.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* target.h (struct gcc_target): Add insert_attributes.
* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
(TARGET_INITIALIZER): Update.
* tree.c, tree.h (default_insert_attributes): New function.
Update comments on other default functions to refer to targetm,
not target.
* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
TARGET_INSERT_ATTRIBUTES.
(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
* c-common.c (decl_attributes): Use targetm.insert_attributes.
Don't use PRAGMA_INSERT_ATTRIBUTES.
* Makefile.in (c-common.o): Depend on $(TARGET_H).
* c-decl.c (start_decl, start_function): Don't call
SET_DEFAULT_DECL_ATTRIBUTES.
* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
declare.
* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
(c4x_check_attribute): Avoid modifying attribute list itself.
(c4x_set_default_attributes): Rename to c4x_insert_attributes.
Make static.
* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
declare.
* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
Make static.
* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
declare.
* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
(v850_set_default_decl_attr): Rename to v850_insert_attributes.
Adjust parameters. Make static.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (decl_attributes): Only take a single attributes
parameter.
* c-common.h (decl_attributes): Update prototype.
* c-decl.c (start_decl, start_function): Only take a single
attributes parameter. Update calls to decl_attributes.
(finish_struct, finish_enum): Update calls to decl_attributes.
(push_parm_decl): Expect unified list of attributes. Update call
to decl_attributes.
* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
notype_nested_function, component_declarator,
component_notype_declarator, label): Update calls to
decl_attributes.
(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
lists that are passed to push_parm_decl.
* c-tree.h (start_function, start_decl): Update prototypes.
* config/sh/sh-protos.h, config/sh/sh.c
(sh_pragma_insert_attributes): Only take a single attributes
parameter.
* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
* doc/tm.texi (INSERT_ATTRIBUTES): Update.
* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
build_module_descriptor, generate_static_references,
generate_strings, build_selector_translation_table,
generate_descriptor_table, generate_protocols,
generate_ivars_list, generate_dispatch_table,
generate_protocol_list, generate_category,
generate_shared_structures, really_start_method, add_objc_decls,
generate_classref_translation_entry): Update calls to start_decl
and start_function.
(build_tmp_function_decl, start_method_def): Unify attribute lists
that are passed to push_parm_decl.
2001-07-08 Neil Booth <neil@daikokuya.demon.co.uk>
* final.c (no_asm_to_stream): New.
(final_scan_insn): Use target structures for prologue ends
and epilogue starts.
* output.h (no_asm_to_stream): New.
* target-def.h (TARGET_ASM_FUNCTION_END_PROLOGUE,
TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): New.
(TARGET_ASM_OUT): Update.
* target.h (struct gcc_target): New members function_end_prologue
and function_begin_epilogue.
* config/1750/1750.h (ASM_OUTPUT_FUNNAM): Delete as unused.
* config/alpha/alpha-protos.h (output_end_prologue): Delete.
* config/alpha/alpha.c (output_end_prologue): Rename to
alpha_output_function_end_prologue. Use in target struct
and make static.
* config/alpha/alpha.h (FUNCTION_END_PROLOGUE): Delete.
* config/ia64/ia64-protos.h (ia64_output_end_prologue): Delete.
* config/ia64/ia64.c (ia64_output_end_prologue): Rename to
ia64_output_function_end_prologue. Use in target struct
and make static.
(ia64_function_prologue, ia64_funciton_epilogue): Rename
mistyped prototypes.
* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Delete.
* config/m88k/m88k-protos.h (m88k_end_prologue, m88k_begin_epilogue):
Delete.
* config/m88k/m88k.c (m88k_end_prologue, m88k_begin_epilogue): Rename
an use in target struct, make static.
* config/ia64/ia64.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE):
Delete.
2001-07-08 Richard Henderson <rth@redhat.com>
* stmt.c (emit_case_nodes): Convert modes properly in low+high test.
2001-07-08 Richard Henderson <rth@redhat.com>
* config/i386/i386.md: Remove constraints strings from define_split
and define_peephole2 patterns.
(eh_return_si, eh_return_di): Split eh_return_1 for modes.
(eh_return): Use them.
2001-07-08 Richard Henderson <rth@redhat.com>
* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
Document MD_FALLBACK_FRAME_STATE_FOR.
2001-07-07 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM
elimination.
* config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0.
2001-07-07 Nick Clifton <nickc@cambridge.redhat.com>
* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Append # to end
of the label inside NAME as opposed to just the end of NAME.
2001-07-07 Neil Booth <neil@daikokuya.demon.co.uk>
* config/alpha/alpha-protos.h (vms_valid_decl_attribute_p): Delete.
* config/alpha/alpha.c (alpha_init_machine_status,
alpha_mark_machine_status, alpha_free_machine_status): Delete.
(TARGET_VALID_DECL_ATTRIBUTE): Define for VMS.
(vms_valid_decl_attribute_p): Make static, conditionally compile.
* config/alpha/alpha.h (VALID_MACHINE_DECL_ATTRIBUTE): Delete.
2001-07-06 Stan Shebs <shebs@apple.com>
* target.h (targetm): Rename global from "target", so as not to
conflict with local variables.
* c-decl.c: Ditto.
* c-typeck.c: Ditto.
* final.c: Ditto.
* tree.c: Ditto.
* cp/decl.c: Ditto.
* cp/decl2.c: Ditto.
* cp/typeck.c: Ditto.
* 1750a/1750a.c: Ditto.
* a29k/a29k.c: Ditto.
* arc/arc.c: Ditto.
* arm/arm.c: Ditto.
* avr/avr.c: Ditto.
* clipper/clipper.c: Ditto.
* convex/convex.c: Ditto.
* d30v/d30v.c: Ditto.
* dsp16xx/dsp16xx.c: Ditto.
* elxsi/elxsi.c: Ditto.
* fr30/fr30.c: Ditto.
* h8300/h8300.c: Ditto.
* i370/i370.c: Ditto.
* i386/i386.c: Ditto.
* i860/i860.c: Ditto.
* i960/i960.c: Ditto.
* ia64/ia64.c: Ditto.
* m32r/m32r.c: Ditto.
* m68hc11/m68hc11.c: Ditto.
* m68k/m68k.c: Ditto.
* m88k/m88k.c: Ditto.
* mips/mips.c: Ditto.
* ns32k/ns32k.c: Ditto.
* pa/pa.c: Ditto.
* pdp11/pdp11.c: Ditto.
* romp/romp.c: Ditto.
* rs6000/rs6000.c: Ditto.
* sh/sh.c: Ditto.
* sparc/sparc.c: Ditto.
* vax/vax.c: Ditto.
* we32k/we32k.c: Ditto.
* doc/tm.texi: Update the manual to match.
2001-07-06 Richard Henderson <rth@redhat.com>
* except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of
DWARF2_UNWIND_INFO not just whether it is defined.
2001-07-06 Diego Novillo <dnovillo@redhat.com>
* combine.c (combine_simplify_rtx): Also recompute 'mode' if the
call to simplify_binary_operation returns a new pattern.
2001-07-06 Roman Lechtchinsky <rl@cs.tu-berlin.de>
* glimits.h (__SHRT_MAX__): New.
(SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX.
(SHRT_MAX): Define in terms of __SHRT_MAX__.
2001-07-06 Jan van Male <jan.vanmale@fenk.wau.nl>
* alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to
avoid warnings.
2001-07-06 Richard Henderson <rth@redhat.com>
* bitmap.c (bitmap_release_memory): Move adjacent to the
allocation functions.
(bitmap_first_set_bit, bitmap_last_set_bit): Streamline knowing
the implementation. Binary search for the set bit.
(bitmap_union_of_diff): Allocate the temporary on the stack
instead of using xmalloc.
2001-07-06 Richard Henderson <rth@redhat.com>
* genrecog.c (validate_pattern): Warn for constraints in
define_{expand,split,peephole2}. Remove strict_low_part
before looking up match_dup.
2001-07-06 DJ Delorie <dj@redhat.com>
* doc/gcc.texi (Makefile): Rename to be a more general purpose
chapter about various build hints and history. Add section
talking about the various types of native and cross builds.
2001-07-06 Neil Booth <neil@daikokuya.demon.co.uk>
* Makefile.in (final.o): Depend on target.h.
* final.c: Include target.h.
(default_function_pro_epilogue): New.
(final_start_function): Use target structure for function prologues.
(final_end_function): Use target structure for function epilogues.
* fold-const.c (real_hex_to_f): Constify s and p.
* output.h (default_function_pro_epilogue): New.
* real.h (real_hex_to_f): Update prototype.
* target-def.h (TARGET_ASM_FUNCTION_PROLOGUE,
TARGET_ASM_FUNCTION_EPILOGUE, TARGET_ASM_OUT): New.
(TARGET_INITIALIZER): Update.
* target.h (gcc_target): Add struct asm_out.
* doc/tm.texi: Update.
config:
Update each arch to use TARGET_ASM_FUNCTION_PROLOGUE and
TARGET_ASM_FUNCTION_EPILOGUE. Move macro code to functions
in cpu/cpu.c, or rename old functions consistently. Take
a HOST_WIDE INT not an int as the SIZE parameter. Remove now
redundant macros and prototypes. Make new functions static.
* 1750a/1750a.c: Similarly.
* 1750a/1750a.h: Similarly.
* a29k/a29k-protos.h: Similarly.
* a29k/a29k.c: Similarly.
* a29k/a29k.h: Similarly.
* arc/arc-protos.h: Similarly.
* arc/arc.c: Similarly.
* arc/arc.h: Similarly.
* arm/arm-protos.h: Similarly.
* arm/arm.c: Similarly.
* arm/arm.h: Similarly.
* avr/avr-protos.h: Similarly.
* avr/avr.c: Similarly.
* avr/avr.h: Similarly.
* clipper/clipper-protos.h: Similarly.
* clipper/clipper.c: Similarly.
* clipper/clipper.h: Similarly.
* convex/convex.c: Similarly.
* convex/convex.h: Similarly.
* d30v/d30v-protos.h: Similarly.
* d30v/d30v.c: Similarly.
* d30v/d30v.h: Similarly.
* d30v/d30v.md: Similarly.
* dsp16xx/dsp16xx-protos.h: Similarly.
* dsp16xx/dsp16xx.c: Similarly.
* dsp16xx/dsp16xx.h: Similarly.
* elxsi/elxsi.c: Similarly.
* elxsi/elxsi.h: Similarly.
* fr30/fr30.c: Similarly.
* fr30/fr30.md: Similarly.
* h8300/h8300-protos.h: Similarly.
* h8300/h8300.c: Similarly.
* h8300/h8300.h: Similarly.
* i370/i370-protos.h: Similarly.
* i370/i370.c: Similarly.
* i370/i370.h: Similarly.
* i386/i386.c: Similarly.
* i386/osf1elf.h: Similarly.
* i386/osfrose.h: Similarly.
* i860/i860-protos.h: Similarly.
* i860/i860.c: Similarly.
* i860/i860.h: Similarly.
* i960/i960-protos.h: Similarly.
* i960/i960.c: Similarly.
* i960/i960.h: Similarly.
* ia64/ia64-protos.h: Similarly.
* ia64/ia64.c: Similarly.
* ia64/ia64.h: Similarly.
* m32r/m32r-protos.h: Similarly.
* m32r/m32r.c: Similarly.
* m32r/m32r.h: Similarly.
* m68hc11/m68hc11-protos.h: Similarly.
* m68hc11/m68hc11.c: Similarly.
* m68hc11/m68hc11.h: Similarly.
* m68k/crds.h: Similarly.
* m68k/dpx2.h: Similarly.
* m68k/m68k-protos.h: Similarly.
* m68k/m68k.c: Similarly.
* m68k/m68k.h: Similarly.
* m68k/news.h: Similarly.
* m88k/m88k-protos.h: Similarly.
* m88k/m88k.c: Similarly.
* m88k/m88k.h: Similarly.
* mips/mips-protos.h: Similarly.
* mips/mips.c: Similarly.
* mips/mips.h: Similarly.
* ns32k/merlin.h: Similarly.
* ns32k/ns32k.c: Similarly.
* ns32k/ns32k.h: Similarly.
* ns32k/tek6000.h: Similarly.
* pa/pa-protos.h: Similarly.
* pa/pa.c: Similarly.
* pa/pa.h: Similarly.
* pdp11/2bsd.h: Similarly.
* pdp11/pdp11-protos.h: Similarly.
* pdp11/pdp11.c: Similarly.
* pdp11/pdp11.h: Similarly.
* romp/romp-protos.h: Similarly.
* romp/romp.c: Similarly.
* romp/romp.h: Similarly.
* rs6000/rs6000-protos.h: Similarly.
* rs6000/rs6000.c: Similarly.
* rs6000/rs6000.h: Similarly.
* rs6000/sysv4.h: Similarly.
* sh/sh-protos.h: Similarly.
* sh/sh.c: Similarly.
* sh/sh.h: Similarly.
* sparc/sparc-protos.h: Similarly.
* sparc/sparc.c: Similarly.
* sparc/sparc.h: Similarly.
* vax/vax.c: Similarly.
* vax/vax.h: Similarly.
* vax/vms.h: Similarly.
* we32k/we32k.c: Similarly.
* we32k/we32k.h: Similarly.
Fri Jul 6 11:47:59 2001 Jeffrey A Law (law@cygnus.com)
* basic-block.h (first_insn_after_basic_block_note): Declare.
* flow.c (first_insn_after_basic_block_note): Define. Moved
from...
* ssa.c (first_insn_after_basic_block_note): Remove.
* ssa-dce.c (find_inherently_necessary): Consider BARRIERs
necessary.
(ssa_eliminate_dead_code): Properly update the CFG and PHI
nodes when we find a dead conditional branch. Insert BARRIERs
after any blocks with no successors, but which do not have
any BARRIERs.
2001-07-06 Zack Weinberg <zackw@stanford.edu>
* varray.c (varray_check_failed): Use internal_error.
2001-07-05 Andrew Haley <aph@redhat.com>
* Makefile.in (LIB2_DIVMOD_FUNCS): New.
(LIB2FUNCS): Move divmod functions to LIB2_DIVMOD_FUNCS.
* mklibgcc.in: Compile LIB2_DIVMOD_FUNCS.
2001-07-02 Jason Merrill <jason_merrill@redhat.com>
* dwarf2out.c (mem_loc_descriptor): Only look through a constant pool
reference if the target constant is also a SYMBOL_REF.
2001-07-05 Eric Christopher <echristo@redhat.com>
* config/mips/mips.h (MASK_MIPS3900): Remove.
(MASK_MIPS16,MASK_NO_CHECK_ZERO_DIV,MASK_CHECK_RANGE_DIV,
MASK_UNINIT_CONST_IN_RODATA): Change for 3900 mask removal.
(TARGET_MIPS3900): Change to use mips_arch.
(TARGET_MIPS4000): New.
(TARGET_MIPS4100): New.
(TARGET_MIPS4300): New.
(TARGET_SWITCHES): Change 3900 and 4650 options to NULL.
(SUBTARGET_TARGET_OPTIONS): Add -march. Change help text
for -mipsX.
(GENERATE_BRANCHLIKELY): Move TARGET_MIPS3900.
(ISA_HAS_BRANCHLIKELY): To here.
(CC1_CPU_SPEC): New.
(CC1_SPEC): Use here. Remove 4650 and 3900 options.
(mips_arch_string): Declare.
(mips_arch): Declare.
(TARGET_OPTIONS): Add -march and -mtune.
* config/mips/mips.c (mips_arch_string): New.
(mips_arch): New.
(override_options): Handle -march for codegen and -mtune
for scheduling. Use mips_arch. Move tx39 target default here.
(mips_parse_cpu): Move error message to override_options.
* config/mips/r3900.h (TARGET_DEFAULT): Remove.
* config/mips/mips.md: Use TARGET_MIPS4000 and TARGET_MIPS4300.
* doc/invoke.texi (Option Summary): Add -march and -mtune entries.
(MIPS Options): Ditto. Change mcpu entry to historical text.
2001-07-05 H.J. Lu (hjl@gnu.org)
* config/mips/mips.c (mips_parse_cpu): New function to parse
-march=*/-mcpu=*.
2001-07-05 Jim Wilson <wilson@redhat.com>
* config/ia64/lib1funcs.asm: Revert 2001-07-02 change.
* config/ia64/t-ia64: Likewise.
(LIB1ASMFUNCS): Update comment.
2001-07-05 David Edelsohn <edelsohn@gnu.org>
* doc/install.texi (Install GCC: Binaries): Fix typo.
2001-07-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
reference using the stack pointer, adjust it since we push Y
temporarily.
("*ashrsi3"): Likewise.
("*lshrsi3"): Likewise.
2001-07-05 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
when -fomit-frame-pointer is used.
2001-07-05 Jeffrey Oldham <oldham@codesourcery.com>
* flow.c: Reverse Jan Hubicka's patch of 02July2001.
(try_redirect_by_replacing_jump): Reverse updating properly the
count and frequency information. Reverse removing cc0 setter.
(forwarder_block_p): Reverse fixing for fallthru blocks.
2001-07-05 DJ Delorie <dj@redhat.com>
* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
(translate_options): If the above is defined, use it to map
given options to new options.
* doc/tm.texi: Document it.
2001-07-05 Brad Lucier <lucier@math.purdue.edu>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/invoke.texi (Optimize Options): Document that -fgcse may
cause programs using computed gotos to run more slowly.
2001-07-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific): Markup, spelling and typo fixes.
Fixed sorting.
Consistently require binutils 2.11.2, not prereleases.
(Specific, decstation-*): Canonicalize as mips-dec-*.
(Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement,
always necessary.
(Specific, m68k-altos): Removed reference to README.altos, deleted.
(Specific, mips-*): Reword MIPS C compiler requirements.
(Specific, powerpc*-*-*): New, mention --with-cpu once.
(Specific, sunv5): Removed, obsolete.
2001-07-05 Nathan Sidwell <nathan@codesourcery.com>
* dwarf2out.c (output_loc_list): Use an all ones mask for
.text asm output and don't rely on long long
literals. Reformat some long lines.
2001-07-05 Andreas Jaeger <aj@suse.de>
* doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL
section.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* dwarf2out.c (dwarf2out_define): Update comment.
(dwarf2out_undef): Ditto.
(dwarf2out_start_source_file): Ditto.
(dwarf2out_end_source_file): Ditto.
(dwarf2out_finish): Output DW_MACINFO_end_file for primary file,
since we never call the start/end debug hook for the primary file.
2001-07-04 Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.c (get_shift_alg): Remove an extra operand
from shll.
2001-07-04 Nathan Sidwell <nathan@codesourcery.com>
* cppinit.c (remove_dup_dirs): Inform if a system include
directory is being reordered.
* doc/invoke.texi (Directory Options): GCC warns if you hide a
system include.
* doc/cpp.texi (Search Paths): Likewise.
* doc/gcc.texi (Interoperation): Remove information about
-I/usr/include.
2001-07-04 Nathan Sidwell <nathan@codesourcery.com>
* varray.h (VARRAY_TOP_GENERIC_PTR): Remove spurious parameter.
(VARRAY_TOP_CHAR_PTR): Likewise.
2001-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.c (process_command): Don't assign elements of a const char*.
Wed Jul 4 13:40:02 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (change_address): Don't abort if invalid address while
reload is in progress.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* c-lex.c (cb_file_change): Pass line number to
debug_start_source_file.
(cb_undefine): Pass correct line number to debug_undef.
* toplev.c (debug_start_source_file): Add line number to
parameters. Pass it along to dwarf2out_start_source_file.
(decode_g_option): Stop resetting debug level back to normal when
we change debug formats, unless the current level is
none. (Before, -g3 -gdwarf-2 would use debug level 2, rather than
3).
* toplev.h (debug_start_source_file): Add line number to
parameters.
* dwarf2out.h (dwarf2out_start_source_file): Add line number to
parameters.
* dwarf2out.c (dwarf2out_start_source_file): Add line number to
parameters.
Output debug_macinfo data for starting file if requested.
(dwarf2out_end_source_file): Output debug_macinfo data for ending
file if requested.
(dwarf2out_define): Output debug_macinfo data for defining a macro
if requested.
(dwarf2out_undef): Output debug_macinfo data for undefining a
macro if requested.
(DEBUG_MACINFO_SECTION): New. DWARF2 macro info section name.
(DEBUG_MACINFO_SECTION_LABEL): New. DWARF2 macro info section label.
(macinfo_section_label): New. DWARF2 macro info section label.
(dwarf2out_init): If we want macro info, output the start label
for the section.
(dwarf2out_finish): If we want macro info, add a DW_AT_macro_info
attribute to the compilation unit die pointing to the macro info.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* dwarf2out.c (new_loc_list): Move to inside #ifdef
DWARF2_DEBUGGING_INFO.
(add_loc_descr_to_loc_list): Ditto.
(output_loc_list): Ditto.
Also, fix thinko in curr not being initialized.
(gen_internal_sym): Ditto.
Wed Jul 4 13:40:02 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (replace_equiv_address): New function.
* expr.h (replace_equiv_address): New declaration.
* explow.c (validize_mem): Call it instead of change_address and
also call if -fforce-addr and address is constant.
* expr.c: Replace more calls to change_address with adjust_address
and/or replace_equiv_address or to validize_mem.
* function.c, regmove.c, config/alpha/alpha.c: Likewise.
* config/arm/arm.md, config/clipper/clipper.md: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i370/i370.md, config/i860/i860.md: Likewise.
* config/i960/i960.md, config/mips/mips.c: Likewise.
* config/mips/mips.md, config/pa/pa.md: Likewise.
* config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise.
* config/rs6000/rs6000.md, config/sh/sh.md: Likewise.
2001-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA.
* bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a
function.
2001-07-04 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/include: New directory.
* doc/fdl.texi: Move to doc/include/fdl.texi.
* doc/texinfo.tex: Move to doc/include/texinfo.tex.
* doc/include/funding.texi, doc/include/gpl.texi: New files.
* doc/gcc.texi: Use funding.texi and gpl.texi.
* Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info,
$(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi):
Update dependencies and use -I $(docdir)/include.
2001-07-04 Anthony Green <green@redhat.com>
* config/v850/t-v850 (v850-c.o): Add missing dependencies.
2001-07-04 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (sparc64-*-*): Remove garbage.
Wed Jul 4 09:07:44 2001 Jan van Male <jan.vanmale@fenk.wau.nl>
* i386.c (ix86_expand_builtin, case IX86_BUILTIN_SETPS):
Fix typo in last change to use adjust_address.
2001-07-04 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (Specific): Update information for *-*-solaris*.
Tue Jul 3 22:33:15 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide): Reinitialize Y for restart.
2001-07-03 Stan Shebs <shebs@apple.com>
* config/darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove
case for flag_no_mach_text_sections.
(EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION.
* config/darwin.c (flag_no_mach_text_sections): Remove.
* config/darwin-protos.h (darwin_init_pragma): Remove decl.
Tue Jul 3 15:35:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide, case PLUS): Call find_constant_term
and avoid checking for constant as first operand.
* recog.c (find_constant_term_loc): No longer static.
(adj_offettable_operand): Delete.
* rtl.h (adj_offsettable_operand): Delete declaration.
(find_constant_term): Add declaration.
* caller-save.c: Replace calls to adj_offsettable_operand with calls
to adjust_address.
* config/arm/arm.c, config/c4x/c4x.c: Likewise.
* config/clipper/clipper.md, config/h8300/h8300.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/i860/i860.c, config/i960/i960.c: Likewise.
* config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise.
* config/m68k/m68k.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.md, config/mcore/mcore.c: Likewise.
* config/mips/mips.c, config/mips/mips.md: Likewise.
* config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise.
* config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise.
* config/pa/pa.c, config/pdp11/pdp11.c: Likewise.
* config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise.
* config/vax/vax.md, config/ns32k/ns32k.c: Likewise.
* config/ns32k/ns32k.md: Likewise.
2001-07-03 Zack Weinberg <zackw@stanford.edu>
* rtl.c (copy_rtx): Handle 'T' format letter.
* gensupport.c (collect_insn_data): Likewise.
* print-rtl.c (print_rtx): Print 'T' slots like 's'.
2001-07-03 Nick Clifton <nickc@cambridge.redhat.com>
* doc/invoke.texi (Directory Options): Specifiy range for <N> in
-B option. Use 'dir' not 'foo' as example directory name.
2001-07-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/cppinternals.texi: Improve formatting and logical markup.
2001-07-03 Andreas Jaeger <aj@suse.de>
* Makefile.in (insn-recog.o): Add dependency on reload.h.
* genrecog.c (write_header): Include reload.h for prototypes in
insn-recog.c.
2001-07-03 Neil Booth <neil@daikokuya.demon.co.uk>
config:
* i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE,
VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
* i386/i386-protos.h (i386_pe_valid_decl_attribute_p,
i386_pe_valid_type_attribute_p): Add.
* i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets.
* i386/winnt.c (i386_valid_decl_attribute_p): Return directly.
Mon Jul 2 21:52:19 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide, case LO_SUM): New case.
(plus_constant_for_output_wide): Delete.
* rtl.h (plus_constant_for_output): Delete.
* alias.c (canon_rtx, init_alias_analysis): Call plus_constant
instead of plus_constant_for_output.
* recog.c (offsettable_address_p, adj_offsettable_operand): Likewise.
* config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise.
* config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise.
* config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise.
* config/sparc/sparc.md: Likewise.
Convert some change_address calls to adjust_address.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi,
doc/rtl.texi, doc/tm.texi: Improve formatting. Improve
documentation of -std and -Wwrite-strings.
2001-07-02 Geoffrey Keating <geoffk@redhat.com>
* cse.c (canon_hash): Don't register registers in very small
register classes, as extending their lifetime might cause
reload to fail.
Mon Jul 2 23:14:00 CEST 2001 Jan Hubicka <jh@suse.cz>
* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.
* flow.c (forwarder_block_p): Fix for fallthru blocks.
(try_redirect_by_replacing_jump): Update properly the count
and frequency information.
Mon Jul 2 14:20:13 2001 Jeffrey A Law (law@cygnus.com)
* toplev.c (dump_file_index): Move SSA dumps just after first
jump dump.
(dump_file): Corresponding changes.
(rest_of_compilation): Move SSA path to just after the first
jump pass.
* doc/gcc.texi (Passes): Update due to movement of SSA path.
* doc/invoke.texi: Update dump file #s as they were completely
out of date with reality.
2001-07-02 Geoffrey Keating <geoffk@redhat.com>
* doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE.
* expr.c (emit_move_insn_1): Deal with non-default
STACK_PUSH_CODE.
* expr.c (emit_single_push_insn): Fix warning.
2001-07-02 Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
* expr.c (emit_move_insn_1): Avoid modifying
cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined.
Mon Jul 2 15:33:31 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (adjust_address): New function.
* expr.h (adjust_address): Add declaration.
* builtins.c: Replace some calls to change_address with calls to it
or to validize_mem.
* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
* config/arm/arm.c, config/convex/convex.c: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.c, config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
* config/sh/sh.c, config/sparc/sparc.md: Likewise.
2001-07-02 Jim Wilson <wilson@redhat.com>
* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment.
2001-07-02 Steve Ellcey <sje@cup.hp.com>
* config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore.
* config/ia64/lib1funcs.asm: Change macro names to match t-ia64.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* cppinit.c (lang_defaults): New table.
(set_lang): Just read from lang_defaults into the live options
structure.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* Makefile.in (doc): Depend on $(GENERATED_MANPAGES).
* doc/.cvsignore: Add gcc.1, cpp.1, gcov.1.
* doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed.
2001-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi: Various spelling and markup fixes.
(Installing GCC): Component specific installation instructions are
gone.
Fix reference.
Warn about removing old install dir in the presence of shared libs.
(Configuration): Invoke with options target to match configure
--help.
Consistently refer to gas, gld pathnames.
Invert --enable-multilib documentation.
Remove references to old compiler versions.
Mon Jul 2 12:50:51 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.
2001-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5
section.
(Specific, mips*-sgi-irix5): Note IDO download.
Reworded MIPS C hints.
Use GNU as instead of GAS.
Markup fixes.
Removed SGI Freeware reference, IRIX 6 only.
(Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete.
Note N64 library requirement/workaround.
Update O32 hints.
Complete list of structure passing bug victims.
2001-07-02 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi: Remove CVS Id.
2001-07-02 Andreas Jaeger <aj@suse.de>
* ssa-dce.c (note_inherently_necessary_set): Add unused attribute.
(find_inherently_necessary): Remove unused variable.
2001-07-02 Nathan Sidwell <nathan@codesourcery.com>
* c-common.h (TDI_inlined): New ast dump phase.
(dump_flag_name): New function.
* c-dump.c (dump_files): Add inlined phase.
(dump_flag_name): Define.
* doc/invoke.texi (-fdump-ast-inlined): Document.
Mon Jul 2 06:29:36 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stor-layout.c (layout_decl): Revert change to handling of alignment
in packed types.
Sun Jul 1 11:53:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* c-common.c (decl_attributes, case A_MODE): Don't call layout_decl
for FIELD_DECL.
2001-07-01 Geoffrey Keating <geoffk@redhat.com>
* doc/tm.texi (FUNCTION_ARG): Document that the last call
is special.
2001-07-01 Nathan Sidwell <nathan@codesourcery.com>
* tlink.c (recompile_files): Remove COMPILER_PATH and
LIBRARY_PATH from the environment.
2001-07-01 Zack Weinberg <zackw@stanford.edu>
* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT,
RID_LAST_PQ. Move RID_FIRST_PQ down with the other FIRST/LAST
enumerators.
(OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros.
* c-parse.in (OBJC_STRING): Kill.
(objc_string): Decompose to [objc_string] '@' STRING.
(reswords): Take the leading '@' off all the Objective C keywords.
(objc_rid_sans_at): Kill.
(init_reswords): Don't initialize it.
(yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD.
(_yylex): Kill reconsider label. Look ahead one token after
an '@'; if we get an identifier, check whether it's an
Objective C @-keyword. If so, return the keyword. Otherwise,
put back the token and return the '@' as a terminal.
* cpplib.c (lex_macro_node): Remove unnecessary check for
leading '@' on identifier. Clarify control flow and commentary.
Sun Jul 1 11:53:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* cse.c (new_label_ref): Variable deleted.
(insert): Remove set of new_label_ref.
(check_for_label_ref): New function.
(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.
See ChangeLog.5 for earlier changes.
From-SVN: r43861
2001-07-09 13:20:51 +02:00
|
|
|
|
/* Likewise, but the reference is not required to be valid. */
|
2001-10-17 11:31:36 +02:00
|
|
|
|
#define adjust_address_nv(MEMREF, MODE, OFFSET) \
|
2001-11-13 17:52:37 +01:00
|
|
|
|
adjust_address_1 (MEMREF, MODE, OFFSET, 0, 1)
|
|
|
|
|
|
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode changed
|
|
|
|
|
to MODE and its address changed to ADDR, which is assumed to be
|
|
|
|
|
increased by OFFSET bytes from MEMREF. */
|
|
|
|
|
#define adjust_automodify_address(MEMREF, MODE, ADDR, OFFSET) \
|
|
|
|
|
adjust_automodify_address_1 (MEMREF, MODE, ADDR, OFFSET, 1)
|
|
|
|
|
|
|
|
|
|
/* Likewise, but the reference is not required to be valid. */
|
|
|
|
|
#define adjust_automodify_address_nv(MEMREF, MODE, ADDR, OFFSET) \
|
|
|
|
|
adjust_automodify_address_1 (MEMREF, MODE, ADDR, OFFSET, 0)
|
2001-10-17 11:31:36 +02:00
|
|
|
|
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx adjust_address_1 (rtx, enum machine_mode, HOST_WIDE_INT, int, int);
|
|
|
|
|
extern rtx adjust_automodify_address_1 (rtx, enum machine_mode, rtx,
|
|
|
|
|
HOST_WIDE_INT, int);
|
[multiple changes]
Mon Jul 9 06:41:07 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (adjust_address_nv, replace_equiv_address_nv): New fcns.
(operand_subword): Use them.
(change_address_1): Renamed from change_address; new arg VALIDATE.
* expr.h: Reflect above changes; change_address now macro.
* alias.c (canon_rtx): Use replace_equiv_address_nv instead of
making MEM.
* cselib.c (add_mem_for_addr): Likewise.
* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (eliminate_regs): Likewise.
* simplify-rtx.c (simplify_replace_rtx): Likewise.
* caller-save.c (setup_save_areas): Use adjust_address_nv instead of
adjust_addess.
* combine.c (make_extraction, simplify_shift_const): Likewise.
(gen_lowpart_for_combine): Likewise.
* cse.c (gen_lowpart_if_possible): Likewise.
* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
* expr.c (expand_expr, case COMPONENT_REF): Likewise.
* optabs.c (gen_move_insn): Likewise.
* reload1.c (alter_reg): Likewise.
* simplify-rtx.c (simplify_subreg): Likewise.
* stmt.c (expand_anon_union_decl): Likewise.
* recog.c (validate_replace_rtx_1): Likewise.
(expr.h): Include.
* Makefile.in (recog.o): Add $(EXPR_H).
* explow.c (stabilize): Call replace_equiv_address.
* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
* final.c (alter_subreg): OFFSET is HOST_WIDE_INT.
2001-07-09 Bo Thorsen <bo@suse.co.uk>
* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.
2001-07-09 Neil Booth <neil@daikokuya.demon.co.uk>
* final.c (output_addr_const): Use target opening and
closing parentheses.
* target-def.h: Define TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN
defaults, add to TARGET_ASM_OUT.
* target.h (struct gcc_target): Add open_paren and close_paren.
* doc/md.texi: Update.
* doc/tm.texi: Document TARGET_ASM_FUNCTION_END_PROLOGUE,
TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, TARGET_ASM_OPEN_PAREN and
TARGET_ASM_CLOSE_PAREN.
* config/i386/i386.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
Override.
* config/pdp11/pdp11.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
Override.
* config/1750a/1750a.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
* config/a29k/a29k.h: Similarly.
* config/alpha/alpha.h: Similarly.
* config/arc/arc.h: Similarly.
* config/arm/aof.h: Similarly.
* config/arm/aout.h: Similarly.
* config/avr/avr.h: Similarly.
* config/c4x/c4x.h: Similarly.
* config/clipper/clipper.h: Similarly.
* config/convex/convex.h: Similarly.
* config/d30v/d30v.h: Similarly.
* config/dsp16xx/dsp16xx.h: Similarly.
* config/elxsi/elxsi.h: Similarly.
* config/fr30/fr30.h: Similarly.
* config/h8300/h8300.h: Similarly.
* config/i370/i370.h: Similarly.
* config/i386/i386.h: Similarly.
* config/i860/i860.h: Similarly.
* config/i960/i960.h: Similarly.
* config/ia64/ia64.h: Similarly.
* config/m32r/m32r.h: Similarly.
* config/m68hc11/m68hc11.h: Similarly.
* config/m68k/m68k.h: Similarly.
* config/m88k/m88k.h: Similarly.
* config/mcore/mcore.h: Similarly.
* config/mips/mips.h: Similarly.
* config/mn10200/mn10200.h: Similarly.
* config/mn10300/mn10300.h: Similarly.
* config/ns32k/ns32k.h: Similarly.
* config/pa/pa.h: Similarly.
* config/pdp11/pdp11.h: Similarly.
* config/pj/pj.h: Similarly.
* config/romp/romp.h: Similarly.
* config/rs6000/rs6000.h: Similarly.
* config/sh/sh.h: Similarly.
* config/sparc/sparc.h: Similarly.
* config/v850/v850.h: Similarly.
* config/vax/vax.h: Similarly.
* config/we32k/we32k.h: Similarly.
2001-07-09 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/c-tree.texi: Document representation of attributes.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/tm.texi: Update some places for the rename of target to
targetm. Fix typo.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* target.h (struct gcc_target): Add insert_attributes.
* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
(TARGET_INITIALIZER): Update.
* tree.c, tree.h (default_insert_attributes): New function.
Update comments on other default functions to refer to targetm,
not target.
* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
TARGET_INSERT_ATTRIBUTES.
(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
* c-common.c (decl_attributes): Use targetm.insert_attributes.
Don't use PRAGMA_INSERT_ATTRIBUTES.
* Makefile.in (c-common.o): Depend on $(TARGET_H).
* c-decl.c (start_decl, start_function): Don't call
SET_DEFAULT_DECL_ATTRIBUTES.
* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
declare.
* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
(c4x_check_attribute): Avoid modifying attribute list itself.
(c4x_set_default_attributes): Rename to c4x_insert_attributes.
Make static.
* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
declare.
* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
Make static.
* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
declare.
* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
(v850_set_default_decl_attr): Rename to v850_insert_attributes.
Adjust parameters. Make static.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (decl_attributes): Only take a single attributes
parameter.
* c-common.h (decl_attributes): Update prototype.
* c-decl.c (start_decl, start_function): Only take a single
attributes parameter. Update calls to decl_attributes.
(finish_struct, finish_enum): Update calls to decl_attributes.
(push_parm_decl): Expect unified list of attributes. Update call
to decl_attributes.
* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
notype_nested_function, component_declarator,
component_notype_declarator, label): Update calls to
decl_attributes.
(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
lists that are passed to push_parm_decl.
* c-tree.h (start_function, start_decl): Update prototypes.
* config/sh/sh-protos.h, config/sh/sh.c
(sh_pragma_insert_attributes): Only take a single attributes
parameter.
* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
* doc/tm.texi (INSERT_ATTRIBUTES): Update.
* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
build_module_descriptor, generate_static_references,
generate_strings, build_selector_translation_table,
generate_descriptor_table, generate_protocols,
generate_ivars_list, generate_dispatch_table,
generate_protocol_list, generate_category,
generate_shared_structures, really_start_method, add_objc_decls,
generate_classref_translation_entry): Update calls to start_decl
and start_function.
(build_tmp_function_decl, start_method_def): Unify attribute lists
that are passed to push_parm_decl.
2001-07-08 Neil Booth <neil@daikokuya.demon.co.uk>
* final.c (no_asm_to_stream): New.
(final_scan_insn): Use target structures for prologue ends
and epilogue starts.
* output.h (no_asm_to_stream): New.
* target-def.h (TARGET_ASM_FUNCTION_END_PROLOGUE,
TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): New.
(TARGET_ASM_OUT): Update.
* target.h (struct gcc_target): New members function_end_prologue
and function_begin_epilogue.
* config/1750/1750.h (ASM_OUTPUT_FUNNAM): Delete as unused.
* config/alpha/alpha-protos.h (output_end_prologue): Delete.
* config/alpha/alpha.c (output_end_prologue): Rename to
alpha_output_function_end_prologue. Use in target struct
and make static.
* config/alpha/alpha.h (FUNCTION_END_PROLOGUE): Delete.
* config/ia64/ia64-protos.h (ia64_output_end_prologue): Delete.
* config/ia64/ia64.c (ia64_output_end_prologue): Rename to
ia64_output_function_end_prologue. Use in target struct
and make static.
(ia64_function_prologue, ia64_funciton_epilogue): Rename
mistyped prototypes.
* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Delete.
* config/m88k/m88k-protos.h (m88k_end_prologue, m88k_begin_epilogue):
Delete.
* config/m88k/m88k.c (m88k_end_prologue, m88k_begin_epilogue): Rename
an use in target struct, make static.
* config/ia64/ia64.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE):
Delete.
2001-07-08 Richard Henderson <rth@redhat.com>
* stmt.c (emit_case_nodes): Convert modes properly in low+high test.
2001-07-08 Richard Henderson <rth@redhat.com>
* config/i386/i386.md: Remove constraints strings from define_split
and define_peephole2 patterns.
(eh_return_si, eh_return_di): Split eh_return_1 for modes.
(eh_return): Use them.
2001-07-08 Richard Henderson <rth@redhat.com>
* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
Document MD_FALLBACK_FRAME_STATE_FOR.
2001-07-07 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM
elimination.
* config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0.
2001-07-07 Nick Clifton <nickc@cambridge.redhat.com>
* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Append # to end
of the label inside NAME as opposed to just the end of NAME.
2001-07-07 Neil Booth <neil@daikokuya.demon.co.uk>
* config/alpha/alpha-protos.h (vms_valid_decl_attribute_p): Delete.
* config/alpha/alpha.c (alpha_init_machine_status,
alpha_mark_machine_status, alpha_free_machine_status): Delete.
(TARGET_VALID_DECL_ATTRIBUTE): Define for VMS.
(vms_valid_decl_attribute_p): Make static, conditionally compile.
* config/alpha/alpha.h (VALID_MACHINE_DECL_ATTRIBUTE): Delete.
2001-07-06 Stan Shebs <shebs@apple.com>
* target.h (targetm): Rename global from "target", so as not to
conflict with local variables.
* c-decl.c: Ditto.
* c-typeck.c: Ditto.
* final.c: Ditto.
* tree.c: Ditto.
* cp/decl.c: Ditto.
* cp/decl2.c: Ditto.
* cp/typeck.c: Ditto.
* 1750a/1750a.c: Ditto.
* a29k/a29k.c: Ditto.
* arc/arc.c: Ditto.
* arm/arm.c: Ditto.
* avr/avr.c: Ditto.
* clipper/clipper.c: Ditto.
* convex/convex.c: Ditto.
* d30v/d30v.c: Ditto.
* dsp16xx/dsp16xx.c: Ditto.
* elxsi/elxsi.c: Ditto.
* fr30/fr30.c: Ditto.
* h8300/h8300.c: Ditto.
* i370/i370.c: Ditto.
* i386/i386.c: Ditto.
* i860/i860.c: Ditto.
* i960/i960.c: Ditto.
* ia64/ia64.c: Ditto.
* m32r/m32r.c: Ditto.
* m68hc11/m68hc11.c: Ditto.
* m68k/m68k.c: Ditto.
* m88k/m88k.c: Ditto.
* mips/mips.c: Ditto.
* ns32k/ns32k.c: Ditto.
* pa/pa.c: Ditto.
* pdp11/pdp11.c: Ditto.
* romp/romp.c: Ditto.
* rs6000/rs6000.c: Ditto.
* sh/sh.c: Ditto.
* sparc/sparc.c: Ditto.
* vax/vax.c: Ditto.
* we32k/we32k.c: Ditto.
* doc/tm.texi: Update the manual to match.
2001-07-06 Richard Henderson <rth@redhat.com>
* except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of
DWARF2_UNWIND_INFO not just whether it is defined.
2001-07-06 Diego Novillo <dnovillo@redhat.com>
* combine.c (combine_simplify_rtx): Also recompute 'mode' if the
call to simplify_binary_operation returns a new pattern.
2001-07-06 Roman Lechtchinsky <rl@cs.tu-berlin.de>
* glimits.h (__SHRT_MAX__): New.
(SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX.
(SHRT_MAX): Define in terms of __SHRT_MAX__.
2001-07-06 Jan van Male <jan.vanmale@fenk.wau.nl>
* alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to
avoid warnings.
2001-07-06 Richard Henderson <rth@redhat.com>
* bitmap.c (bitmap_release_memory): Move adjacent to the
allocation functions.
(bitmap_first_set_bit, bitmap_last_set_bit): Streamline knowing
the implementation. Binary search for the set bit.
(bitmap_union_of_diff): Allocate the temporary on the stack
instead of using xmalloc.
2001-07-06 Richard Henderson <rth@redhat.com>
* genrecog.c (validate_pattern): Warn for constraints in
define_{expand,split,peephole2}. Remove strict_low_part
before looking up match_dup.
2001-07-06 DJ Delorie <dj@redhat.com>
* doc/gcc.texi (Makefile): Rename to be a more general purpose
chapter about various build hints and history. Add section
talking about the various types of native and cross builds.
2001-07-06 Neil Booth <neil@daikokuya.demon.co.uk>
* Makefile.in (final.o): Depend on target.h.
* final.c: Include target.h.
(default_function_pro_epilogue): New.
(final_start_function): Use target structure for function prologues.
(final_end_function): Use target structure for function epilogues.
* fold-const.c (real_hex_to_f): Constify s and p.
* output.h (default_function_pro_epilogue): New.
* real.h (real_hex_to_f): Update prototype.
* target-def.h (TARGET_ASM_FUNCTION_PROLOGUE,
TARGET_ASM_FUNCTION_EPILOGUE, TARGET_ASM_OUT): New.
(TARGET_INITIALIZER): Update.
* target.h (gcc_target): Add struct asm_out.
* doc/tm.texi: Update.
config:
Update each arch to use TARGET_ASM_FUNCTION_PROLOGUE and
TARGET_ASM_FUNCTION_EPILOGUE. Move macro code to functions
in cpu/cpu.c, or rename old functions consistently. Take
a HOST_WIDE INT not an int as the SIZE parameter. Remove now
redundant macros and prototypes. Make new functions static.
* 1750a/1750a.c: Similarly.
* 1750a/1750a.h: Similarly.
* a29k/a29k-protos.h: Similarly.
* a29k/a29k.c: Similarly.
* a29k/a29k.h: Similarly.
* arc/arc-protos.h: Similarly.
* arc/arc.c: Similarly.
* arc/arc.h: Similarly.
* arm/arm-protos.h: Similarly.
* arm/arm.c: Similarly.
* arm/arm.h: Similarly.
* avr/avr-protos.h: Similarly.
* avr/avr.c: Similarly.
* avr/avr.h: Similarly.
* clipper/clipper-protos.h: Similarly.
* clipper/clipper.c: Similarly.
* clipper/clipper.h: Similarly.
* convex/convex.c: Similarly.
* convex/convex.h: Similarly.
* d30v/d30v-protos.h: Similarly.
* d30v/d30v.c: Similarly.
* d30v/d30v.h: Similarly.
* d30v/d30v.md: Similarly.
* dsp16xx/dsp16xx-protos.h: Similarly.
* dsp16xx/dsp16xx.c: Similarly.
* dsp16xx/dsp16xx.h: Similarly.
* elxsi/elxsi.c: Similarly.
* elxsi/elxsi.h: Similarly.
* fr30/fr30.c: Similarly.
* fr30/fr30.md: Similarly.
* h8300/h8300-protos.h: Similarly.
* h8300/h8300.c: Similarly.
* h8300/h8300.h: Similarly.
* i370/i370-protos.h: Similarly.
* i370/i370.c: Similarly.
* i370/i370.h: Similarly.
* i386/i386.c: Similarly.
* i386/osf1elf.h: Similarly.
* i386/osfrose.h: Similarly.
* i860/i860-protos.h: Similarly.
* i860/i860.c: Similarly.
* i860/i860.h: Similarly.
* i960/i960-protos.h: Similarly.
* i960/i960.c: Similarly.
* i960/i960.h: Similarly.
* ia64/ia64-protos.h: Similarly.
* ia64/ia64.c: Similarly.
* ia64/ia64.h: Similarly.
* m32r/m32r-protos.h: Similarly.
* m32r/m32r.c: Similarly.
* m32r/m32r.h: Similarly.
* m68hc11/m68hc11-protos.h: Similarly.
* m68hc11/m68hc11.c: Similarly.
* m68hc11/m68hc11.h: Similarly.
* m68k/crds.h: Similarly.
* m68k/dpx2.h: Similarly.
* m68k/m68k-protos.h: Similarly.
* m68k/m68k.c: Similarly.
* m68k/m68k.h: Similarly.
* m68k/news.h: Similarly.
* m88k/m88k-protos.h: Similarly.
* m88k/m88k.c: Similarly.
* m88k/m88k.h: Similarly.
* mips/mips-protos.h: Similarly.
* mips/mips.c: Similarly.
* mips/mips.h: Similarly.
* ns32k/merlin.h: Similarly.
* ns32k/ns32k.c: Similarly.
* ns32k/ns32k.h: Similarly.
* ns32k/tek6000.h: Similarly.
* pa/pa-protos.h: Similarly.
* pa/pa.c: Similarly.
* pa/pa.h: Similarly.
* pdp11/2bsd.h: Similarly.
* pdp11/pdp11-protos.h: Similarly.
* pdp11/pdp11.c: Similarly.
* pdp11/pdp11.h: Similarly.
* romp/romp-protos.h: Similarly.
* romp/romp.c: Similarly.
* romp/romp.h: Similarly.
* rs6000/rs6000-protos.h: Similarly.
* rs6000/rs6000.c: Similarly.
* rs6000/rs6000.h: Similarly.
* rs6000/sysv4.h: Similarly.
* sh/sh-protos.h: Similarly.
* sh/sh.c: Similarly.
* sh/sh.h: Similarly.
* sparc/sparc-protos.h: Similarly.
* sparc/sparc.c: Similarly.
* sparc/sparc.h: Similarly.
* vax/vax.c: Similarly.
* vax/vax.h: Similarly.
* vax/vms.h: Similarly.
* we32k/we32k.c: Similarly.
* we32k/we32k.h: Similarly.
Fri Jul 6 11:47:59 2001 Jeffrey A Law (law@cygnus.com)
* basic-block.h (first_insn_after_basic_block_note): Declare.
* flow.c (first_insn_after_basic_block_note): Define. Moved
from...
* ssa.c (first_insn_after_basic_block_note): Remove.
* ssa-dce.c (find_inherently_necessary): Consider BARRIERs
necessary.
(ssa_eliminate_dead_code): Properly update the CFG and PHI
nodes when we find a dead conditional branch. Insert BARRIERs
after any blocks with no successors, but which do not have
any BARRIERs.
2001-07-06 Zack Weinberg <zackw@stanford.edu>
* varray.c (varray_check_failed): Use internal_error.
2001-07-05 Andrew Haley <aph@redhat.com>
* Makefile.in (LIB2_DIVMOD_FUNCS): New.
(LIB2FUNCS): Move divmod functions to LIB2_DIVMOD_FUNCS.
* mklibgcc.in: Compile LIB2_DIVMOD_FUNCS.
2001-07-02 Jason Merrill <jason_merrill@redhat.com>
* dwarf2out.c (mem_loc_descriptor): Only look through a constant pool
reference if the target constant is also a SYMBOL_REF.
2001-07-05 Eric Christopher <echristo@redhat.com>
* config/mips/mips.h (MASK_MIPS3900): Remove.
(MASK_MIPS16,MASK_NO_CHECK_ZERO_DIV,MASK_CHECK_RANGE_DIV,
MASK_UNINIT_CONST_IN_RODATA): Change for 3900 mask removal.
(TARGET_MIPS3900): Change to use mips_arch.
(TARGET_MIPS4000): New.
(TARGET_MIPS4100): New.
(TARGET_MIPS4300): New.
(TARGET_SWITCHES): Change 3900 and 4650 options to NULL.
(SUBTARGET_TARGET_OPTIONS): Add -march. Change help text
for -mipsX.
(GENERATE_BRANCHLIKELY): Move TARGET_MIPS3900.
(ISA_HAS_BRANCHLIKELY): To here.
(CC1_CPU_SPEC): New.
(CC1_SPEC): Use here. Remove 4650 and 3900 options.
(mips_arch_string): Declare.
(mips_arch): Declare.
(TARGET_OPTIONS): Add -march and -mtune.
* config/mips/mips.c (mips_arch_string): New.
(mips_arch): New.
(override_options): Handle -march for codegen and -mtune
for scheduling. Use mips_arch. Move tx39 target default here.
(mips_parse_cpu): Move error message to override_options.
* config/mips/r3900.h (TARGET_DEFAULT): Remove.
* config/mips/mips.md: Use TARGET_MIPS4000 and TARGET_MIPS4300.
* doc/invoke.texi (Option Summary): Add -march and -mtune entries.
(MIPS Options): Ditto. Change mcpu entry to historical text.
2001-07-05 H.J. Lu (hjl@gnu.org)
* config/mips/mips.c (mips_parse_cpu): New function to parse
-march=*/-mcpu=*.
2001-07-05 Jim Wilson <wilson@redhat.com>
* config/ia64/lib1funcs.asm: Revert 2001-07-02 change.
* config/ia64/t-ia64: Likewise.
(LIB1ASMFUNCS): Update comment.
2001-07-05 David Edelsohn <edelsohn@gnu.org>
* doc/install.texi (Install GCC: Binaries): Fix typo.
2001-07-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
reference using the stack pointer, adjust it since we push Y
temporarily.
("*ashrsi3"): Likewise.
("*lshrsi3"): Likewise.
2001-07-05 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
when -fomit-frame-pointer is used.
2001-07-05 Jeffrey Oldham <oldham@codesourcery.com>
* flow.c: Reverse Jan Hubicka's patch of 02July2001.
(try_redirect_by_replacing_jump): Reverse updating properly the
count and frequency information. Reverse removing cc0 setter.
(forwarder_block_p): Reverse fixing for fallthru blocks.
2001-07-05 DJ Delorie <dj@redhat.com>
* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
(translate_options): If the above is defined, use it to map
given options to new options.
* doc/tm.texi: Document it.
2001-07-05 Brad Lucier <lucier@math.purdue.edu>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/invoke.texi (Optimize Options): Document that -fgcse may
cause programs using computed gotos to run more slowly.
2001-07-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific): Markup, spelling and typo fixes.
Fixed sorting.
Consistently require binutils 2.11.2, not prereleases.
(Specific, decstation-*): Canonicalize as mips-dec-*.
(Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement,
always necessary.
(Specific, m68k-altos): Removed reference to README.altos, deleted.
(Specific, mips-*): Reword MIPS C compiler requirements.
(Specific, powerpc*-*-*): New, mention --with-cpu once.
(Specific, sunv5): Removed, obsolete.
2001-07-05 Nathan Sidwell <nathan@codesourcery.com>
* dwarf2out.c (output_loc_list): Use an all ones mask for
.text asm output and don't rely on long long
literals. Reformat some long lines.
2001-07-05 Andreas Jaeger <aj@suse.de>
* doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL
section.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* dwarf2out.c (dwarf2out_define): Update comment.
(dwarf2out_undef): Ditto.
(dwarf2out_start_source_file): Ditto.
(dwarf2out_end_source_file): Ditto.
(dwarf2out_finish): Output DW_MACINFO_end_file for primary file,
since we never call the start/end debug hook for the primary file.
2001-07-04 Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.c (get_shift_alg): Remove an extra operand
from shll.
2001-07-04 Nathan Sidwell <nathan@codesourcery.com>
* cppinit.c (remove_dup_dirs): Inform if a system include
directory is being reordered.
* doc/invoke.texi (Directory Options): GCC warns if you hide a
system include.
* doc/cpp.texi (Search Paths): Likewise.
* doc/gcc.texi (Interoperation): Remove information about
-I/usr/include.
2001-07-04 Nathan Sidwell <nathan@codesourcery.com>
* varray.h (VARRAY_TOP_GENERIC_PTR): Remove spurious parameter.
(VARRAY_TOP_CHAR_PTR): Likewise.
2001-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.c (process_command): Don't assign elements of a const char*.
Wed Jul 4 13:40:02 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (change_address): Don't abort if invalid address while
reload is in progress.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* c-lex.c (cb_file_change): Pass line number to
debug_start_source_file.
(cb_undefine): Pass correct line number to debug_undef.
* toplev.c (debug_start_source_file): Add line number to
parameters. Pass it along to dwarf2out_start_source_file.
(decode_g_option): Stop resetting debug level back to normal when
we change debug formats, unless the current level is
none. (Before, -g3 -gdwarf-2 would use debug level 2, rather than
3).
* toplev.h (debug_start_source_file): Add line number to
parameters.
* dwarf2out.h (dwarf2out_start_source_file): Add line number to
parameters.
* dwarf2out.c (dwarf2out_start_source_file): Add line number to
parameters.
Output debug_macinfo data for starting file if requested.
(dwarf2out_end_source_file): Output debug_macinfo data for ending
file if requested.
(dwarf2out_define): Output debug_macinfo data for defining a macro
if requested.
(dwarf2out_undef): Output debug_macinfo data for undefining a
macro if requested.
(DEBUG_MACINFO_SECTION): New. DWARF2 macro info section name.
(DEBUG_MACINFO_SECTION_LABEL): New. DWARF2 macro info section label.
(macinfo_section_label): New. DWARF2 macro info section label.
(dwarf2out_init): If we want macro info, output the start label
for the section.
(dwarf2out_finish): If we want macro info, add a DW_AT_macro_info
attribute to the compilation unit die pointing to the macro info.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* dwarf2out.c (new_loc_list): Move to inside #ifdef
DWARF2_DEBUGGING_INFO.
(add_loc_descr_to_loc_list): Ditto.
(output_loc_list): Ditto.
Also, fix thinko in curr not being initialized.
(gen_internal_sym): Ditto.
Wed Jul 4 13:40:02 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (replace_equiv_address): New function.
* expr.h (replace_equiv_address): New declaration.
* explow.c (validize_mem): Call it instead of change_address and
also call if -fforce-addr and address is constant.
* expr.c: Replace more calls to change_address with adjust_address
and/or replace_equiv_address or to validize_mem.
* function.c, regmove.c, config/alpha/alpha.c: Likewise.
* config/arm/arm.md, config/clipper/clipper.md: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i370/i370.md, config/i860/i860.md: Likewise.
* config/i960/i960.md, config/mips/mips.c: Likewise.
* config/mips/mips.md, config/pa/pa.md: Likewise.
* config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise.
* config/rs6000/rs6000.md, config/sh/sh.md: Likewise.
2001-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA.
* bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a
function.
2001-07-04 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/include: New directory.
* doc/fdl.texi: Move to doc/include/fdl.texi.
* doc/texinfo.tex: Move to doc/include/texinfo.tex.
* doc/include/funding.texi, doc/include/gpl.texi: New files.
* doc/gcc.texi: Use funding.texi and gpl.texi.
* Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info,
$(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi):
Update dependencies and use -I $(docdir)/include.
2001-07-04 Anthony Green <green@redhat.com>
* config/v850/t-v850 (v850-c.o): Add missing dependencies.
2001-07-04 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (sparc64-*-*): Remove garbage.
Wed Jul 4 09:07:44 2001 Jan van Male <jan.vanmale@fenk.wau.nl>
* i386.c (ix86_expand_builtin, case IX86_BUILTIN_SETPS):
Fix typo in last change to use adjust_address.
2001-07-04 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (Specific): Update information for *-*-solaris*.
Tue Jul 3 22:33:15 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide): Reinitialize Y for restart.
2001-07-03 Stan Shebs <shebs@apple.com>
* config/darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove
case for flag_no_mach_text_sections.
(EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION.
* config/darwin.c (flag_no_mach_text_sections): Remove.
* config/darwin-protos.h (darwin_init_pragma): Remove decl.
Tue Jul 3 15:35:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide, case PLUS): Call find_constant_term
and avoid checking for constant as first operand.
* recog.c (find_constant_term_loc): No longer static.
(adj_offettable_operand): Delete.
* rtl.h (adj_offsettable_operand): Delete declaration.
(find_constant_term): Add declaration.
* caller-save.c: Replace calls to adj_offsettable_operand with calls
to adjust_address.
* config/arm/arm.c, config/c4x/c4x.c: Likewise.
* config/clipper/clipper.md, config/h8300/h8300.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/i860/i860.c, config/i960/i960.c: Likewise.
* config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise.
* config/m68k/m68k.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.md, config/mcore/mcore.c: Likewise.
* config/mips/mips.c, config/mips/mips.md: Likewise.
* config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise.
* config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise.
* config/pa/pa.c, config/pdp11/pdp11.c: Likewise.
* config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise.
* config/vax/vax.md, config/ns32k/ns32k.c: Likewise.
* config/ns32k/ns32k.md: Likewise.
2001-07-03 Zack Weinberg <zackw@stanford.edu>
* rtl.c (copy_rtx): Handle 'T' format letter.
* gensupport.c (collect_insn_data): Likewise.
* print-rtl.c (print_rtx): Print 'T' slots like 's'.
2001-07-03 Nick Clifton <nickc@cambridge.redhat.com>
* doc/invoke.texi (Directory Options): Specifiy range for <N> in
-B option. Use 'dir' not 'foo' as example directory name.
2001-07-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/cppinternals.texi: Improve formatting and logical markup.
2001-07-03 Andreas Jaeger <aj@suse.de>
* Makefile.in (insn-recog.o): Add dependency on reload.h.
* genrecog.c (write_header): Include reload.h for prototypes in
insn-recog.c.
2001-07-03 Neil Booth <neil@daikokuya.demon.co.uk>
config:
* i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE,
VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
* i386/i386-protos.h (i386_pe_valid_decl_attribute_p,
i386_pe_valid_type_attribute_p): Add.
* i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets.
* i386/winnt.c (i386_valid_decl_attribute_p): Return directly.
Mon Jul 2 21:52:19 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide, case LO_SUM): New case.
(plus_constant_for_output_wide): Delete.
* rtl.h (plus_constant_for_output): Delete.
* alias.c (canon_rtx, init_alias_analysis): Call plus_constant
instead of plus_constant_for_output.
* recog.c (offsettable_address_p, adj_offsettable_operand): Likewise.
* config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise.
* config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise.
* config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise.
* config/sparc/sparc.md: Likewise.
Convert some change_address calls to adjust_address.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi,
doc/rtl.texi, doc/tm.texi: Improve formatting. Improve
documentation of -std and -Wwrite-strings.
2001-07-02 Geoffrey Keating <geoffk@redhat.com>
* cse.c (canon_hash): Don't register registers in very small
register classes, as extending their lifetime might cause
reload to fail.
Mon Jul 2 23:14:00 CEST 2001 Jan Hubicka <jh@suse.cz>
* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.
* flow.c (forwarder_block_p): Fix for fallthru blocks.
(try_redirect_by_replacing_jump): Update properly the count
and frequency information.
Mon Jul 2 14:20:13 2001 Jeffrey A Law (law@cygnus.com)
* toplev.c (dump_file_index): Move SSA dumps just after first
jump dump.
(dump_file): Corresponding changes.
(rest_of_compilation): Move SSA path to just after the first
jump pass.
* doc/gcc.texi (Passes): Update due to movement of SSA path.
* doc/invoke.texi: Update dump file #s as they were completely
out of date with reality.
2001-07-02 Geoffrey Keating <geoffk@redhat.com>
* doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE.
* expr.c (emit_move_insn_1): Deal with non-default
STACK_PUSH_CODE.
* expr.c (emit_single_push_insn): Fix warning.
2001-07-02 Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
* expr.c (emit_move_insn_1): Avoid modifying
cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined.
Mon Jul 2 15:33:31 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (adjust_address): New function.
* expr.h (adjust_address): Add declaration.
* builtins.c: Replace some calls to change_address with calls to it
or to validize_mem.
* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
* config/arm/arm.c, config/convex/convex.c: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.c, config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
* config/sh/sh.c, config/sparc/sparc.md: Likewise.
2001-07-02 Jim Wilson <wilson@redhat.com>
* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment.
2001-07-02 Steve Ellcey <sje@cup.hp.com>
* config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore.
* config/ia64/lib1funcs.asm: Change macro names to match t-ia64.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* cppinit.c (lang_defaults): New table.
(set_lang): Just read from lang_defaults into the live options
structure.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* Makefile.in (doc): Depend on $(GENERATED_MANPAGES).
* doc/.cvsignore: Add gcc.1, cpp.1, gcov.1.
* doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed.
2001-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi: Various spelling and markup fixes.
(Installing GCC): Component specific installation instructions are
gone.
Fix reference.
Warn about removing old install dir in the presence of shared libs.
(Configuration): Invoke with options target to match configure
--help.
Consistently refer to gas, gld pathnames.
Invert --enable-multilib documentation.
Remove references to old compiler versions.
Mon Jul 2 12:50:51 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.
2001-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5
section.
(Specific, mips*-sgi-irix5): Note IDO download.
Reworded MIPS C hints.
Use GNU as instead of GAS.
Markup fixes.
Removed SGI Freeware reference, IRIX 6 only.
(Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete.
Note N64 library requirement/workaround.
Update O32 hints.
Complete list of structure passing bug victims.
2001-07-02 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi: Remove CVS Id.
2001-07-02 Andreas Jaeger <aj@suse.de>
* ssa-dce.c (note_inherently_necessary_set): Add unused attribute.
(find_inherently_necessary): Remove unused variable.
2001-07-02 Nathan Sidwell <nathan@codesourcery.com>
* c-common.h (TDI_inlined): New ast dump phase.
(dump_flag_name): New function.
* c-dump.c (dump_files): Add inlined phase.
(dump_flag_name): Define.
* doc/invoke.texi (-fdump-ast-inlined): Document.
Mon Jul 2 06:29:36 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stor-layout.c (layout_decl): Revert change to handling of alignment
in packed types.
Sun Jul 1 11:53:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* c-common.c (decl_attributes, case A_MODE): Don't call layout_decl
for FIELD_DECL.
2001-07-01 Geoffrey Keating <geoffk@redhat.com>
* doc/tm.texi (FUNCTION_ARG): Document that the last call
is special.
2001-07-01 Nathan Sidwell <nathan@codesourcery.com>
* tlink.c (recompile_files): Remove COMPILER_PATH and
LIBRARY_PATH from the environment.
2001-07-01 Zack Weinberg <zackw@stanford.edu>
* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT,
RID_LAST_PQ. Move RID_FIRST_PQ down with the other FIRST/LAST
enumerators.
(OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros.
* c-parse.in (OBJC_STRING): Kill.
(objc_string): Decompose to [objc_string] '@' STRING.
(reswords): Take the leading '@' off all the Objective C keywords.
(objc_rid_sans_at): Kill.
(init_reswords): Don't initialize it.
(yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD.
(_yylex): Kill reconsider label. Look ahead one token after
an '@'; if we get an identifier, check whether it's an
Objective C @-keyword. If so, return the keyword. Otherwise,
put back the token and return the '@' as a terminal.
* cpplib.c (lex_macro_node): Remove unnecessary check for
leading '@' on identifier. Clarify control flow and commentary.
Sun Jul 1 11:53:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* cse.c (new_label_ref): Variable deleted.
(insert): Remove set of new_label_ref.
(check_for_label_ref): New function.
(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.
See ChangeLog.5 for earlier changes.
From-SVN: r43861
2001-07-09 13:20:51 +02:00
|
|
|
|
|
2001-10-18 23:34:14 +02:00
|
|
|
|
/* Return a memory reference like MEMREF, but whose address is changed by
|
|
|
|
|
adding OFFSET, an RTX, to it. POW2 is the highest power of two factor
|
|
|
|
|
known to be in OFFSET (possibly 1). */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx offset_address (rtx, rtx, unsigned HOST_WIDE_INT);
|
2001-10-18 23:34:14 +02:00
|
|
|
|
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
/* Definitions from emit-rtl.c */
|
|
|
|
|
#include "emit-rtl.h"
|
[multiple changes]
Mon Jul 9 06:41:07 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (adjust_address_nv, replace_equiv_address_nv): New fcns.
(operand_subword): Use them.
(change_address_1): Renamed from change_address; new arg VALIDATE.
* expr.h: Reflect above changes; change_address now macro.
* alias.c (canon_rtx): Use replace_equiv_address_nv instead of
making MEM.
* cselib.c (add_mem_for_addr): Likewise.
* expr.c (protect_from_queue, emit_move_insn_1): Likewise.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (eliminate_regs): Likewise.
* simplify-rtx.c (simplify_replace_rtx): Likewise.
* caller-save.c (setup_save_areas): Use adjust_address_nv instead of
adjust_addess.
* combine.c (make_extraction, simplify_shift_const): Likewise.
(gen_lowpart_for_combine): Likewise.
* cse.c (gen_lowpart_if_possible): Likewise.
* function.c (fixup_var_refs_1, purge_addressof_1): Likewise.
* expr.c (expand_expr, case COMPONENT_REF): Likewise.
* optabs.c (gen_move_insn): Likewise.
* reload1.c (alter_reg): Likewise.
* simplify-rtx.c (simplify_subreg): Likewise.
* stmt.c (expand_anon_union_decl): Likewise.
* recog.c (validate_replace_rtx_1): Likewise.
(expr.h): Include.
* Makefile.in (recog.o): Add $(EXPR_H).
* explow.c (stabilize): Call replace_equiv_address.
* expr.c (move_by_pieces_1, store_by_pieces_2): Likewise.
* final.c (alter_subreg): OFFSET is HOST_WIDE_INT.
2001-07-09 Bo Thorsen <bo@suse.co.uk>
* config/i386/unix.h (ASM_OUTPUT_MI_THUNK): Fix x86-64 vtable support.
2001-07-09 Neil Booth <neil@daikokuya.demon.co.uk>
* final.c (output_addr_const): Use target opening and
closing parentheses.
* target-def.h: Define TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN
defaults, add to TARGET_ASM_OUT.
* target.h (struct gcc_target): Add open_paren and close_paren.
* doc/md.texi: Update.
* doc/tm.texi: Document TARGET_ASM_FUNCTION_END_PROLOGUE,
TARGET_ASM_FUNCTION_BEGIN_EPILOGUE, TARGET_ASM_OPEN_PAREN and
TARGET_ASM_CLOSE_PAREN.
* config/i386/i386.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
Override.
* config/pdp11/pdp11.c (TARGET_ASM_OPEN_PAREN, TARGET_ASM_CLOSE_PAREN):
Override.
* config/1750a/1750a.h (ASM_OPEN_PAREN, ASM_CLOSE_PAREN): Remove.
* config/a29k/a29k.h: Similarly.
* config/alpha/alpha.h: Similarly.
* config/arc/arc.h: Similarly.
* config/arm/aof.h: Similarly.
* config/arm/aout.h: Similarly.
* config/avr/avr.h: Similarly.
* config/c4x/c4x.h: Similarly.
* config/clipper/clipper.h: Similarly.
* config/convex/convex.h: Similarly.
* config/d30v/d30v.h: Similarly.
* config/dsp16xx/dsp16xx.h: Similarly.
* config/elxsi/elxsi.h: Similarly.
* config/fr30/fr30.h: Similarly.
* config/h8300/h8300.h: Similarly.
* config/i370/i370.h: Similarly.
* config/i386/i386.h: Similarly.
* config/i860/i860.h: Similarly.
* config/i960/i960.h: Similarly.
* config/ia64/ia64.h: Similarly.
* config/m32r/m32r.h: Similarly.
* config/m68hc11/m68hc11.h: Similarly.
* config/m68k/m68k.h: Similarly.
* config/m88k/m88k.h: Similarly.
* config/mcore/mcore.h: Similarly.
* config/mips/mips.h: Similarly.
* config/mn10200/mn10200.h: Similarly.
* config/mn10300/mn10300.h: Similarly.
* config/ns32k/ns32k.h: Similarly.
* config/pa/pa.h: Similarly.
* config/pdp11/pdp11.h: Similarly.
* config/pj/pj.h: Similarly.
* config/romp/romp.h: Similarly.
* config/rs6000/rs6000.h: Similarly.
* config/sh/sh.h: Similarly.
* config/sparc/sparc.h: Similarly.
* config/v850/v850.h: Similarly.
* config/vax/vax.h: Similarly.
* config/we32k/we32k.h: Similarly.
2001-07-09 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/c-tree.texi: Document representation of attributes.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/tm.texi: Update some places for the rename of target to
targetm. Fix typo.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* target.h (struct gcc_target): Add insert_attributes.
* target-def.h (TARGET_INSERT_ATTRIBUTES): Define.
(TARGET_INITIALIZER): Update.
* tree.c, tree.h (default_insert_attributes): New function.
Update comments on other default functions to refer to targetm,
not target.
* doc/tm.texi (INSERT_ATTRIBUTES): Update to document
TARGET_INSERT_ATTRIBUTES.
(SET_DEFAULT_DECL_ATTRIBUTES): Remove.
* c-common.c (decl_attributes): Use targetm.insert_attributes.
Don't use PRAGMA_INSERT_ATTRIBUTES.
* Makefile.in (c-common.o): Depend on $(TARGET_H).
* c-decl.c (start_decl, start_function): Don't call
SET_DEFAULT_DECL_ATTRIBUTES.
* config/c4x/c4x.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
* config/c4x/c4x-protos.h (c4x_set_default_attributes): Don't
declare.
* config/c4x/c4x.c (TARGET_INSERT_ATTRIBUTES): Define.
(c4x_check_attribute): Avoid modifying attribute list itself.
(c4x_set_default_attributes): Rename to c4x_insert_attributes.
Make static.
* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Don't define.
* config/sh/sh-protos.h (sh_pragma_insert_attributes): Don't
declare.
* config/sh/sh.c (TARGET_INSERT_ATTRIBUTES): Define.
(sh_pragma_insert_attributes): Rename to sh_insert_attributes.
Make static.
* config/v850/v850.h (SET_DEFAULT_DECL_ATTRIBUTES): Don't define.
* config/v850/v850-protos.h (v850_set_default_decl_attr): Don't
declare.
* config/v850/v850.c (TARGET_INSERT_ATTRIBUTES): Define.
(v850_set_default_decl_attr): Rename to v850_insert_attributes.
Adjust parameters. Make static.
2001-07-08 Joseph S. Myers <jsm28@cam.ac.uk>
* c-common.c (decl_attributes): Only take a single attributes
parameter.
* c-common.h (decl_attributes): Update prototype.
* c-decl.c (start_decl, start_function): Only take a single
attributes parameter. Update calls to decl_attributes.
(finish_struct, finish_enum): Update calls to decl_attributes.
(push_parm_decl): Expect unified list of attributes. Update call
to decl_attributes.
* c-parse.in (fndef, initdcl, notype_initdcl, nested_function,
notype_nested_function, component_declarator,
component_notype_declarator, label): Update calls to
decl_attributes.
(absdcl_maybe_attribute, parm, firstparm, myparm): Unify attribute
lists that are passed to push_parm_decl.
* c-tree.h (start_function, start_decl): Update prototypes.
* config/sh/sh-protos.h, config/sh/sh.c
(sh_pragma_insert_attributes): Only take a single attributes
parameter.
* config/sh/sh.h (PRAGMA_INSERT_ATTRIBUTES): Likewise.
* doc/tm.texi (INSERT_ATTRIBUTES): Update.
* objc/objc-act.c (define_decl, generate_objc_symtab_decl,
build_module_descriptor, generate_static_references,
generate_strings, build_selector_translation_table,
generate_descriptor_table, generate_protocols,
generate_ivars_list, generate_dispatch_table,
generate_protocol_list, generate_category,
generate_shared_structures, really_start_method, add_objc_decls,
generate_classref_translation_entry): Update calls to start_decl
and start_function.
(build_tmp_function_decl, start_method_def): Unify attribute lists
that are passed to push_parm_decl.
2001-07-08 Neil Booth <neil@daikokuya.demon.co.uk>
* final.c (no_asm_to_stream): New.
(final_scan_insn): Use target structures for prologue ends
and epilogue starts.
* output.h (no_asm_to_stream): New.
* target-def.h (TARGET_ASM_FUNCTION_END_PROLOGUE,
TARGET_ASM_FUNCTION_BEGIN_EPILOGUE): New.
(TARGET_ASM_OUT): Update.
* target.h (struct gcc_target): New members function_end_prologue
and function_begin_epilogue.
* config/1750/1750.h (ASM_OUTPUT_FUNNAM): Delete as unused.
* config/alpha/alpha-protos.h (output_end_prologue): Delete.
* config/alpha/alpha.c (output_end_prologue): Rename to
alpha_output_function_end_prologue. Use in target struct
and make static.
* config/alpha/alpha.h (FUNCTION_END_PROLOGUE): Delete.
* config/ia64/ia64-protos.h (ia64_output_end_prologue): Delete.
* config/ia64/ia64.c (ia64_output_end_prologue): Rename to
ia64_output_function_end_prologue. Use in target struct
and make static.
(ia64_function_prologue, ia64_funciton_epilogue): Rename
mistyped prototypes.
* config/ia64/ia64.h (FUNCTION_END_PROLOGUE): Delete.
* config/m88k/m88k-protos.h (m88k_end_prologue, m88k_begin_epilogue):
Delete.
* config/m88k/m88k.c (m88k_end_prologue, m88k_begin_epilogue): Rename
an use in target struct, make static.
* config/ia64/ia64.h (FUNCTION_END_PROLOGUE, FUNCTION_BEGIN_EPILOGUE):
Delete.
2001-07-08 Richard Henderson <rth@redhat.com>
* stmt.c (emit_case_nodes): Convert modes properly in low+high test.
2001-07-08 Richard Henderson <rth@redhat.com>
* config/i386/i386.md: Remove constraints strings from define_split
and define_peephole2 patterns.
(eh_return_si, eh_return_di): Split eh_return_1 for modes.
(eh_return): Use them.
2001-07-08 Richard Henderson <rth@redhat.com>
* doc/tm.texi (Exception Handling): New subnode of Stack and Calling.
Document MD_FALLBACK_FRAME_STATE_FOR.
2001-07-07 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.c (m68hc11_initial_elimination_offset):
Take into account m68hc11_sp_correction for FRAME_POINTER_REGNUM
elimination.
* config/m68hc11/m68hc11.h (STARTING_FRAME_OFFSET): Use 0.
2001-07-07 Nick Clifton <nickc@cambridge.redhat.com>
* config/ia64/sysv4.h (ASM_OUTPUT_LABELREF): Append # to end
of the label inside NAME as opposed to just the end of NAME.
2001-07-07 Neil Booth <neil@daikokuya.demon.co.uk>
* config/alpha/alpha-protos.h (vms_valid_decl_attribute_p): Delete.
* config/alpha/alpha.c (alpha_init_machine_status,
alpha_mark_machine_status, alpha_free_machine_status): Delete.
(TARGET_VALID_DECL_ATTRIBUTE): Define for VMS.
(vms_valid_decl_attribute_p): Make static, conditionally compile.
* config/alpha/alpha.h (VALID_MACHINE_DECL_ATTRIBUTE): Delete.
2001-07-06 Stan Shebs <shebs@apple.com>
* target.h (targetm): Rename global from "target", so as not to
conflict with local variables.
* c-decl.c: Ditto.
* c-typeck.c: Ditto.
* final.c: Ditto.
* tree.c: Ditto.
* cp/decl.c: Ditto.
* cp/decl2.c: Ditto.
* cp/typeck.c: Ditto.
* 1750a/1750a.c: Ditto.
* a29k/a29k.c: Ditto.
* arc/arc.c: Ditto.
* arm/arm.c: Ditto.
* avr/avr.c: Ditto.
* clipper/clipper.c: Ditto.
* convex/convex.c: Ditto.
* d30v/d30v.c: Ditto.
* dsp16xx/dsp16xx.c: Ditto.
* elxsi/elxsi.c: Ditto.
* fr30/fr30.c: Ditto.
* h8300/h8300.c: Ditto.
* i370/i370.c: Ditto.
* i386/i386.c: Ditto.
* i860/i860.c: Ditto.
* i960/i960.c: Ditto.
* ia64/ia64.c: Ditto.
* m32r/m32r.c: Ditto.
* m68hc11/m68hc11.c: Ditto.
* m68k/m68k.c: Ditto.
* m88k/m88k.c: Ditto.
* mips/mips.c: Ditto.
* ns32k/ns32k.c: Ditto.
* pa/pa.c: Ditto.
* pdp11/pdp11.c: Ditto.
* romp/romp.c: Ditto.
* rs6000/rs6000.c: Ditto.
* sh/sh.c: Ditto.
* sparc/sparc.c: Ditto.
* vax/vax.c: Ditto.
* we32k/we32k.c: Ditto.
* doc/tm.texi: Update the manual to match.
2001-07-06 Richard Henderson <rth@redhat.com>
* except.h (MUST_USE_SJLJ_EXCEPTIONS): Examine the value of
DWARF2_UNWIND_INFO not just whether it is defined.
2001-07-06 Diego Novillo <dnovillo@redhat.com>
* combine.c (combine_simplify_rtx): Also recompute 'mode' if the
call to simplify_binary_operation returns a new pattern.
2001-07-06 Roman Lechtchinsky <rl@cs.tu-berlin.de>
* glimits.h (__SHRT_MAX__): New.
(SHRT_MIN, USHRT_MAX): Define in terms of SHRT_MAX.
(SHRT_MAX): Define in terms of __SHRT_MAX__.
2001-07-06 Jan van Male <jan.vanmale@fenk.wau.nl>
* alias.c (base_alias_check): Cast GET_MODE_UNIT_SIZE to int to
avoid warnings.
2001-07-06 Richard Henderson <rth@redhat.com>
* bitmap.c (bitmap_release_memory): Move adjacent to the
allocation functions.
(bitmap_first_set_bit, bitmap_last_set_bit): Streamline knowing
the implementation. Binary search for the set bit.
(bitmap_union_of_diff): Allocate the temporary on the stack
instead of using xmalloc.
2001-07-06 Richard Henderson <rth@redhat.com>
* genrecog.c (validate_pattern): Warn for constraints in
define_{expand,split,peephole2}. Remove strict_low_part
before looking up match_dup.
2001-07-06 DJ Delorie <dj@redhat.com>
* doc/gcc.texi (Makefile): Rename to be a more general purpose
chapter about various build hints and history. Add section
talking about the various types of native and cross builds.
2001-07-06 Neil Booth <neil@daikokuya.demon.co.uk>
* Makefile.in (final.o): Depend on target.h.
* final.c: Include target.h.
(default_function_pro_epilogue): New.
(final_start_function): Use target structure for function prologues.
(final_end_function): Use target structure for function epilogues.
* fold-const.c (real_hex_to_f): Constify s and p.
* output.h (default_function_pro_epilogue): New.
* real.h (real_hex_to_f): Update prototype.
* target-def.h (TARGET_ASM_FUNCTION_PROLOGUE,
TARGET_ASM_FUNCTION_EPILOGUE, TARGET_ASM_OUT): New.
(TARGET_INITIALIZER): Update.
* target.h (gcc_target): Add struct asm_out.
* doc/tm.texi: Update.
config:
Update each arch to use TARGET_ASM_FUNCTION_PROLOGUE and
TARGET_ASM_FUNCTION_EPILOGUE. Move macro code to functions
in cpu/cpu.c, or rename old functions consistently. Take
a HOST_WIDE INT not an int as the SIZE parameter. Remove now
redundant macros and prototypes. Make new functions static.
* 1750a/1750a.c: Similarly.
* 1750a/1750a.h: Similarly.
* a29k/a29k-protos.h: Similarly.
* a29k/a29k.c: Similarly.
* a29k/a29k.h: Similarly.
* arc/arc-protos.h: Similarly.
* arc/arc.c: Similarly.
* arc/arc.h: Similarly.
* arm/arm-protos.h: Similarly.
* arm/arm.c: Similarly.
* arm/arm.h: Similarly.
* avr/avr-protos.h: Similarly.
* avr/avr.c: Similarly.
* avr/avr.h: Similarly.
* clipper/clipper-protos.h: Similarly.
* clipper/clipper.c: Similarly.
* clipper/clipper.h: Similarly.
* convex/convex.c: Similarly.
* convex/convex.h: Similarly.
* d30v/d30v-protos.h: Similarly.
* d30v/d30v.c: Similarly.
* d30v/d30v.h: Similarly.
* d30v/d30v.md: Similarly.
* dsp16xx/dsp16xx-protos.h: Similarly.
* dsp16xx/dsp16xx.c: Similarly.
* dsp16xx/dsp16xx.h: Similarly.
* elxsi/elxsi.c: Similarly.
* elxsi/elxsi.h: Similarly.
* fr30/fr30.c: Similarly.
* fr30/fr30.md: Similarly.
* h8300/h8300-protos.h: Similarly.
* h8300/h8300.c: Similarly.
* h8300/h8300.h: Similarly.
* i370/i370-protos.h: Similarly.
* i370/i370.c: Similarly.
* i370/i370.h: Similarly.
* i386/i386.c: Similarly.
* i386/osf1elf.h: Similarly.
* i386/osfrose.h: Similarly.
* i860/i860-protos.h: Similarly.
* i860/i860.c: Similarly.
* i860/i860.h: Similarly.
* i960/i960-protos.h: Similarly.
* i960/i960.c: Similarly.
* i960/i960.h: Similarly.
* ia64/ia64-protos.h: Similarly.
* ia64/ia64.c: Similarly.
* ia64/ia64.h: Similarly.
* m32r/m32r-protos.h: Similarly.
* m32r/m32r.c: Similarly.
* m32r/m32r.h: Similarly.
* m68hc11/m68hc11-protos.h: Similarly.
* m68hc11/m68hc11.c: Similarly.
* m68hc11/m68hc11.h: Similarly.
* m68k/crds.h: Similarly.
* m68k/dpx2.h: Similarly.
* m68k/m68k-protos.h: Similarly.
* m68k/m68k.c: Similarly.
* m68k/m68k.h: Similarly.
* m68k/news.h: Similarly.
* m88k/m88k-protos.h: Similarly.
* m88k/m88k.c: Similarly.
* m88k/m88k.h: Similarly.
* mips/mips-protos.h: Similarly.
* mips/mips.c: Similarly.
* mips/mips.h: Similarly.
* ns32k/merlin.h: Similarly.
* ns32k/ns32k.c: Similarly.
* ns32k/ns32k.h: Similarly.
* ns32k/tek6000.h: Similarly.
* pa/pa-protos.h: Similarly.
* pa/pa.c: Similarly.
* pa/pa.h: Similarly.
* pdp11/2bsd.h: Similarly.
* pdp11/pdp11-protos.h: Similarly.
* pdp11/pdp11.c: Similarly.
* pdp11/pdp11.h: Similarly.
* romp/romp-protos.h: Similarly.
* romp/romp.c: Similarly.
* romp/romp.h: Similarly.
* rs6000/rs6000-protos.h: Similarly.
* rs6000/rs6000.c: Similarly.
* rs6000/rs6000.h: Similarly.
* rs6000/sysv4.h: Similarly.
* sh/sh-protos.h: Similarly.
* sh/sh.c: Similarly.
* sh/sh.h: Similarly.
* sparc/sparc-protos.h: Similarly.
* sparc/sparc.c: Similarly.
* sparc/sparc.h: Similarly.
* vax/vax.c: Similarly.
* vax/vax.h: Similarly.
* vax/vms.h: Similarly.
* we32k/we32k.c: Similarly.
* we32k/we32k.h: Similarly.
Fri Jul 6 11:47:59 2001 Jeffrey A Law (law@cygnus.com)
* basic-block.h (first_insn_after_basic_block_note): Declare.
* flow.c (first_insn_after_basic_block_note): Define. Moved
from...
* ssa.c (first_insn_after_basic_block_note): Remove.
* ssa-dce.c (find_inherently_necessary): Consider BARRIERs
necessary.
(ssa_eliminate_dead_code): Properly update the CFG and PHI
nodes when we find a dead conditional branch. Insert BARRIERs
after any blocks with no successors, but which do not have
any BARRIERs.
2001-07-06 Zack Weinberg <zackw@stanford.edu>
* varray.c (varray_check_failed): Use internal_error.
2001-07-05 Andrew Haley <aph@redhat.com>
* Makefile.in (LIB2_DIVMOD_FUNCS): New.
(LIB2FUNCS): Move divmod functions to LIB2_DIVMOD_FUNCS.
* mklibgcc.in: Compile LIB2_DIVMOD_FUNCS.
2001-07-02 Jason Merrill <jason_merrill@redhat.com>
* dwarf2out.c (mem_loc_descriptor): Only look through a constant pool
reference if the target constant is also a SYMBOL_REF.
2001-07-05 Eric Christopher <echristo@redhat.com>
* config/mips/mips.h (MASK_MIPS3900): Remove.
(MASK_MIPS16,MASK_NO_CHECK_ZERO_DIV,MASK_CHECK_RANGE_DIV,
MASK_UNINIT_CONST_IN_RODATA): Change for 3900 mask removal.
(TARGET_MIPS3900): Change to use mips_arch.
(TARGET_MIPS4000): New.
(TARGET_MIPS4100): New.
(TARGET_MIPS4300): New.
(TARGET_SWITCHES): Change 3900 and 4650 options to NULL.
(SUBTARGET_TARGET_OPTIONS): Add -march. Change help text
for -mipsX.
(GENERATE_BRANCHLIKELY): Move TARGET_MIPS3900.
(ISA_HAS_BRANCHLIKELY): To here.
(CC1_CPU_SPEC): New.
(CC1_SPEC): Use here. Remove 4650 and 3900 options.
(mips_arch_string): Declare.
(mips_arch): Declare.
(TARGET_OPTIONS): Add -march and -mtune.
* config/mips/mips.c (mips_arch_string): New.
(mips_arch): New.
(override_options): Handle -march for codegen and -mtune
for scheduling. Use mips_arch. Move tx39 target default here.
(mips_parse_cpu): Move error message to override_options.
* config/mips/r3900.h (TARGET_DEFAULT): Remove.
* config/mips/mips.md: Use TARGET_MIPS4000 and TARGET_MIPS4300.
* doc/invoke.texi (Option Summary): Add -march and -mtune entries.
(MIPS Options): Ditto. Change mcpu entry to historical text.
2001-07-05 H.J. Lu (hjl@gnu.org)
* config/mips/mips.c (mips_parse_cpu): New function to parse
-march=*/-mcpu=*.
2001-07-05 Jim Wilson <wilson@redhat.com>
* config/ia64/lib1funcs.asm: Revert 2001-07-02 change.
* config/ia64/t-ia64: Likewise.
(LIB1ASMFUNCS): Update comment.
2001-07-05 David Edelsohn <edelsohn@gnu.org>
* doc/install.texi (Install GCC: Binaries): Fix typo.
2001-07-04 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.md ("*ashlsi3"): Operand 1 can be a memory
reference using the stack pointer, adjust it since we push Y
temporarily.
("*ashrsi3"): Likewise.
("*lshrsi3"): Likewise.
2001-07-05 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.h (RETURN_ADDR_RTX): Fix return address
when -fomit-frame-pointer is used.
2001-07-05 Jeffrey Oldham <oldham@codesourcery.com>
* flow.c: Reverse Jan Hubicka's patch of 02July2001.
(try_redirect_by_replacing_jump): Reverse updating properly the
count and frequency information. Reverse removing cc0 setter.
(forwarder_block_p): Reverse fixing for fallthru blocks.
2001-07-05 DJ Delorie <dj@redhat.com>
* gcc.c (TARGET_OPTION_TRANSLATE_TABLE): New.
(translate_options): If the above is defined, use it to map
given options to new options.
* doc/tm.texi: Document it.
2001-07-05 Brad Lucier <lucier@math.purdue.edu>
Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/invoke.texi (Optimize Options): Document that -fgcse may
cause programs using computed gotos to run more slowly.
2001-07-05 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific): Markup, spelling and typo fixes.
Fixed sorting.
Consistently require binutils 2.11.2, not prereleases.
(Specific, decstation-*): Canonicalize as mips-dec-*.
(Specific, i?86-*-sco3.2v5*): Remove make bootstrap requirement,
always necessary.
(Specific, m68k-altos): Removed reference to README.altos, deleted.
(Specific, mips-*): Reword MIPS C compiler requirements.
(Specific, powerpc*-*-*): New, mention --with-cpu once.
(Specific, sunv5): Removed, obsolete.
2001-07-05 Nathan Sidwell <nathan@codesourcery.com>
* dwarf2out.c (output_loc_list): Use an all ones mask for
.text asm output and don't rely on long long
literals. Reformat some long lines.
2001-07-05 Andreas Jaeger <aj@suse.de>
* doc/gcc.texi (GNU/Linux): Remove accidental re-add of GPL
section.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* dwarf2out.c (dwarf2out_define): Update comment.
(dwarf2out_undef): Ditto.
(dwarf2out_start_source_file): Ditto.
(dwarf2out_end_source_file): Ditto.
(dwarf2out_finish): Output DW_MACINFO_end_file for primary file,
since we never call the start/end debug hook for the primary file.
2001-07-04 Kazu Hirata <kazu@hxi.com>
* config/h8300/h8300.c (get_shift_alg): Remove an extra operand
from shll.
2001-07-04 Nathan Sidwell <nathan@codesourcery.com>
* cppinit.c (remove_dup_dirs): Inform if a system include
directory is being reordered.
* doc/invoke.texi (Directory Options): GCC warns if you hide a
system include.
* doc/cpp.texi (Search Paths): Likewise.
* doc/gcc.texi (Interoperation): Remove information about
-I/usr/include.
2001-07-04 Nathan Sidwell <nathan@codesourcery.com>
* varray.h (VARRAY_TOP_GENERIC_PTR): Remove spurious parameter.
(VARRAY_TOP_CHAR_PTR): Likewise.
2001-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* gcc.c (process_command): Don't assign elements of a const char*.
Wed Jul 4 13:40:02 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (change_address): Don't abort if invalid address while
reload is in progress.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* c-lex.c (cb_file_change): Pass line number to
debug_start_source_file.
(cb_undefine): Pass correct line number to debug_undef.
* toplev.c (debug_start_source_file): Add line number to
parameters. Pass it along to dwarf2out_start_source_file.
(decode_g_option): Stop resetting debug level back to normal when
we change debug formats, unless the current level is
none. (Before, -g3 -gdwarf-2 would use debug level 2, rather than
3).
* toplev.h (debug_start_source_file): Add line number to
parameters.
* dwarf2out.h (dwarf2out_start_source_file): Add line number to
parameters.
* dwarf2out.c (dwarf2out_start_source_file): Add line number to
parameters.
Output debug_macinfo data for starting file if requested.
(dwarf2out_end_source_file): Output debug_macinfo data for ending
file if requested.
(dwarf2out_define): Output debug_macinfo data for defining a macro
if requested.
(dwarf2out_undef): Output debug_macinfo data for undefining a
macro if requested.
(DEBUG_MACINFO_SECTION): New. DWARF2 macro info section name.
(DEBUG_MACINFO_SECTION_LABEL): New. DWARF2 macro info section label.
(macinfo_section_label): New. DWARF2 macro info section label.
(dwarf2out_init): If we want macro info, output the start label
for the section.
(dwarf2out_finish): If we want macro info, add a DW_AT_macro_info
attribute to the compilation unit die pointing to the macro info.
2001-07-04 Daniel Berlin <dan@cgsoftware.com>
* dwarf2out.c (new_loc_list): Move to inside #ifdef
DWARF2_DEBUGGING_INFO.
(add_loc_descr_to_loc_list): Ditto.
(output_loc_list): Ditto.
Also, fix thinko in curr not being initialized.
(gen_internal_sym): Ditto.
Wed Jul 4 13:40:02 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (replace_equiv_address): New function.
* expr.h (replace_equiv_address): New declaration.
* explow.c (validize_mem): Call it instead of change_address and
also call if -fforce-addr and address is constant.
* expr.c: Replace more calls to change_address with adjust_address
and/or replace_equiv_address or to validize_mem.
* function.c, regmove.c, config/alpha/alpha.c: Likewise.
* config/arm/arm.md, config/clipper/clipper.md: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i370/i370.md, config/i860/i860.md: Likewise.
* config/i960/i960.md, config/mips/mips.c: Likewise.
* config/mips/mips.md, config/pa/pa.md: Likewise.
* config/pdp11/pdp11.md, config/rs6000/rs6000.c: Likewise.
* config/rs6000/rs6000.md, config/sh/sh.md: Likewise.
2001-07-04 Kaveh R. Ghazi <ghazi@caip.rutgers.edu>
* bitmap.c (bitmap_union_of_diff): Don't use BITMAP_ALLOCA.
* bitmap.h (BITMAP_ALLOCA): Don't pass alloca as an argument to a
function.
2001-07-04 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/include: New directory.
* doc/fdl.texi: Move to doc/include/fdl.texi.
* doc/texinfo.tex: Move to doc/include/texinfo.tex.
* doc/include/funding.texi, doc/include/gpl.texi: New files.
* doc/gcc.texi: Use funding.texi and gpl.texi.
* Makefile.in ($(docdir)/cpp.info, $(docdir)/gcc.info,
$(docdir)/cppinternals.info, cpp.dvi. gcc.dvi. cppinternals.dvi):
Update dependencies and use -I $(docdir)/include.
2001-07-04 Anthony Green <green@redhat.com>
* config/v850/t-v850 (v850-c.o): Add missing dependencies.
2001-07-04 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (sparc64-*-*): Remove garbage.
Wed Jul 4 09:07:44 2001 Jan van Male <jan.vanmale@fenk.wau.nl>
* i386.c (ix86_expand_builtin, case IX86_BUILTIN_SETPS):
Fix typo in last change to use adjust_address.
2001-07-04 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi (Specific): Update information for *-*-solaris*.
Tue Jul 3 22:33:15 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide): Reinitialize Y for restart.
2001-07-03 Stan Shebs <shebs@apple.com>
* config/darwin.h (SECTION_FUNCTION): Remove WAS_TEXT argument, remove
case for flag_no_mach_text_sections.
(EXTRA_SECTION_FUNCTIONS): Remove arg from uses of SECTION_FUNCTION.
* config/darwin.c (flag_no_mach_text_sections): Remove.
* config/darwin-protos.h (darwin_init_pragma): Remove decl.
Tue Jul 3 15:35:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide, case PLUS): Call find_constant_term
and avoid checking for constant as first operand.
* recog.c (find_constant_term_loc): No longer static.
(adj_offettable_operand): Delete.
* rtl.h (adj_offsettable_operand): Delete declaration.
(find_constant_term): Add declaration.
* caller-save.c: Replace calls to adj_offsettable_operand with calls
to adjust_address.
* config/arm/arm.c, config/c4x/c4x.c: Likewise.
* config/clipper/clipper.md, config/h8300/h8300.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/i860/i860.c, config/i960/i960.c: Likewise.
* config/i960/i960.md, config/m68hc11/m68hc11.c: Likewise.
* config/m68k/m68k.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.md, config/mcore/mcore.c: Likewise.
* config/mips/mips.c, config/mips/mips.md: Likewise.
* config/mn10200/mn10200.c, config/mn10300/mn10300.c: Likewise.
* config/ns32k/ns32k.c, config/ns32k/ns32k.md: Likewise.
* config/pa/pa.c, config/pdp11/pdp11.c: Likewise.
* config/pdp11/pdp11.md, config/sh/sh.c, config/v850/v850.c: Likewise.
* config/vax/vax.md, config/ns32k/ns32k.c: Likewise.
* config/ns32k/ns32k.md: Likewise.
2001-07-03 Zack Weinberg <zackw@stanford.edu>
* rtl.c (copy_rtx): Handle 'T' format letter.
* gensupport.c (collect_insn_data): Likewise.
* print-rtl.c (print_rtx): Print 'T' slots like 's'.
2001-07-03 Nick Clifton <nickc@cambridge.redhat.com>
* doc/invoke.texi (Directory Options): Specifiy range for <N> in
-B option. Use 'dir' not 'foo' as example directory name.
2001-07-03 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* config/i386/sol2.h (ASM_PREFERRED_EH_DATA_FORMAT): Define.
Fixes PRs bootstrap/3067, bootstrap/3249, bootstrap/3275.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/cppinternals.texi: Improve formatting and logical markup.
2001-07-03 Andreas Jaeger <aj@suse.de>
* Makefile.in (insn-recog.o): Add dependency on reload.h.
* genrecog.c (write_header): Include reload.h for prototypes in
insn-recog.c.
2001-07-03 Neil Booth <neil@daikokuya.demon.co.uk>
config:
* i386/cygwin.h (VALID_MACHINE_DECL_ATTRIBUTE,
VALID_MACHINE_TYPE_ATTRIBUTE): Remove.
* i386/i386-protos.h (i386_pe_valid_decl_attribute_p,
i386_pe_valid_type_attribute_p): Add.
* i386/i386.c (TARGET_INITIALIZER): Override for cygwin targets.
* i386/winnt.c (i386_valid_decl_attribute_p): Return directly.
Mon Jul 2 21:52:19 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* explow.c (plus_constant_wide, case LO_SUM): New case.
(plus_constant_for_output_wide): Delete.
* rtl.h (plus_constant_for_output): Delete.
* alias.c (canon_rtx, init_alias_analysis): Call plus_constant
instead of plus_constant_for_output.
* recog.c (offsettable_address_p, adj_offsettable_operand): Likewise.
* config/darwin.c, config/arm/arm.c, config/m68k/m68k.c: Likewise.
* config/m88k/m88k.c, config/mips/mips.c, config/pa/pa.c: Likewise.
* config/rs6000/rs6000.c, config/sparc/sparc.c: Likewise.
* config/sparc/sparc.md: Likewise.
Convert some change_address calls to adjust_address.
2001-07-03 Joseph S. Myers <jsm28@cam.ac.uk>
* doc/extend.texi, doc/gcc.texi, doc/invoke.texi, doc/md.texi,
doc/rtl.texi, doc/tm.texi: Improve formatting. Improve
documentation of -std and -Wwrite-strings.
2001-07-02 Geoffrey Keating <geoffk@redhat.com>
* cse.c (canon_hash): Don't register registers in very small
register classes, as extending their lifetime might cause
reload to fail.
Mon Jul 2 23:14:00 CEST 2001 Jan Hubicka <jh@suse.cz>
* flow.c (try_redirect_by_replacing_jump): Remove cc0 setter.
* flow.c (forwarder_block_p): Fix for fallthru blocks.
(try_redirect_by_replacing_jump): Update properly the count
and frequency information.
Mon Jul 2 14:20:13 2001 Jeffrey A Law (law@cygnus.com)
* toplev.c (dump_file_index): Move SSA dumps just after first
jump dump.
(dump_file): Corresponding changes.
(rest_of_compilation): Move SSA path to just after the first
jump pass.
* doc/gcc.texi (Passes): Update due to movement of SSA path.
* doc/invoke.texi: Update dump file #s as they were completely
out of date with reality.
2001-07-02 Geoffrey Keating <geoffk@redhat.com>
* doc/tm.texi (Frame Layout): Document STACK_PUSH_CODE.
* expr.c (emit_move_insn_1): Deal with non-default
STACK_PUSH_CODE.
* expr.c (emit_single_push_insn): Fix warning.
2001-07-02 Toshiyasu Morita <toshiyasu.morita@hsa.hitachi.com>
* expr.c (emit_move_insn_1): Avoid modifying
cfun->expr->x_stack_pointer when PUSH_ROUNDING is defined.
Mon Jul 2 15:33:31 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* emit-rtl.c (adjust_address): New function.
* expr.h (adjust_address): Add declaration.
* builtins.c: Replace some calls to change_address with calls to it
or to validize_mem.
* caller-save.c, dwarf2out.c, except.c, expmed.c, expr.c: Likewise.
* function.c, config/a29k/a29k.md, config/alpha/alpha.c: Likewise.
* config/arm/arm.c, config/convex/convex.c: Likewise.
* config/dsp16xx/dsp16xx.md, config/fr30/fr30.c: Likewise.
* config/i386/i386.c, config/i386/i386.md: Likewise.
* config/ia64/ia64.c, config/ia64/ia64.md: Likewise.
* config/m32r/m32r.c, config/m68k/m68k.md: Likewise.
* config/m88k/m88k.c, config/mips/mips.md: Likewise.
* config/ns32k/ns32k.c, config/rs6000/rs6000.c: Likewise.
* config/sh/sh.c, config/sparc/sparc.md: Likewise.
2001-07-02 Jim Wilson <wilson@redhat.com>
* config/ia64/ia64.h: Delete obsolete lib1funcs.asm comment.
2001-07-02 Steve Ellcey <sje@cup.hp.com>
* config/ia64/t-ia64: Change LIB1ASMFUNCS to use single underscore.
* config/ia64/lib1funcs.asm: Change macro names to match t-ia64.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* cppinit.c (lang_defaults): New table.
(set_lang): Just read from lang_defaults into the live options
structure.
2001-07-02 Zack Weinberg <zackw@stanford.edu>
* Makefile.in (doc): Depend on $(GENERATED_MANPAGES).
* doc/.cvsignore: Add gcc.1, cpp.1, gcov.1.
* doc/gcc.1, doc/cpp.1, doc/gcov.1: Removed.
2001-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi: Various spelling and markup fixes.
(Installing GCC): Component specific installation instructions are
gone.
Fix reference.
Warn about removing old install dir in the presence of shared libs.
(Configuration): Invoke with options target to match configure
--help.
Consistently refer to gas, gld pathnames.
Invert --enable-multilib documentation.
Remove references to old compiler versions.
Mon Jul 2 12:50:51 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* flow.c (try_simplify_condjump): Fix typo in updating fallthru flags.
2001-07-02 Rainer Orth <ro@TechFak.Uni-Bielefeld.DE>
* doc/install.texi (Specific, mips*-sgi-irix4): Split from IRIX 5
section.
(Specific, mips*-sgi-irix5): Note IDO download.
Reworded MIPS C hints.
Use GNU as instead of GAS.
Markup fixes.
Removed SGI Freeware reference, IRIX 6 only.
(Specific, mips*-sgi-irix6): Removed ranlib caveats, obsolete.
Note N64 library requirement/workaround.
Update O32 hints.
Complete list of structure passing bug victims.
2001-07-02 Gerald Pfeifer <pfeifer@dbai.tuwien.ac.at>
* doc/install.texi: Remove CVS Id.
2001-07-02 Andreas Jaeger <aj@suse.de>
* ssa-dce.c (note_inherently_necessary_set): Add unused attribute.
(find_inherently_necessary): Remove unused variable.
2001-07-02 Nathan Sidwell <nathan@codesourcery.com>
* c-common.h (TDI_inlined): New ast dump phase.
(dump_flag_name): New function.
* c-dump.c (dump_files): Add inlined phase.
(dump_flag_name): Define.
* doc/invoke.texi (-fdump-ast-inlined): Document.
Mon Jul 2 06:29:36 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* stor-layout.c (layout_decl): Revert change to handling of alignment
in packed types.
Sun Jul 1 11:53:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* c-common.c (decl_attributes, case A_MODE): Don't call layout_decl
for FIELD_DECL.
2001-07-01 Geoffrey Keating <geoffk@redhat.com>
* doc/tm.texi (FUNCTION_ARG): Document that the last call
is special.
2001-07-01 Nathan Sidwell <nathan@codesourcery.com>
* tlink.c (recompile_files): Remove COMPILER_PATH and
LIBRARY_PATH from the environment.
2001-07-01 Zack Weinberg <zackw@stanford.edu>
* c-common.h (enum rid): Add RID_FIRST_AT, RID_LAST_AT,
RID_LAST_PQ. Move RID_FIRST_PQ down with the other FIRST/LAST
enumerators.
(OBJC_IS_AT_KEYWORD, OBJC_IS_PQ_KEYWORD): New macros.
* c-parse.in (OBJC_STRING): Kill.
(objc_string): Decompose to [objc_string] '@' STRING.
(reswords): Take the leading '@' off all the Objective C keywords.
(objc_rid_sans_at): Kill.
(init_reswords): Don't initialize it.
(yylexname): Use OBJC_IS_AT_KEYWORD and OBJC_IS_PQ_KEYWORD.
(_yylex): Kill reconsider label. Look ahead one token after
an '@'; if we get an identifier, check whether it's an
Objective C @-keyword. If so, return the keyword. Otherwise,
put back the token and return the '@' as a terminal.
* cpplib.c (lex_macro_node): Remove unnecessary check for
leading '@' on identifier. Clarify control flow and commentary.
Sun Jul 1 11:53:52 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* cse.c (new_label_ref): Variable deleted.
(insert): Remove set of new_label_ref.
(check_for_label_ref): New function.
(cse_basic_block): Don't check new_label_ref; call check_for_label_ref.
See ChangeLog.5 for earlier changes.
From-SVN: r43861
2001-07-09 13:20:51 +02:00
|
|
|
|
|
2001-12-12 03:47:55 +01:00
|
|
|
|
/* Return a memory reference like MEMREF, but with its mode widened to
|
|
|
|
|
MODE and adjusted by OFFSET. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx widen_memory_access (rtx, enum machine_mode, HOST_WIDE_INT);
|
2001-12-12 03:47:55 +01:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Return a memory reference like MEMREF, but which is known to have a
|
|
|
|
|
valid address. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx validize_mem (rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
re PR target/9703 ([arm] Accessing data through constant pool more times could be solved in less instructions)
* cselib.c (cselib_init): Change RTX_SIZE to RTX_CODE_SIZE.
* emit-rtl.c (copy_rtx_if_shared_1): Use shallow_copy_rtx.
(copy_insn_1): Likewise. Don't copy each field individually.
Reindent.
* read-rtl.c (apply_macro_to_rtx): Use RTX_CODE_SIZE instead
of RTX_SIZE.
* reload1.c (eliminate_regs): Use shallow_copy_rtx.
* rtl.c (rtx_size): Rename variable to...
(rtx_code_size): ...this.
(rtx_size): New function.
(rtx_alloc_stat): Use RTX_CODE_SIZE instead of RTX_SIZE.
(copy_rtx): Use shallow_copy_rtx. Don't copy each field individually.
Reindent.
(shallow_copy_rtx_stat): Use rtx_size instead of RTX_SIZE.
* rtl.h (rtx_code_size): New variable.
(rtx_size): Change from a variable to a function.
(RTX_SIZE): Rename to...
(RTX_CODE_SIZE): ...this.
PR target/9703
PR tree-optimization/17106
* doc/tm.texi (TARGET_USE_BLOCKS_FOR_CONSTANT_P): Document.
(Anchored Addresses): New section.
* doc/invoke.texi (-fsection-anchors): Document.
* doc/rtl.texi (SYMBOL_REF_IN_BLOCK_P, SYMBOL_FLAG_IN_BLOCK): Likewise.
(SYMBOL_REF_ANCHOR_P, SYMBOL_FLAG_ANCHOR): Likewise.
(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): Likewise.
* hooks.c (hook_bool_mode_rtx_false): New function.
* hooks.h (hook_bool_mode_rtx_false): Declare.
* gengtype.c (create_optional_field): New function.
(adjust_field_rtx_def): Add the "block_sym" field for SYMBOL_REFs when
SYMBOL_REF_IN_BLOCK_P is true.
* target.h (output_anchor, use_blocks_for_constant_p): New hooks.
(min_anchor_offset, max_anchor_offset): Likewise.
(use_anchors_for_symbol_p): New hook.
* toplev.c (compile_file): Call output_object_blocks.
(target_supports_section_anchors_p): New function.
(process_options): Check that -fsection-anchors is only used on
targets that support it and when -funit-at-a-time is in effect.
* tree-ssa-loop-ivopts.c (prepare_decl_rtl): Only create DECL_RTL
if the decl doesn't have one.
* dwarf2out.c: Remove instantiations of VEC(rtx,gc).
* expr.c (emit_move_multi_word, emit_move_insn): Pass the result
of force_const_mem through use_anchored_address.
(expand_expr_constant): New function.
(expand_expr_addr_expr_1): Call it. Use the same modifier when
calling expand_expr for INDIRECT_REF.
(expand_expr_real_1): Pass DECL_RTL through use_anchored_address
for all modifiers except EXPAND_INITIALIZER. Use expand_expr_constant.
* expr.h (use_anchored_address): Declare.
* loop-unroll.c: Don't declare rtx vectors here.
* explow.c: Include output.h.
(validize_mem): Call use_anchored_address.
(use_anchored_address): New function.
* common.opt (-fsection-anchors): New switch.
* varasm.c (object_block_htab, anchor_labelno): New variables.
(hash_section, object_block_entry_eq, object_block_entry_hash)
(use_object_blocks_p, get_block_for_section, create_block_symbol)
(use_blocks_for_decl_p, change_symbol_section): New functions.
(get_variable_section): New function, split out from assemble_variable.
(make_decl_rtl): Create a block symbol if use_object_blocks_p and
use_blocks_for_decl_p say so. Use change_symbol_section if the
symbol has already been created.
(assemble_variable_contents): New function, split out from...
(assemble_variable): ...here. Don't output any code for
block symbols; just pass them to place_block_symbol.
Use get_variable_section and assemble_variable_contents.
(get_constant_alignment, get_constant_section, get_constant_size): New
functions, split from output_constant_def_contents.
(build_constant_desc): Create a block symbol if use_object_blocks_p
says so. Or into SYMBOL_REF_FLAGS.
(assemble_constant_contents): New function, split from...
(output_constant_def_contents): ...here. Don't output any code
for block symbols; just pass them to place_section_symbol.
Use get_constant_section and get_constant_alignment.
(force_const_mem): Create a block symbol if use_object_blocks_p and
use_blocks_for_constant_p say so. Or into SYMBOL_REF_FLAGS.
(output_constant_pool_1): Add an explicit alignment argument.
Don't switch sections here.
(output_constant_pool): Adjust call to output_constant_pool_1.
Switch sections here instead. Don't output anything for block symbols;
just pass them to place_block_symbol.
(init_varasm_once): Initialize object_block_htab.
(default_encode_section_info): Keep the old SYMBOL_FLAG_IN_BLOCK.
(default_asm_output_anchor, default_use_aenchors_for_symbol_p)
(place_block_symbol, get_section_anchor, output_object_block)
(output_object_block_htab, output_object_blocks): New functions.
* target-def.h (TARGET_ASM_OUTPUT_ANCHOR): New macro.
(TARGET_ASM_OUT): Include it.
(TARGET_USE_BLOCKS_FOR_CONSTANT_P): New macro.
(TARGET_MIN_ANCHOR_OFFSET, TARGET_MAX_ANCHOR_OFFSET): New macros.
(TARGET_USE_ANCHORS_FOR_SYMBOL_P): New macro.
(TARGET_INITIALIZER): Include them.
* rtl.c (rtl_check_failed_block_symbol): New function.
* rtl.h: Include vec.h. Declare heap and gc rtx vectors.
(block_symbol, object_block): New structures.
(rtx_def): Add a block_symbol field to the union.
(BLOCK_SYMBOL_CHECK): New macro.
(rtl_check_failed_block_symbol): Declare.
(SYMBOL_FLAG_IN_BLOCK, SYMBOL_FLAG_ANCHOR): New SYMBOL_REF flags.
(SYMBOL_REF_IN_BLOCK_P, SYMBOL_REF_ANCHOR_P): New predicates.
(SYMBOL_FLAG_MACH_DEP_SHIFT): Bump by 2.
(SYMBOL_REF_BLOCK, SYMBOL_REF_BLOCK_OFFSET): New accessors.
* output.h (output_section_symbols): Declare.
(object_block): Name structure.
(place_section_symbol, get_section_anchor, default_asm_output_anchor)
(default_use_anchors_for_symbol_p): Declare.
* Makefile.in (RTL_BASE_H): Add vec.h.
(explow.o): Depend on output.h.
* config/rs6000/rs6000.c (TARGET_MIN_ANCHOR_OFFSET): Override default.
(TARGET_MAX_ANCHOR_OFFSET): Likewise.
(TARGET_USE_BLOCKS_FOR_CONSTANT_P): Likewise.
(rs6000_use_blocks_for_constant_p): New function.
From-SVN: r111254
2006-02-18 23:06:53 +01:00
|
|
|
|
extern rtx use_anchored_address (rtx);
|
|
|
|
|
|
Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
(REG_BASE_VALUE): Remove unneeded cast to unsigned.
(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
(find_base_decl): New function, from c_find_base_decl in c-common.c.
(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
(get_alias_set): Likewise.
Major rework to do more things and allow language-specific code
to just handle special-cases.
(record_alias_subset): Args are HOST_WIDE_INT.
(record_component_alias): Local vars are HOST_WIDE_INT.
Don't handle COMPLEX_EXPR.
(get_varargs_alias_set): Moved from builtins.c.
(get_frame_alias_set): New function.
* builtins.c (expand_builtin_return_address): Use frame alias set.
(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
for setjmp buffer.
(get_memory_rtx): Rework to use set_mem_attributes.
(get_varargs_alias_set): Deleted from here.
* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
(c_find_base_decl): Deleted from here.
(c_get_alias_set): Remove many cases and rework to just handle
C-specific cases.
* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
* c-decl.c (rtl.h, expr.h): Now included.
(init_decl_processing): Call record_component_aliases on array types.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for all fields that are not bitfields.
* c-typeck.c (common_type): Call record_component_aliases for array.
* caller-save.c (setup_save_areas): Rework register loop for unsigned.
Set all save areas to the frame alias set.
* calls.c (initialie_argument_information): Call set_mem_attributes.
(compute_argument_addresses, expand_call): Likewise.
* explow.c (set_mem_attributes): New function.
(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
LEN and OFFSET now HOST_WIDE_INT.
(clear_by_pieces): Similar changes.
(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
(clear_by_pieces_1): Likewise.
(emit_push_insn): Call set_mem_attributes.
(expand_expr, case INDIRECT_REF): Likewise.
(expand_expr, case VAR_DECL): Call change_address.
* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
tree_low_cst.
(get_varargs_alias_set, get_frame_alias_set): New decls.
(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
(new_alias_set, set_mem_attributes): Likewse.
* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
(assign_stack_temp_for_type): Likewise.
Can split slot even if alias set since can copy.
Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
(assign_temp): Use host_integerp and tree_low_cst.
(put_var_into_stack): Properly handle SAVE_EXPR.
(put_addressof_into_stack): Likewise.
(assign_parms): Call set_mem_attributes.
Delete #if 0 code.
(fix_lexical_address): Put reference to chain into frame alias set.
(expand_function_start): Call set_mem_attributes.
* integrate.c (expand_inline_function): Likewise.
* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (alter_reg): Make alias sets for spilled pseudos.
* rtl.def (MEM): Update comment.
* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
(move_by_pieces): Change length to HOST_WIDE_INT.
(record_base_value, record_alias_subset): Delete from here.
* stmt.c (expand_decl): Call set_mem_attributes.
* stor-layout.c (finish_record_layout): Call record_component_aliases.i
* toplev.c (compile_file): Call init_alias_once earlier.
* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
from here: now in alias.c.
* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
(struct tree_decl): Likewise.
(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
(output_constant_def, force_const_mem): Likewise.
* cp/Makefile.in (decl.o): Include ../expr.h.
* cp/decl.c (expr.h): Include.
(init_decl_processing): Call record_component_aliases for arrays.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for fields that aren't bitfields.
* cp/tree.c (build_cplus_array_type_1): Call record_component_aliases.
From-SVN: r34305
2000-05-31 20:37:31 +02:00
|
|
|
|
/* Given REF, a MEM, and T, either the type of X or the expression
|
|
|
|
|
corresponding to REF, set the memory attributes. OBJECTP is nonzero
|
|
|
|
|
if we are making a new object of this type. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void set_mem_attributes (rtx, tree, int);
|
2002-07-29 21:53:34 +02:00
|
|
|
|
|
|
|
|
|
/* Similar, except that BITPOS has not yet been applied to REF, so if
|
|
|
|
|
we alter MEM_OFFSET according to T then we should subtract BITPOS
|
|
|
|
|
expecting that it'll be added back in later. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void set_mem_attributes_minus_bitpos (rtx, tree, int, HOST_WIDE_INT);
|
Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* Makefile.in (c-decl.o): Depend on rtl.h and expr.h.
* alias.c (struct alias_entry): alias_set is HOST_WIDE_INT.
(REG_BASE_VALUE): Remove unneeded cast to unsigned.
(get_alias_set_entry): ALIAS_SET arg is HOST_WIDE_INT.
(find_base_decl): New function, from c_find_base_decl in c-common.c.
(new_alias_set): Moved from tree.c; return is HOST_WIDE_INT.
(get_alias_set): Likewise.
Major rework to do more things and allow language-specific code
to just handle special-cases.
(record_alias_subset): Args are HOST_WIDE_INT.
(record_component_alias): Local vars are HOST_WIDE_INT.
Don't handle COMPLEX_EXPR.
(get_varargs_alias_set): Moved from builtins.c.
(get_frame_alias_set): New function.
* builtins.c (expand_builtin_return_address): Use frame alias set.
(expand_builtin_setjmp, expand_builtin_longjmp): Use alias set
for setjmp buffer.
(get_memory_rtx): Rework to use set_mem_attributes.
(get_varargs_alias_set): Deleted from here.
* c-common.c (c_apply_type_quals_to_decl): Alias sets now HOST_WIDE_INT.
(c_find_base_decl): Deleted from here.
(c_get_alias_set): Remove many cases and rework to just handle
C-specific cases.
* c-common.h (c_get_alias_set): Returns HOST_WIDE_INT.
* c-decl.c (rtl.h, expr.h): Now included.
(init_decl_processing): Call record_component_aliases on array types.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for all fields that are not bitfields.
* c-typeck.c (common_type): Call record_component_aliases for array.
* caller-save.c (setup_save_areas): Rework register loop for unsigned.
Set all save areas to the frame alias set.
* calls.c (initialie_argument_information): Call set_mem_attributes.
(compute_argument_addresses, expand_call): Likewise.
* explow.c (set_mem_attributes): New function.
(stabilize): Use MEM_COPY_ATTRIBUTES and force_reg.
* expr.c (struct move_by_pieces): Remove {to,from}_{struct,readonly}.
LEN and OFFSET now HOST_WIDE_INT.
(clear_by_pieces): Similar changes.
(move_by_pieces): LEN now HOST_WIDE_INT; don't set deleted fields.
(move_by_pieces_ninsns): Now returns unsigned HOST_WIDE_INT.
(move_by_pieces_1): Don't use deleted fields, use MEM_COPY_ATTRIBUTES.
(clear_by_pieces_1): Likewise.
(emit_push_insn): Call set_mem_attributes.
(expand_expr, case INDIRECT_REF): Likewise.
(expand_expr, case VAR_DECL): Call change_address.
* expr.h (ADD_PARM_SIZE, SUB_PARM_SIZE): Use host_integerp and
tree_low_cst.
(get_varargs_alias_set, get_frame_alias_set): New decls.
(record_base_value, record_alias_subset, lang_get_alias_set): Likewise.
(new_alias_set, set_mem_attributes): Likewse.
* function.c (struct temp_slot): ALIAS_SET is HOST_WIDE_INT.
(assign_stack_temp_for_type): Likewise.
Can split slot even if alias set since can copy.
Set MEM_ALIAS_SET and MEM_SET_IN_STRUCT_P.
(assign_temp): Use host_integerp and tree_low_cst.
(put_var_into_stack): Properly handle SAVE_EXPR.
(put_addressof_into_stack): Likewise.
(assign_parms): Call set_mem_attributes.
Delete #if 0 code.
(fix_lexical_address): Put reference to chain into frame alias set.
(expand_function_start): Call set_mem_attributes.
* integrate.c (expand_inline_function): Likewise.
* recog.c (adj_offsettable_operand): Use MEM_COPY_ATTRIBUTES.
* regmove.c (try_apply_stack_adjustment): Likewise.
* reload.c (push_reload, make_memloc): Likewise.
* reload1.c (alter_reg): Make alias sets for spilled pseudos.
* rtl.def (MEM): Update comment.
* rtl.h (MEM_ALIAS_SET): Now uses XCWINT.
(move_by_pieces): Change length to HOST_WIDE_INT.
(record_base_value, record_alias_subset): Delete from here.
* stmt.c (expand_decl): Call set_mem_attributes.
* stor-layout.c (finish_record_layout): Call record_component_aliases.i
* toplev.c (compile_file): Call init_alias_once earlier.
* tree.c (lang_get_alias_set, get_alias_set, new_alias_set): Deleted
from here: now in alias.c.
* tree.h (struct tree_type): alias_set is HOST_WIDE_INT.
(struct tree_decl): Likewise.
(get_alias_set, new_alias_set, lang_get_alias_set): Deleted from here.
* varasm.c (make_function_rtl, make_decl_rtl): Call set_mem_attributes.
(output_constant_def, force_const_mem): Likewise.
* cp/Makefile.in (decl.o): Include ../expr.h.
* cp/decl.c (expr.h): Include.
(init_decl_processing): Call record_component_aliases for arrays.
(grokdeclarator): Likewise.
Set TREE_ADDRESSABLE for fields that aren't bitfields.
* cp/tree.c (build_cplus_array_type_1): Call record_component_aliases.
From-SVN: r34305
2000-05-31 20:37:31 +02:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Assemble the static constant template for function entry trampolines. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx assemble_trampoline_template (void);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Copy given rtx to a new temp reg and return that. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx copy_to_reg (rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Like copy_to_reg but always make the reg Pmode. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx copy_addr_to_reg (rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Like copy_to_reg but always make the reg the specified mode MODE. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx copy_to_mode_reg (enum machine_mode, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Copy given rtx to given temp reg and return that. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx copy_to_suggested_reg (rtx, rtx, enum machine_mode);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Copy a value to a register if it isn't already a register.
|
|
|
|
|
Args are mode (in case value is a constant) and the value. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx force_reg (enum machine_mode, rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Return given rtx, copied into a new temp reg if it was in memory. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx force_not_mem (rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1994-04-18 20:49:55 +02:00
|
|
|
|
/* Return mode and signedness to use when object is promoted. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern enum machine_mode promote_mode (tree, enum machine_mode, int *, int);
|
1994-04-18 20:49:55 +02:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Remove some bytes from the stack. An rtx says how many. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void adjust_stack (rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
|
|
|
|
/* Add some bytes to the stack. An rtx says how many. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void anti_adjust_stack (rtx);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
1992-05-06 13:35:29 +02:00
|
|
|
|
/* This enum is used for the following two functions. */
|
|
|
|
|
enum save_level {SAVE_BLOCK, SAVE_FUNCTION, SAVE_NONLOCAL};
|
|
|
|
|
|
|
|
|
|
/* Save the stack pointer at the specified level. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_stack_save (enum save_level, rtx *, rtx);
|
1992-05-06 13:35:29 +02:00
|
|
|
|
|
|
|
|
|
/* Restore the stack pointer from a save area of the specified level. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void emit_stack_restore (enum save_level, rtx, rtx);
|
1992-05-06 13:35:29 +02:00
|
|
|
|
|
2004-05-13 08:41:07 +02:00
|
|
|
|
/* Invoke emit_stack_save for the nonlocal_goto_save_area. */
|
|
|
|
|
extern void update_nonlocal_goto_save_area (void);
|
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Allocate some space on the stack dynamically and return its address. An rtx
|
|
|
|
|
says how many bytes. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx allocate_dynamic_stack_space (rtx, rtx, int);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
2002-06-03 03:13:17 +02:00
|
|
|
|
/* Probe a range of stack addresses from FIRST to FIRST+SIZE, inclusive.
|
1997-07-17 17:24:57 +02:00
|
|
|
|
FIRST is a constant and size is a Pmode RTX. These are offsets from the
|
|
|
|
|
current stack pointer. STACK_GROWS_DOWNWARD says whether to add or
|
|
|
|
|
subtract from the stack. If SIZE is constant, this is done
|
|
|
|
|
with a fixed number of probes. Otherwise, we must make a loop. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void probe_stack_range (HOST_WIDE_INT, rtx);
|
1997-07-17 17:24:57 +02:00
|
|
|
|
|
1992-03-07 00:36:01 +01:00
|
|
|
|
/* Return an rtx that refers to the value returned by a library call
|
|
|
|
|
in its original home. This becomes invalid if any more code is emitted. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx hard_libcall_value (enum machine_mode);
|
1992-03-07 00:36:01 +01:00
|
|
|
|
|
2001-08-22 02:33:33 +02:00
|
|
|
|
/* Return the mode desired by operand N of a particular bitfield
|
|
|
|
|
insert/extract insn, or MAX_MACHINE_MODE if no such insn is
|
|
|
|
|
available. */
|
|
|
|
|
|
|
|
|
|
enum extraction_pattern { EP_insv, EP_extv, EP_extzv };
|
|
|
|
|
extern enum machine_mode
|
2003-06-29 18:21:58 +02:00
|
|
|
|
mode_for_extraction (enum extraction_pattern, int);
|
|
|
|
|
|
|
|
|
|
extern rtx store_bit_field (rtx, unsigned HOST_WIDE_INT,
|
2004-07-10 10:04:58 +02:00
|
|
|
|
unsigned HOST_WIDE_INT, enum machine_mode, rtx);
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx extract_bit_field (rtx, unsigned HOST_WIDE_INT,
|
|
|
|
|
unsigned HOST_WIDE_INT, int, rtx,
|
2004-07-10 10:04:58 +02:00
|
|
|
|
enum machine_mode, enum machine_mode);
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx expand_mult (enum machine_mode, rtx, rtx, rtx, int);
|
|
|
|
|
extern rtx expand_mult_highpart_adjust (enum machine_mode, rtx, rtx, rtx, rtx, int);
|
|
|
|
|
|
|
|
|
|
extern rtx assemble_static_space (unsigned HOST_WIDE_INT);
|
|
|
|
|
extern int safe_from_p (rtx, tree, int);
|
2000-09-17 09:38:23 +02:00
|
|
|
|
|
expr.h: Split out optab- and libfunc-related code to...
* expr.h: Split out optab- and libfunc-related code to...
* optabs.h, libfuncs.h: ... these new headers.
* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
(OPTABS_H): New.
(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
dependencies.
* mkconfig.sh: Don't include insn-codes.h from config.h.
* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
enum insn_code is available. Move reload_in_optab and
reload_out_optab array declarations to optabs.h.
* regmove.c (gen_add3_insn): Move to optabs.c, export from
there, prototype in expr.h.
* gencodes.c: Cleanup: zap global variables, don't use
printf where puts will do, don't bother defining MAX_INSN_CODE
which nothing uses, let CODE_FOR_nothing get its value implicitly.
* genemit.c, genopinit.c: Include optabs.h in generated file.
* genoutput.c: Include insn-codes.h in generated file.
* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
Include optabs.h.
* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/m88k/m88k.c, config/sparc/sparc.c:
Include libfuncs.h.
* reload.c: Include expr.h and optabs.h before reload.h.
* config/alpha/alpha.c: Include tree.h before reload.h.
* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
and reload.h in that order.
* config/sparc/sparc.c: Include debug.h.
* recog.c: Include insn-codes.h.
cp:
* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
* except.c: Include libfuncs.h.
java:
* Make-lang.in (java/decl.o): Update dependencies.
* decl.c: Include libfuncs.h, don't include toplev.h.
From-SVN: r44858
2001-08-13 17:56:51 +02:00
|
|
|
|
/* Call this once to initialize the contents of the optabs
|
|
|
|
|
appropriately for the current target machine. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern void init_optabs (void);
|
|
|
|
|
extern void init_all_optabs (void);
|
expr.h: Split out optab- and libfunc-related code to...
* expr.h: Split out optab- and libfunc-related code to...
* optabs.h, libfuncs.h: ... these new headers.
* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
(OPTABS_H): New.
(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
dependencies.
* mkconfig.sh: Don't include insn-codes.h from config.h.
* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
enum insn_code is available. Move reload_in_optab and
reload_out_optab array declarations to optabs.h.
* regmove.c (gen_add3_insn): Move to optabs.c, export from
there, prototype in expr.h.
* gencodes.c: Cleanup: zap global variables, don't use
printf where puts will do, don't bother defining MAX_INSN_CODE
which nothing uses, let CODE_FOR_nothing get its value implicitly.
* genemit.c, genopinit.c: Include optabs.h in generated file.
* genoutput.c: Include insn-codes.h in generated file.
* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
Include optabs.h.
* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/m88k/m88k.c, config/sparc/sparc.c:
Include libfuncs.h.
* reload.c: Include expr.h and optabs.h before reload.h.
* config/alpha/alpha.c: Include tree.h before reload.h.
* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
and reload.h in that order.
* config/sparc/sparc.c: Include debug.h.
* recog.c: Include insn-codes.h.
cp:
* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
* except.c: Include libfuncs.h.
java:
* Make-lang.in (java/decl.o): Update dependencies.
* decl.c: Include libfuncs.h, don't include toplev.h.
From-SVN: r44858
2001-08-13 17:56:51 +02:00
|
|
|
|
|
|
|
|
|
/* Call this to initialize an optab function entry. */
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern rtx init_one_libfunc (const char *);
|
expr.h: Split out optab- and libfunc-related code to...
* expr.h: Split out optab- and libfunc-related code to...
* optabs.h, libfuncs.h: ... these new headers.
* Makefile.in (CONFIG_H, EXPR_H): Take out insn-codes.h.
(OPTABS_H): New.
(various .o rules): Add $(OPTABS_H) and/or libfuncs.h to
dependencies.
* mkconfig.sh: Don't include insn-codes.h from config.h.
* reload.h: Use #ifdef GCC_INSN_CODES_H to decide whether
enum insn_code is available. Move reload_in_optab and
reload_out_optab array declarations to optabs.h.
* regmove.c (gen_add3_insn): Move to optabs.c, export from
there, prototype in expr.h.
* gencodes.c: Cleanup: zap global variables, don't use
printf where puts will do, don't bother defining MAX_INSN_CODE
which nothing uses, let CODE_FOR_nothing get its value implicitly.
* genemit.c, genopinit.c: Include optabs.h in generated file.
* genoutput.c: Include insn-codes.h in generated file.
* builtins.c, caller-save.c, combine.c, doloop.c, explow.c,
expmed.c, expr.c, function.c, ifcvt.c, loop.c, optabs.c, profile.c,
reload1.c, simplify-rtx.c, stmt.c, unroll.c, config/alpha/alpha.c,
config/arm/arm.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/i386/i386.c, config/ia64/ia64.c, config/mn10300/mn10300.c,
config/pj/pj.c, config/sh/sh.c, config/sparc/sparc.c:
Include optabs.h.
* builtins.c, calls.c, dwarf2out.c, except.c, expr.c, function.c,
optabs.c, stmt.c, config/c4x/c4x.c, config/clipper/clipper.c,
config/m88k/m88k.c, config/sparc/sparc.c:
Include libfuncs.h.
* reload.c: Include expr.h and optabs.h before reload.h.
* config/alpha/alpha.c: Include tree.h before reload.h.
* config/pa/pa.c: Include expr.h, optabs.h, libfuncs.h,
and reload.h in that order.
* config/sparc/sparc.c: Include debug.h.
* recog.c: Include insn-codes.h.
cp:
* Make-lang.in (cp/except.o): Add libfuncs.h to dependencies.
* except.c: Include libfuncs.h.
java:
* Make-lang.in (java/decl.o): Update dependencies.
* decl.c: Include libfuncs.h, don't include toplev.h.
From-SVN: r44858
2001-08-13 17:56:51 +02:00
|
|
|
|
|
2003-06-29 18:21:58 +02:00
|
|
|
|
extern int vector_mode_valid_p (enum machine_mode);
|
Makefile.in (EXPR_H): Add insn-config.h...
2004-06-01 Jerry Quinn <jlquinn@optonline.net>
* Makefile.in (EXPR_H): Add insn-config.h, function.h,
$(RTL_H), flags.h, $(TREE_H), $(MACHMODE_H), $(EXPR_H).
(ALIAS_H, EMIT_RTL_H): New.
(cselib.o): Replace EXPR_H with EMIT_RTL_H.
(cfgcleanup.o): Add EMIT_RTL_H.
(alias.o): Replace EXPR_H with EMIT_RTL_H and ALIAS_H.
* alias.c: Replace expr.h with emit-rtl.h and alias.h.
* attribs.c, c-lex.c, c-obj-common.c, c-semantics.c: Remove expr.h.
* cfgcleanup.c, cselib.c: Replace expr.h with emit-rtl.h.
* expr.h: Add include guard. Include function.h, rtl.h, flags.h,
tree.h, machmode.h, insn-config.h, alias.h, emit-rtl.h.
(get_varargs_alias_set, get_frame_alias_set, record_base_value,
record_alias_subset, new_alias_set, can_address_p): Move to alias.h.
(set_mem_alias_set, set_mem_align, set_mem_expr, set_mem_offset,
set_mem_size): Move to emit-rtl.h.
* emit-rtl.h: New.
* alias.h: New.
From-SVN: r82568
2004-06-02 04:09:45 +02:00
|
|
|
|
|
|
|
|
|
#endif /* GCC_EXPR_H */
|