summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog756
-rw-r--r--gcc/DATESTAMP2
-rw-r--r--gcc/LANGUAGES2
-rw-r--r--gcc/Makefile.in642
-rw-r--r--gcc/ada/ChangeLog4
-rw-r--r--gcc/ada/gcc-interface/utils.c2
-rw-r--r--gcc/alias.c60
-rw-r--r--gcc/auto-inc-dec.c3
-rw-r--r--gcc/basic-block.h1
-rw-r--r--gcc/bb-reorder.c4
-rw-r--r--gcc/bt-load.c1
-rw-r--r--gcc/builtins.c4
-rw-r--r--gcc/c-decl.c16
-rw-r--r--gcc/c-family/ChangeLog13
-rw-r--r--gcc/c-family/c-ada-spec.c1
-rw-r--r--gcc/c-family/c-common.c2
-rw-r--r--gcc/c-family/c-common.h2
-rw-r--r--gcc/c-family/c-lex.c2
-rw-r--r--gcc/c-family/c-pch.c2
-rw-r--r--gcc/c-family/c-semantics.c1
-rw-r--r--gcc/c-tree.h1
-rw-r--r--gcc/caller-save.c1
-rw-r--r--gcc/calls.c26
-rw-r--r--gcc/cfg.c5
-rw-r--r--gcc/cfgbuild.c1
-rw-r--r--gcc/cfgcleanup.c3
-rw-r--r--gcc/cfgexpand.c1
-rw-r--r--gcc/cfglayout.c1
-rw-r--r--gcc/cfgloop.c1
-rw-r--r--gcc/cfgloopanal.c1
-rw-r--r--gcc/cfgloopmanip.c1
-rw-r--r--gcc/cfgrtl.c1
-rw-r--r--gcc/cgraph.c9
-rw-r--r--gcc/cgraph.h6
-rw-r--r--gcc/cgraphclones.c2
-rw-r--r--gcc/cgraphunit.c10
-rw-r--r--gcc/collect2-aix.h8
-rw-r--r--gcc/collect2.c10
-rw-r--r--gcc/collect2.h2
-rw-r--r--gcc/combine-stack-adj.c1
-rw-r--r--gcc/combine.c5
-rw-r--r--gcc/compare-elim.c2
-rw-r--r--gcc/config/alpha/alpha.c1
-rw-r--r--gcc/config/alpha/ev6.md4
-rw-r--r--gcc/config/alpha/vms.h2
-rw-r--r--gcc/config/arm/README-interworking2
-rw-r--r--gcc/config/arm/arm.c23
-rw-r--r--gcc/config/arm/iterators.md2
-rw-r--r--gcc/config/arm/t-arm2
-rw-r--r--gcc/config/arm/vxworks.h2
-rw-r--r--gcc/config/avr/avr.c6
-rw-r--r--gcc/config/avr/avr.h2
-rw-r--r--gcc/config/avr/avr.md2
-rw-r--r--gcc/config/avr/avr.opt3
-rw-r--r--gcc/config/avr/builtins.def2
-rw-r--r--gcc/config/avr/gen-avr-mmcu-texi.c53
-rw-r--r--gcc/config/avr/t-avr12
-rw-r--r--gcc/config/bfin/bfin.c1
-rw-r--r--gcc/config/c6x/c6x.c4
-rw-r--r--gcc/config/cr16/cr16.c2
-rw-r--r--gcc/config/cr16/cr16.md2
-rw-r--r--gcc/config/cris/cris.h8
-rw-r--r--gcc/config/cris/cris.md2
-rw-r--r--gcc/config/darwin.c2
-rw-r--r--gcc/config/darwin.h8
-rw-r--r--gcc/config/darwin.opt2
-rw-r--r--gcc/config/epiphany/epiphany.c1
-rw-r--r--gcc/config/frv/frv.c1
-rw-r--r--gcc/config/i386/i386-c.c2
-rw-r--r--gcc/config/i386/i386.c16
-rw-r--r--gcc/config/ia64/ia64.c8
-rw-r--r--gcc/config/m32r/m32r.c2
-rw-r--r--gcc/config/m68k/cf.md2
-rw-r--r--gcc/config/mep/mep.c5
-rw-r--r--gcc/config/microblaze/microblaze.c3
-rw-r--r--gcc/config/microblaze/microblaze.h2
-rw-r--r--gcc/config/mips/4600.md24
-rw-r--r--gcc/config/mips/mips.c3
-rw-r--r--gcc/config/mmix/mmix.c1
-rw-r--r--gcc/config/mmix/mmix.md8
-rw-r--r--gcc/config/mn10300/mn10300.c4
-rw-r--r--gcc/config/mn10300/mn10300.md4
-rw-r--r--gcc/config/pa/pa.c29
-rw-r--r--gcc/config/picochip/picochip.c1
-rw-r--r--gcc/config/picochip/picochip.h2
-rw-r--r--gcc/config/rs6000/a2.md2
-rw-r--r--gcc/config/rs6000/rs6000.c16
-rw-r--r--gcc/config/rs6000/rs6000.md2
-rw-r--r--gcc/config/rs6000/t-rs60002
-rw-r--r--gcc/config/rs6000/vector.md2
-rw-r--r--gcc/config/rx/rx.md2
-rw-r--r--gcc/config/rx/rx.opt2
-rw-r--r--gcc/config/s390/2097.md4
-rw-r--r--gcc/config/s390/s390.c4
-rw-r--r--gcc/config/s390/s390.h2
-rw-r--r--gcc/config/score/score.c1
-rw-r--r--gcc/config/sh/predicates.md19
-rw-r--r--gcc/config/sh/sh.c20
-rw-r--r--gcc/config/sh/sh.h18
-rw-r--r--gcc/config/sh/sh.md6
-rw-r--r--gcc/config/sh/sh.opt6
-rw-r--r--gcc/config/sh/sync.md537
-rw-r--r--gcc/config/sparc/sparc.c8
-rw-r--r--gcc/config/sparc/sync.md2
-rw-r--r--gcc/config/spu/spu.c7
-rw-r--r--gcc/config/spu/spu.md2
-rw-r--r--gcc/config/spu/t-spu-elf2
-rw-r--r--gcc/config/tilegx/tilegx.c2
-rw-r--r--gcc/config/tilepro/tilepro.c2
-rw-r--r--gcc/config/v850/v850.c1
-rw-r--r--gcc/config/vms/vms.c4
-rw-r--r--gcc/config/vxworks-dummy.h2
-rw-r--r--gcc/config/vxworks.h2
-rwxr-xr-xgcc/configure8
-rw-r--r--gcc/configure.ac2
-rw-r--r--gcc/cp/ChangeLog25
-rw-r--r--gcc/cp/Make-lang.in4
-rw-r--r--gcc/cp/call.c1
-rw-r--r--gcc/cp/class.c1
-rw-r--r--gcc/cp/except.c1
-rw-r--r--gcc/cp/init.c1
-rw-r--r--gcc/cp/lex.c1
-rw-r--r--gcc/cp/method.c1
-rw-r--r--gcc/cp/parser.c1
-rw-r--r--gcc/cp/pt.c1
-rw-r--r--gcc/cp/rtti.c1
-rw-r--r--gcc/cp/search.c1
-rw-r--r--gcc/cp/tree.c51
-rw-r--r--gcc/cprop.c1
-rw-r--r--gcc/cse.c8
-rw-r--r--gcc/cselib.c3
-rw-r--r--gcc/dbgcnt.c1
-rw-r--r--gcc/dbxout.c36
-rw-r--r--gcc/dbxout.h22
-rw-r--r--gcc/df-problems.c1
-rw-r--r--gcc/df-scan.c5
-rw-r--r--gcc/df.h2
-rw-r--r--gcc/doc/avr-mmcu.texi14
-rw-r--r--gcc/doc/extend.texi6
-rw-r--r--gcc/doc/include/texinfo.tex2889
-rw-r--r--gcc/doc/install.texi4
-rw-r--r--gcc/doc/invoke.texi104
-rw-r--r--gcc/doc/md.texi2
-rw-r--r--gcc/doc/plugins.texi2
-rw-r--r--gcc/doc/rtl.texi2
-rw-r--r--gcc/doc/tm.texi4
-rw-r--r--gcc/doc/tm.texi.in2
-rw-r--r--gcc/dojump.c1
-rw-r--r--gcc/dse.c8
-rw-r--r--gcc/dwarf2asm.c2
-rw-r--r--gcc/dwarf2out.c139
-rw-r--r--gcc/et-forest.c2
-rw-r--r--gcc/except.c1
-rw-r--r--gcc/except.h4
-rw-r--r--gcc/explow.c9
-rw-r--r--gcc/expmed.c6
-rw-r--r--gcc/expr.c77
-rw-r--r--gcc/final.c4
-rw-r--r--gcc/fold-const.c18
-rw-r--r--gcc/fortran/ChangeLog28
-rw-r--r--gcc/fortran/Make-lang.in2
-rw-r--r--gcc/fortran/decl.c23
-rw-r--r--gcc/fortran/expr.c6
-rw-r--r--gcc/fortran/frontend-passes.c6
-rw-r--r--gcc/fortran/match.c4
-rw-r--r--gcc/fortran/resolve.c12
-rw-r--r--gcc/fortran/trans-array.c20
-rw-r--r--gcc/fortran/trans-common.c3
-rw-r--r--gcc/fortran/trans-decl.c1
-rw-r--r--gcc/fortran/trans-intrinsic.c4
-rw-r--r--gcc/fortran/trans-types.c2
-rw-r--r--gcc/fortran/trans.c14
-rw-r--r--gcc/function.c273
-rw-r--r--gcc/function.h16
-rw-r--r--gcc/fwprop.c1
-rw-r--r--gcc/gcc.c4
-rw-r--r--gcc/gcov-dump.c6
-rw-r--r--gcc/gcov.c11
-rw-r--r--gcc/gcse.c21
-rw-r--r--gcc/genautomata.c2
-rw-r--r--gcc/genemit.c1
-rw-r--r--gcc/gengtype-state.c4
-rw-r--r--gcc/gengtype.c6
-rw-r--r--gcc/genhooks.c2
-rw-r--r--gcc/gimple-fold.c10
-rw-r--r--gcc/gimple-pretty-print.c2
-rw-r--r--gcc/gimple.c4
-rw-r--r--gcc/gimple.h12
-rw-r--r--gcc/gimplify.c2
-rw-r--r--gcc/go/gofrontend/expressions.cc18
-rw-r--r--gcc/graph.c1
-rw-r--r--gcc/graphite-interchange.c2
-rw-r--r--gcc/graphite-sese-to-poly.c6
-rw-r--r--gcc/haifa-sched.c11
-rw-r--r--gcc/hw-doloop.c1
-rw-r--r--gcc/hwint.h5
-rw-r--r--gcc/ifcvt.c2
-rw-r--r--gcc/input.c17
-rw-r--r--gcc/integrate.c360
-rw-r--r--gcc/integrate.h33
-rw-r--r--gcc/ipa-cp.c4
-rw-r--r--gcc/ipa-inline-analysis.c2
-rw-r--r--gcc/ipa-inline-transform.c3
-rw-r--r--gcc/ipa-inline.c4
-rw-r--r--gcc/ipa-pure-const.c5
-rw-r--r--gcc/ipa-ref.h2
-rw-r--r--gcc/ipa-reference.c5
-rw-r--r--gcc/ipa-utils.c3
-rw-r--r--gcc/ipa.c8
-rw-r--r--gcc/ira-build.c5
-rw-r--r--gcc/ira-color.c4
-rw-r--r--gcc/ira-costs.c12
-rw-r--r--gcc/ira-emit.c7
-rw-r--r--gcc/ira-int.h43
-rw-r--r--gcc/ira-lives.c20
-rw-r--r--gcc/ira.c333
-rw-r--r--gcc/ira.h6
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/Make-lang.in2
-rw-r--r--gcc/java/resource.c1
-rw-r--r--gcc/langhooks.c1
-rw-r--r--gcc/lcm.c1
-rw-r--r--gcc/loop-doloop.c1
-rw-r--r--gcc/loop-invariant.c3
-rw-r--r--gcc/loop-iv.c1
-rw-r--r--gcc/loop-unroll.c1
-rw-r--r--gcc/loop-unswitch.c1
-rw-r--r--gcc/lto-cgraph.c1
-rw-r--r--gcc/lto-section-in.c1
-rw-r--r--gcc/lto-streamer-in.c1
-rw-r--r--gcc/lto-streamer.c2
-rw-r--r--gcc/lto-streamer.h4
-rw-r--r--gcc/lto-wrapper.c2
-rw-r--r--gcc/matrix-reorg.c1
-rw-r--r--gcc/mcf.c3
-rw-r--r--gcc/mode-switching.c7
-rw-r--r--gcc/modulo-sched.c2
-rw-r--r--gcc/objc/ChangeLog4
-rw-r--r--gcc/objc/Make-lang.in2
-rw-r--r--gcc/objc/objc-act.c1
-rw-r--r--gcc/objc/objc-next-runtime-abi-01.c2
-rw-r--r--gcc/output.h35
-rw-r--r--gcc/passes.c22
-rw-r--r--gcc/plugin.c2
-rw-r--r--gcc/postreload-gcse.c1
-rw-r--r--gcc/postreload.c3
-rw-r--r--gcc/predict.c1
-rw-r--r--gcc/profile.c1
-rw-r--r--gcc/ree.c2
-rw-r--r--gcc/reg-stack.c2
-rw-r--r--gcc/regcprop.c1
-rw-r--r--gcc/reginfo.c111
-rw-r--r--gcc/regmove.c1
-rw-r--r--gcc/regs.h23
-rw-r--r--gcc/regstat.c1
-rw-r--r--gcc/reload.h4
-rw-r--r--gcc/reload1.c1
-rw-r--r--gcc/rtl.h10
-rw-r--r--gcc/sched-deps.c6
-rw-r--r--gcc/sched-ebb.c1
-rw-r--r--gcc/sel-sched-dump.c1
-rw-r--r--gcc/sel-sched-ir.c2
-rw-r--r--gcc/sel-sched-ir.h4
-rw-r--r--gcc/sel-sched.c6
-rw-r--r--gcc/sese.c2
-rw-r--r--gcc/simplify-rtx.c24
-rw-r--r--gcc/stmt.c135
-rw-r--r--gcc/stor-layout.c7
-rw-r--r--gcc/store-motion.c1
-rw-r--r--gcc/system.h8
-rw-r--r--gcc/target-hooks-macros.h2
-rw-r--r--gcc/target.def13
-rw-r--r--gcc/testsuite/ChangeLog73
-rw-r--r--gcc/testsuite/c-c++-common/restrict-2.c2
-rw-r--r--gcc/testsuite/g++.dg/init/new33.C11
-rw-r--r--gcc/testsuite/g++.dg/init/new34.C11
-rw-r--r--gcc/testsuite/g++.dg/tree-ssa/stabilize1.C14
-rw-r--r--gcc/testsuite/gcc.c-torture/compile/pr53519.c26
-rw-r--r--gcc/testsuite/gcc.dg/pr52558-1.c22
-rw-r--r--gcc/testsuite/gcc.dg/pr52558-2.c23
-rw-r--r--gcc/testsuite/gcc.dg/tm/reg-promotion.c24
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr48493.c18
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr53501.c22
-rw-r--r--gcc/testsuite/gcc.dg/torture/pr53516.c32
-rw-r--r--gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948-2.c17
-rw-r--r--gcc/testsuite/gcc.dg/vect/slp-perm-8.c6
-rw-r--r--gcc/testsuite/gcc.target/arm/neon-vrev.c105
-rw-r--r--gcc/testsuite/gcc.target/cris/asm-other.S15
-rw-r--r--gcc/testsuite/gcc.target/cris/asm-v10.S6
-rw-r--r--gcc/testsuite/gcc.target/cris/asm-v8.S6
-rw-r--r--gcc/testsuite/gcc.target/cris/inasm-other.c23
-rw-r--r--gcc/testsuite/gcc.target/cris/inasm-v10.c6
-rw-r--r--gcc/testsuite/gcc.target/cris/inasm-v8.c6
-rw-r--r--gcc/testsuite/gcc.target/i386/shuf-concat.c13
-rw-r--r--gcc/testsuite/gcc.target/powerpc/powerpc.exp2
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51340-1.c13
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51340-2.c12
-rw-r--r--gcc/testsuite/gcc.target/sh/pr51340-3.c12
-rw-r--r--gcc/testsuite/lib/target-supports.exp3
-rw-r--r--gcc/tlink.c8
-rw-r--r--gcc/toplev.c4
-rw-r--r--gcc/tracer.c1
-rw-r--r--gcc/trans-mem.c2
-rw-r--r--gcc/tree-affine.c1
-rw-r--r--gcc/tree-cfg.c3
-rw-r--r--gcc/tree-cfgcleanup.c2
-rw-r--r--gcc/tree-data-ref.c32
-rw-r--r--gcc/tree-dfa.c152
-rw-r--r--gcc/tree-eh.c8
-rw-r--r--gcc/tree-emutls.c1
-rw-r--r--gcc/tree-inline.c24
-rw-r--r--gcc/tree-into-ssa.c1
-rw-r--r--gcc/tree-loop-distribution.c250
-rw-r--r--gcc/tree-mudflap.c4
-rw-r--r--gcc/tree-nomudflap.c1
-rw-r--r--gcc/tree-optimize.c1
-rw-r--r--gcc/tree-predcom.c2
-rw-r--r--gcc/tree-pretty-print.c1
-rw-r--r--gcc/tree-profile.c2
-rw-r--r--gcc/tree-sra.c11
-rw-r--r--gcc/tree-ssa-address.c3
-rw-r--r--gcc/tree-ssa-ccp.c1
-rw-r--r--gcc/tree-ssa-copy.c1
-rw-r--r--gcc/tree-ssa-dom.c1
-rw-r--r--gcc/tree-ssa-live.c3
-rw-r--r--gcc/tree-ssa-loop-ch.c1
-rw-r--r--gcc/tree-ssa-loop-im.c222
-rw-r--r--gcc/tree-ssa-loop-ivopts.c4
-rw-r--r--gcc/tree-ssa-loop-manip.c2
-rw-r--r--gcc/tree-ssa-loop-niter.c3
-rw-r--r--gcc/tree-ssa-loop-prefetch.c1
-rw-r--r--gcc/tree-ssa-loop-unswitch.c1
-rw-r--r--gcc/tree-ssa-loop.c1
-rw-r--r--gcc/tree-ssa-math-opts.c2
-rw-r--r--gcc/tree-ssa-pre.c2
-rw-r--r--gcc/tree-ssa-propagate.c3
-rw-r--r--gcc/tree-ssa-reassoc.c6
-rw-r--r--gcc/tree-ssa-sccvn.c6
-rw-r--r--gcc/tree-ssa-structalias.c1
-rw-r--r--gcc/tree-ssa-tail-merge.c1
-rw-r--r--gcc/tree-ssa-ter.c2
-rw-r--r--gcc/tree-ssa-threadedge.c1
-rw-r--r--gcc/tree-ssa-threadupdate.c1
-rw-r--r--gcc/tree-ssa-uncprop.c1
-rw-r--r--gcc/tree-ssa-uninit.c5
-rw-r--r--gcc/tree-ssa.c1
-rw-r--r--gcc/tree-ssanames.c2
-rw-r--r--gcc/tree-vect-data-refs.c30
-rw-r--r--gcc/tree-vect-generic.c2
-rw-r--r--gcc/tree-vect-loop-manip.c2
-rw-r--r--gcc/tree-vect-loop.c1
-rw-r--r--gcc/tree-vect-slp.c3
-rw-r--r--gcc/tree-vect-stmts.c1
-rw-r--r--gcc/tree-vectorizer.c1
-rw-r--r--gcc/tree.c2
-rw-r--r--gcc/tree.h11
-rw-r--r--gcc/value-prof.c1
-rw-r--r--gcc/var-tracking.c1
-rw-r--r--gcc/varasm.c41
-rw-r--r--gcc/varpool.c6
-rw-r--r--gcc/web.c1
361 files changed, 5963 insertions, 3401 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 513405ff202..5202d7833ed 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,753 @@
+2012-05-31 Matt Turner <mattst88@gmail.com>
+
+ * config/mips/4600.md (r4600_imul_si): Rename from r4600_imul.
+ (r4600_imul_di): New.
+ (r4600_idiv_si): Rename from r4600_idiv.
+ (r4600_idiv_di): New.
+
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * output.h (__gcc_host_wide_int__): Move to hwint.h.
+ (decl_default_tls_model): Move to tree.h
+ (dump_file): Move to system.h.
+ (default_stabs_asm_out_destructor, default_stabs_asm_out_constructor,
+ dbxout_int, dbxout_stabd, dbxout_begin_stabn, dbxout_begin_stabn_sline,
+ dbxout_begin_empty_stabs, dbxout_begin_simple_stabs,
+ dbxout_begin_simple_stabs_desc, dbxout_stab_value_zero,
+ dbxout_stab_value_zero, dbxout_stab_value_label_diff,
+ dbxout_stab_value_internal_label,
+ dbxout_stab_value_internal_label_diff): Move from here ...
+ * dbxout.h: ... to here.
+ * system.h (dump_file): Moved here from output.h.
+ * hwint.h (__gcc_host_wide_int__): Moved here from output.h.
+ * tree.h (decl_default_tls_model): Moved here from output.h.
+ * varasm.c (default_stabs_asm_out_destructor,
+ default_stabs_asm_out_constructor): Move from here ...
+ * dbxout.c: ... to here.
+
+ * gcov-dump.c (dump_file): Rename to dump_gcov_file. Update callers.
+
+ * collect2.h (dump_file): Rename to dump_ld_file.
+ * collect2.c: Likewise.
+ * tlink.c: Likewise.
+
+ * alias.c: Do not include output.h.
+ * auto-inc-dec.c: Likewise.
+ * bt-load.c: Likewise.
+ * caller-save.c: Likewise.
+ * cfg.c: Likewise.
+ * cfgbuild.c: Likewise.
+ * cfgcleanup.c: Likewise.
+ * cfglayout.c: Likewise.
+ * cfgloop.c: Likewise.
+ * cfgloopanal.c: Likewise.
+ * cfgloopmanip.c: Likewise.
+ * cfgrtl.c: Likewise.
+ * cgraph.c: Likewise.
+ * cgraphclones.c: Likewise.
+ * combine-stack-adj.c: Likewise.
+ * combine.c: Likewise.
+ * cprop.c: Likewise.
+ * cse.c: Likewise.
+ * cselib.c: Likewise.
+ * dbgcnt.c: Likewise.
+ * df-problems.c: Likewise.
+ * df-scan.c: Likewise.
+ * dojump.c: Likewise.
+ * fwprop.c: Likewise.
+ * gcse.c: Likewise.
+ * graph.c: Likewise.
+ * haifa-sched.c: Likewise.
+ * hw-doloop.c: Likewise.
+ * ipa-inline-transform.c: Likewise.
+ * ipa-pure-const.c: Likewise.
+ * ipa-reference.c: Likewise.
+ * ipa-utils.c: Likewise.
+ * ira-build.c: Likewise.
+ * ira-emit.c: Likewise.
+ * lcm.c: Likewise.
+ * loop-doloop.c: Likewise.
+ * loop-invariant.c: Likewise.
+ * loop-iv.c: Likewise.
+ * loop-unroll.c: Likewise.
+ * loop-unswitch.c: Likewise.
+ * lto-cgraph.c: Likewise.
+ * lto-section-in.c: Likewise.
+ * lto-streamer-in.c: Likewise.
+ * mcf.c: Likewise.
+ * mode-switching.c: Likewise.
+ * postreload-gcse.c: Likewise.
+ * postreload.c: Likewise.
+ * predict.c: Likewise.
+ * profile.c: Likewise.
+ * ree.c: Likewise.
+ * reg-stack.c: Likewise.
+ * regcprop.c: Likewise.
+ * regmove.c: Likewise.
+ * regstat.c: Likewise.
+ * reload1.c: Likewise.
+ * sched-ebb.c: Likewise.
+ * sel-sched-dump.c: Likewise.
+ * simplify-rtx.c: Likewise.
+ * stor-layout.c: Likewise.
+ * store-motion.c: Likewise.
+ * tracer.c: Likewise.
+ * tree-affine.c: Likewise.
+ * tree-cfg.c: Likewise.
+ * tree-cfgcleanup.c: Likewise.
+ * tree-dfa.c: Likewise.
+ * tree-into-ssa.c: Likewise.
+ * tree-nomudflap.c: Likewise.
+ * tree-optimize.c: Likewise.
+ * tree-pretty-print.c: Likewise.
+ * tree-profile.c: Likewise.
+ * tree-ssa-address.c: Likewise.
+ * tree-ssa-ccp.c: Likewise.
+ * tree-ssa-copy.c: Likewise.
+ * tree-ssa-dom.c: Likewise.
+ * tree-ssa-loop-ch.c: Likewise.
+ * tree-ssa-loop-im.c: Likewise.
+ * tree-ssa-loop-manip.c: Likewise.
+ * tree-ssa-loop-niter.c: Likewise.
+ * tree-ssa-loop-prefetch.c: Likewise.
+ * tree-ssa-loop-unswitch.c: Likewise.
+ * tree-ssa-loop.c: Likewise.
+ * tree-ssa-propagate.c: Likewise.
+ * tree-ssa-structalias.c: Likewise.
+ * tree-ssa-tail-merge.c: Likewise.
+ * tree-ssa-threadedge.c: Likewise.
+ * tree-ssa-threadupdate.c: Likewise.
+ * tree-ssa-uncprop.c: Likewise.
+ * tree-ssa-uninit.c: Likewise.
+ * tree-ssa.c: Likewise.
+ * value-prof.c: Likewise.
+ * var-tracking.c: Likewise.
+ * web.c: Likewise.
+
+ * config/m32r/m32r.c: Include dbxout.h.
+ * config/pa/pa.c: Likewise.
+ * config/rs6000/rs6000.c: Likewise.
+
+ * Makefile.in: Fix dependencies.
+ * config/rs6000/t-rs5000: Likewise.
+
+2012-05-31 Aldy Hernandez <aldyh@redhat.com>
+
+ PR tree-optimization/52558
+ * cfg.c (alloc_aux_for_edge): Fix comment.
+ (alloc_aux_for_edge): Remove static.
+ * basic-block.h (alloc_aux_for_edge): Protoize.
+ * tree-ssa-loop-im.c (execute_sm_if_changed): New.
+ (execute_sm_if_changed_flag): New.
+ (execute_sm_if_changed_flag_set): New.
+ (execute_sm): Do not generate data races unless requested.
+ (tree_ssa_lim_initialize): Call alloc_aux_for_edges.
+ (tree_ssa_lim_finalize): Call free_aux_for_edges.
+ * gimple.h (block_in_transaction): New.
+ (gimple_in_transaction): Use block_in_transaction.
+
+2012-05-31 Georg-Johann Lay <avr@gjlay.de>
+
+ PR target/51345
+ * config/avr/avr.opt (-msp8): Document it.
+ * doc/invoke.texi (AVR Options): Ditto. And document related
+ built-in macros.
+
+2012-05-31 Diego Novillo <dnovillo@google.com>
+
+ * configure.ac (CXX_FOR_BUILD): Define and substitute.
+ (BUILD_CXXFLAGS): Define and substitute.
+ * Makefile.in (BUILD_CXXFLAGS): Define.
+ (CXX_FOR_BUILD): Define.
+ (COMPILER_FOR_BUILD): Set to CXX_FOR_BUILD if building with C++.
+ (LINKER_FOR_BUILD): Likewise.
+ (BUILD_COMPILERFLAGS): Set to BUILD_CXXFLAGS if building with C++.
+ (BUILD_LINKERFLAGS): Likewise.
+ * configure: Regenerate.
+
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * Makefile.in: Fix many dependencies.
+ * tree-profile.c: Don't include regs.h.
+ * tree-vectorizer.c: Don't include cfglayout.h.
+ * tree-vect-stmts.c: Likewise.
+ * tree-vect-slp.c: Likewise.
+ * tree-vect-loop.c: Likewise.
+ * reg-stack.c: Likewise.
+ * tree-ssa-loop-manip.c: Likewise.
+ * toplev.c: Likewise.
+ * varasm.c: Don't include cfglayout.h, basic-block.h,
+ and tree-iterator.h.
+ * tree-cfgcleanup.c: Don't include cfglayout.h.
+ * passes.c: Don't include cfglayout.h, dwarf2asm.h,
+ dwarf2out.h, dbxout.h, sdbout.h, and xcoffout.h.
+ * cgraphclones.c: Don't include plugin.h.
+
+2012-05-31 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/t-avr: Correct avr-mmcu.texi dependencies.
+ (s-avr-mmcu-texi): Don't sed on gen-avr-mmcu-texi output.
+ * doc/avr-mmcu.texi (svn:eol-style): Set to native.
+
+2012-05-31 Richard Guenther <rguenther@suse.de>
+
+ * tree-loop-distribution.c (struct partition_s): New struct,
+ typedef and vector type.
+ (partition_alloc, partition_free): New functions.
+ (generate_loops_for_partition, generate_builtin,
+ generate_code_for_partition, rdg_flag_uses, rdg_flag_vertex,
+ rdg_flag_vertex_and_dependent, rdg_flag_loop_exits,
+ build_rdg_partition_for_component, can_generate_builtin,
+ similar_memory_accesses, fuse_partitions_with_similar_memory_accesses,
+ rdg_build_partitions, dump_rdg_partitions, debug_rdg_partitions,
+ number_of_rw_in_partition, partition_contains_all_rw,
+ ldist_gen): Use partition_t instead of bitmap.
+
+2012-05-31 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/gen-avr-mmcu-texi.c: Sort MCUs.
+ * doc/avr-mmcu.texi: Regenerate.
+
+2012-05-31 Richard Guenther <rguenther@suse.de>
+
+ * tree-loop-distribution.c (stmt_has_scalar_dependences_outside_loop):
+ Use FOR_EACH_SSA_DEF_OPERAND.
+ (generate_builtin): Adjust.
+ (stmt_generated_in_another_partition): Remove.
+ (add_scalar_computations_to_partition): Likewise.
+ (rdg_build_partitions): Do not call
+ add_scalar_computations_to_partition.
+
+2012-05-31 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tree-dfa.c (get_ref_base_and_extent): Compute the offset using
+ double ints throughout.
+ * tree-sra.c (build_user_friendly_ref_for_offset) <RECORD_TYPE>:
+ Check that the position of the field is representable as an integer.
+
+2012-05-31 Richard Guenther <rguenther@suse.de>
+
+ * tree-data-ref.c (dr_analyze_innermost): Properly convert
+ the MEM_REF offset to sizetype.
+
+2012-05-31 Georg-Johann Lay <avr@gjlay.de>
+
+ * doc/invoke.texi (AVR Options): Fix typos.
+
+2012-05-31 Hans-Peter Nilsson <hp@axis.com>
+
+ * config/cris/cris.h (CC1_SPEC): Pass through all -march=
+ and -mcpu= options.
+ (ASM_SPEC): Ditto, not just -march=v32, but translate non-v10,
+ non-v32 into --march=v0_v0_v10.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira-int.h (target_ira_int): Rename x_move_cost to
+ x_ira_register_move_cost, x_may_move_in_cost to
+ x_ira_may_move_in_cost and x_may_move_out_cost to
+ x_ira_may_move_out_cost. Delete the old fields with
+ those names and also x_ira_max_register_move_cost,
+ x_ira_max_may_move_in_cost and x_ira_max_may_move_out_cost.
+ (move_cost, may_move_in_cost, may_move_out_cost)
+ (ira_max_register_move_cost, ira_max_may_move_in_cost)
+ (ira_max_may_move_out_cost): Delete.
+ * ira.c (init_move_cost): Rename to...
+ (ira_init_register_move_cost): ...this, deleting the old
+ function with that name. Apply above variable renamings.
+ Retain asserts for null fields.
+ (ira_init_once): Don't initialize register move costs here.
+ (free_register_move_costs): Apply above variable renamings.
+ Remove code for deleted fields.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira.c (init_move_cost): Adjust choice of subclasses to match
+ the current ira_init_register_move_cost choice. Use
+ ira_class_subset_p instead of reg_class_subset_p.
+ (ira_init_register_move_cost): Assert that move_cost,
+ may_move_in_cost and may_move_out_cost already hold the desired
+ values for their ira_* equivalents. For the latter two,
+ ignore classes that can't store a register of the given mode.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira.c (setup_allocno_and_important_classes): Use
+ ira_class_hard_regs_num to check whether a class has any
+ allocatable registers.
+ (ira_init_register_move_cost): Likewise.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira.c (init_move_cost): Adjust local variable names to match
+ file conventions. Use ira_assert instead of gcc_assert.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * regs.h (move_table, move_cost, may_move_in_cost, may_move_out_cost):
+ Move these definitions and associated target_globals fields to...
+ * ira-int.h: ...here.
+ * rtl.h (init_move_cost): Delete.
+ * reginfo.c (last_mode_for_init_move_cost, init_move_cost): Move to...
+ * ira.c: ...here, making the latter static.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira-costs.c (copy_cost): Use ira_init_register_move_cost_if_necessary
+ and ira_register_move_cost instead of init_move_cost and move_cost.
+
+2012-05-31 Richard Sandiford <rdsandiford@googlemail.com>
+
+ * ira.h (target_ira): Delete x_ira_available_class_regs.
+ (ira_available_class_regs): Delete.
+ * ira.c (setup_available_class_regs): Delete.
+ (setup_alloc_classes): Don't call it.
+ (setup_pressure_classes): Use ira_class_hard_regs_num instead of
+ ira_available_class_regs.
+ * haifa-sched.c (print_curr_reg_pressure, setup_insn_reg_pressure_info)
+ (model_spill_cost): Likewise.
+ * ira-build.c (low_pressure_loop_node_p): Likewise.
+ * ira-color.c (color_pass): Likewise.
+ * ira-emit.c (change_loop): Likewise.
+ * ira-lives.c (inc_register_pressure, dec_register_pressure)
+ (single_reg_class, ira_implicitly_set_insn_hard_regs)
+ (process_bb_node_lives): Likewise.
+ * loop-invariant.c (gain_for_invariant): Likewise.
+
+2012-05-30 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
+
+ PR target/52999
+ * config/pa/pa.c (TARGET_SECTION_TYPE_FLAGS): Define.
+ (pa_section_type_flags): New.
+ (pa_legitimate_constant_p): Revert previous change.
+
+2012-05-30 Steven Bosscher <steven@gcc.gnu.org>
+
+ * ira.c (allocate_initial_values): Make static.
+
+2012-05-30 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (legitimize_tls_address) <TLS_MODEL_INITIAL_EXEC>:
+ Generate tls_initial_exec_64_sun only when !TARGET_X32.
+
+2012-05-30 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53501
+ * fold-const.c (fold_binary_loc): Make sure to call
+ fold_plusminus_mult_expr with the original sign of operands.
+
+2012-05-30 Steven Bosscher <steven@gcc.gnu.org>
+
+ * Makefile.in: Fix many dependencies.
+ (DWARF2_H): Depend on dwarf2.def.
+ (RTL_ERROR_H): Depend on rtl-error.h.
+ (TREE_PRETTY_PRINT_H, GIMPLE_PRETTY_PRINT_H): New. Replace
+ all gimple-pretty-print.h and tree-pretty-print.h references.
+
+2012-05-30 Marc Glisse <marc.glisse@inria.fr>
+
+ * simplify-rtx.c (simplify_binary_operation_1): Optimize shuffle of
+ concatenations.
+
+2012-05-30 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53522
+ * tree-emutls.c (gen_emutls_addr): Do not add globals to
+ referenced-vars.
+
+2012-05-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * explow.c (probe_stack_range): Restore simple control flow and stop
+ again when the probe cannot be generated if HAVE_check_stack.
+
+2012-05-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/53519
+ * combine.c (simplify_shift_const_1) <case NOT>: Use constm1_rtx
+ instead of GEN_INT (GET_MODE_MASK (mode)) as second operand of XOR.
+
+2012-05-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * config/arm/arm.c (arm_evpc_neon_vrev): Adjust off by one error.
+
+2012-05-29 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ PR debug/53453
+ * doc/tm.texi: Update.
+ * doc/tm.texi.in (SDB and DWARF) <TARGET_FORCE_AT_COMP_DIR>: Add @hook.
+ * target.def (force_at_comp_dir): New hook.
+ * config/darwin.h (TARGET_FORCE_AT_COMP_DIR): Define.
+ * dwarf2out.c (dwarf2out_finish): Check targetm.force_at_comp_dir.
+
+2012-05-29 Jack Howarth <howarth@bromo.med.uc.edu>
+
+ * config/darwin.h (STARTFILE_SPEC): Do not use -lbundle1.o when
+ Darwin >= 10.
+ (DARWIN_DYLIB1_SPEC): Do not use -ldylib1.10.5.o when Darwin >= 10.
+ (DARWIN_CRT1_SPEC): Use -lcrt1.10.6.o when Darwin >= 10.
+
+2012-05-29 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51340
+ * config/sh/sh.c (sh_option_override): Set TARGET_FMAC if
+ flag_unsafe_math_optimizations is set.
+ * doc/invoke.texi (SH Options): Add -mno-fused-madd description.
+ Update description of -mfused-madd.
+
+2012-05-29 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/52941
+ * config/sh/predicates.md (atomic_arith_operand,
+ atomic_logical_operand): New predicates.
+ * config/sh/sh.c (sh_option_override): Check atomic options.
+ * config/sh/sh.h (TARGET_ANY_ATOMIC, UNSUPPORTED_ATOMIC_OPTIONS,
+ UNSUPPORTED_HARD_ATOMIC_CPU): New macros.
+ (DRIVER_SELF_SPECS): Use UNSUPPORTED_ATOMIC_OPTIONS and
+ UNSUPPORTED_HARD_ATOMIC_CPU.
+ * config/sh/sync.md: Update description comments.
+ (I12): New mode iterator.
+ (fetchop_predicate, fetchop_constraint): New code attributes.
+ (atomic_compare_and_swapsi_hard, atomic_compare_and_swap<mode>_hard,
+ atomic_exchangesi_hard, atomic_exchange<mode>_hard,
+ atomic_fetch_<fetchop_name>si_hard,
+ atomic_fetch_<fetchop_name><mode>_hard,
+ atomic_fetch_nandsi_hard, atomic_fetch_nand<mode>_hard,
+ atomic_<fetchop_name>_fetchsi_hard,
+ atomic_<fetchop_name>_fetch<mode>_hard,
+ atomic_nand_fetchsi_hard, atomic_nand_fetch<mode>_hard,
+ atomic_test_and_set_hard): New insns.
+ (atomic_compare_and_swap<mode>_soft, atomic_exchange<mode>_soft,
+ atomic_fetch_<fetchop_name><mode>_soft, atomic_fetch_nand<mode>_soft,
+ atomic_<fetchop_name>_fetch<mode>_soft, atomic_nand_fetch<mode>_soft,
+ atomic_test_and_set_soft): Use same formatting for the first line of
+ the asm block as in new insns above.
+ (atomic_compare_and_swap<mode>, atomic_exchange<mode>,
+ atomic_fetch_<fetchop_name><mode>, atomic_<fetchop_name>_fetch<mode>,
+ atomic_test_and_set): Integrate new *_hard insns into expanders.
+ * config/sh/sh.opt (mhard-atomic): New option.
+ * doc/invoke.texi (SH Options): Document it.
+
+2012-05-29 Meador Inge <meadori@codesourcery.com>
+
+ * c-decl.c (c_push_function_context): Always create a new language
+ function.
+ (c_pop_function_context): Clear the language function created in
+ c_push_function_context.
+
+2012-05-29 Matt Turner <mattst88@gmail.com>
+
+ * config/alpha/ev6.md: (define_bypass "ev6_fmul,ev6_fadd"): New.
+ (define_bypass "ev6_fcmov"): New.
+
+2012-05-29 Steven Bosscher <steven@gcc.gnu.org>
+
+ * integrate.c: Remove.
+ * integrate.h: Remove.
+ * Makefile.in: Remove make rules for integrate.c and INTEGRATE_H.
+ * config/arm/t-arm: Remove INTEGRATE_H dependency for target files.
+ * config/rs6000/t-rs6000: Likewise
+ * config/spu/t-spu-elf: Likewise.
+ * function.h (get_hard_reg_initial_val, has_hard_reg_initial_val,
+ get_hard_reg_initial_reg, emit_initial_value_sets): Move prototypes
+ from integrate.h to here.
+ (initial_value_entry): New prototype.
+ * reload.h (allocate_initial_values): Remove prototype.
+ * tree.h (set_decl_abstract_flags, set_decl_origin_self): Likewise.
+ * cse.c (fixed_base_plus_p): Don't handle virtual registers for
+ integrate.c.
+ * dwarf2out.c (set_decl_origin_self, set_block_origin_self,
+ set_decl_abstract_flags, set_block_abstract_flags): Move from
+ integrate.c to here, the only user.
+ * expmed.c (extract_fixed_bit_field): Remove outdated comment
+ about integrate.c.
+ * function.c: Don't include integrate.h.
+ (struct initial_value_pair, struct initial_value_struct,
+ get_hard_reg_initial_val, has_hard_reg_initial_val,
+ get_hard_reg_initial_reg, emit_initial_value_sets): Move from
+ integrate.c to here.
+ (initial_value_entry): New function.
+ * genemit.c (main): Don't print integrate.h include line.
+ * ira.c: Don't include integrate.h.
+ (allocate_initial_values): Move from integrate.c to here.
+ (ira): Update allocate_initial_values call.
+ * tree-inline.c: Don't include integrate.h.
+ (function_attribute_inlinable_p): Moved from integrate.c to here.
+ * cfgexpand.c: Don't include integrate.h.
+ * except.c: Likewise.
+ * langhooks.c: Likewise.
+ * passes.c: Likewise.
+ * toplev.c: Likewise.
+ * config/frv/frv.c: Likewise.
+ * config/pa/pa.c: Likewise.
+ * config/spu/spu.c: Likewise.
+ * config/epiphany/epiphany.c: Likewise.
+ * config/mep/mep.c: Likewise.
+ * config/score/score.c: Likewise.
+ * config/picochip/picochip.c: Likewise.
+ * config/sh/sh.c: Likewise.
+ * config/alpha/alpha.c: Likewise.
+ * config/microblaze/microblaze.c: Likewise.
+ * config/mips/mips.c: Likewise.
+ * config/v850/v850.c: Likewise.
+ * config/mmix/mmix.c: Likewise.
+ * config/bfin/bfin.c: Likewise.
+ * config/arm/arm.c: Likewise.
+ * config/s390/s390.c: Likewise.
+ * config/m32r/m32r.c: Likewise.
+ * config/rs6000/rs6000.c: Likewise.
+ * config/c6x/c6x.c: Include function.h instead of integrate.h.
+ * config/tilegx/tilegx.c: Likewise.
+ * config/tilepro/tilepro.c: Likewise.
+
+2012-05-29 Georg-Johann Lay <avr@gjlay.de>
+
+ * config/avr/t-avr (s-avr-mmcu-texi): Call
+ gen-avr-mmcu-texi$(build_exeext) via ./ and don't assume . is in PATH.
+
+2012-05-29 Michael Matz <matz@suse.de>
+
+ * rtl.h (assign_stack_temp, assign_stack_temp_for_type,
+ assign_temp): Remove 'keep' argument.
+ (mark_temp_addr_taken): Remove prototype.
+ * tree.h (expand_decl): Remove prototype.
+ * function.c (struct temp_slot): Remove addr_taken and keep member.
+ (assign_stack_temp_for_type) Don't initialize above, remove
+ keep argument.
+ (assign_stack_temp, assign_temp): Remove keep argument.
+ (mark_temp_addr_taken): Remove.
+ (preserve_temp_slots): Remove handling of addr_taken and keep members.
+ (free_temp_slots): Ditto.
+ * expr.c (expand_expr_real_1 <COMPOUND_LITERAL_EXPR>): Remove
+ dead code.
+ * stmt.c (expand_asm_operands): Remove dead code.
+ (expand_decl): Remove.
+ * c-decl.c (finish_struct): Don't call expand_decl.
+ * builtins.c (expand_builtin_cexpi): Adjust calls to assign_temp
+ and assign_stack_temp.
+ * calls.c (save_fixed_argument_area, initialize_argument_information,
+ expand_call, emit_library_call_value_1, store_one_arg): Ditto.
+ * expmed.c (extract_bit_field_1): Ditto.
+ * expr.c (emit_group_load_1, emit_group_store,
+ copy_blkmode_from_reg, emit_push_insn, expand_assignment,
+ store_field, expand_constructor, expand_cond_expr_using_cmove,
+ expand_expr_real_2, expand_expr_real_1): Ditto.
+ * stmt.c (expand_asm_operands, expand_return): Ditto.
+
+ * function.c (pop_temp_slots): Call free_temp_slots.
+ * calls.c (store_one_arg): Don't call preserve_temp_slots or
+ free_temp_slots.
+ * expr.c (expand_assignment): Don't call free_temp_slots.
+
+ * config/arm/arm.c (neon_expand_vector_init): Ditto.
+ * config/i386/i386.c (ix86_expand_vector_set): Ditto.
+ (ix86_expand_vector_extract): Ditto.
+ * config/ia64/ia64.c (spill_xfmode_rfmode_operand,
+ ia64_expand_movxf_movrf): Ditto.
+ * config/mips/mips.c (mips_expand_vi_general): Ditto.
+ * config/mmix/mmix.md (floatdisf2, floatunsdisf2, truncdfsf2,
+ extendsfdf2): Ditto.
+ * config/rs6000/rs6000.c (rs6000_expand_vector_init,
+ rs6000_expand_vector_set, rs6000_expand_vector_extract,
+ rs6000_allocate_stack_temp): Ditto.
+ * config/rs6000/rs6000.md (fix_trunctfsi2_fprs): Ditto.
+ * config/sparc/sparc.c (emit_soft_tfmode_libcall,
+ sparc_emit_float_lib_cmp, sparc_emit_float_lib_cmp,
+ sparc_expand_vector_init): Ditto.
+
+2012-05-29 Michael Matz <matz@suse.de>
+
+ * c-tree.h (c_expand_decl): Remove prototype.
+
+ * expr.c (expand_expr_real_1 <normal_inner_ref>): Don't allocate
+ a kept temp.
+ (expand_expr_real_1 <COMPOUND_LITERAL_EXPR>): Make unreachable.
+ * gimple-fold.c (canonicalize_constructor_val): Canonicalize
+ COMPOUND_LITERAL_EXPR.
+ * function.c (expand_function_start): Don't call expand_decl,
+ instead assert that we have RTL assigned.
+ * tree-ssa-live.c (remove_unused_locals): Clear
+ nonlocal_goto_save_area if its backing variable is removed.
+ * stmt.c (expand_asm_operands): Remove handling of non-lvalues
+ as mem inputs.
+ (expand_decl): Assert that this does nothing.
+ * calls.c (expand_call): Don't call mark_temp_addr_taken.
+
+2012-05-29 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53516
+ * tree-data-ref.c (stmt_with_adjacent_zero_store_dr_p): Reject
+ bitfield accesses.
+ * tree-vect-data-refs.c (vect_analyze_data_refs): Likewise.
+
+2012-05-29 Joseph Myers <joseph@codesourcery.com>
+
+ * LANGUAGES: Fix typos.
+ * Makefile.in: Fix typos.
+ * alias.c: Fix typos.
+ * auto-inc-dec.c: Fix typos.
+ * bb-reorder.c: Fix typos.
+ * cfgcleanup.c: Fix typos.
+ * cgraph.c: Fix typos.
+ * cgraph.h: Fix typos.
+ * cgraphunit.c: Fix typos.
+ * collect2-aix.h: Fix typos.
+ * collect2.c: Fix typos.
+ * compare-elim.c: Fix typos.
+ * config/alpha/vms.h: Fix typos.
+ * config/arm/README-interworking: Fix typos.
+ * config/arm/arm.c: Fix typos.
+ * config/arm/iterators.md: Fix typos.
+ * config/arm/vxworks.h: Fix typos.
+ * config/avr/avr.c: Fix typos.
+ * config/avr/avr.h: Fix typos.
+ * config/avr/avr.md: Fix typos.
+ * config/avr/builtins.def: Fix typos.
+ * config/c6x/c6x.c: Fix typos.
+ * config/cr16/cr16.c: Fix typos.
+ * config/cr16/cr16.md: Fix typos.
+ * config/cris/cris.md: Fix typos.
+ * config/darwin.c: Fix typos.
+ * config/darwin.opt: Fix typos.
+ * config/i386/i386-c.c: Fix typos.
+ * config/i386/i386.c: Fix typos.
+ * config/ia64/ia64.c: Fix typos.
+ * config/m68k/cf.md: Fix typos.
+ * config/mep/mep.c: Fix typos.
+ * config/microblaze/microblaze.c: Fix typos.
+ * config/microblaze/microblaze.h: Fix typos.
+ * config/mn10300/mn10300.c: Fix typos.
+ * config/mn10300/mn10300.md: Fix typos.
+ * config/pa/pa.c: Fix typos.
+ * config/picochip/picochip.h: Fix typos.
+ * config/rs6000/a2.md: Fix typos.
+ * config/rs6000/rs6000.c: Fix typos.
+ * config/rs6000/vector.md: Fix typos.
+ * config/rx/rx.md: Fix typos.
+ * config/rx/rx.opt: Fix typos.
+ * config/s390/2097.md: Fix typos.
+ * config/s390/s390.c: Fix typos.
+ * config/s390/s390.h: Fix typos.
+ * config/sh/sh.c: Fix typos.
+ * config/sh/sh.md: Fix typos.
+ * config/sparc/sync.md: Fix typos.
+ * config/spu/spu.c: Fix typos.
+ * config/spu/spu.md: Fix typos.
+ * config/vms/vms.c: Fix typos.
+ * config/vxworks-dummy.h: Fix typos.
+ * config/vxworks.h: Fix typos.
+ * cselib.c: Fix typos.
+ * df-scan.c: Fix typos.
+ * df.h: Fix typos.
+ * doc/extend.texi: Fix typos.
+ * doc/install.texi: Fix typos.
+ * doc/invoke.texi: Fix typos.
+ * doc/md.texi: Fix typos.
+ * doc/plugins.texi: Fix typos.
+ * doc/rtl.texi: Fix typos.
+ * dse.c: Fix typos.
+ * dwarf2asm.c: Fix typos.
+ * dwarf2out.c: Fix typos.
+ * except.h: Fix typos.
+ * expr.c: Fix typos.
+ * fold-const.c: Fix typos.
+ * gcc.c: Fix typos.
+ * gcse.c: Fix typos.
+ * genautomata.c: Fix typos.
+ * gengtype-state.c: Fix typos.
+ * gengtype.c: Fix typos.
+ * genhooks.c: Fix typos.
+ * gimple-fold.c: Fix typos.
+ * gimple-pretty-print.c: Fix typos.
+ * gimple.c: Fix typos.
+ * gimple.h: Fix typos.
+ * gimplify.c: Fix typos.
+ * graphite-interchange.c: Fix typos.
+ * graphite-sese-to-poly.c: Fix typos.
+ * ifcvt.c: Fix typos.
+ * input.c: Fix typos.
+ * ipa-cp.c: Fix typos.
+ * ipa-inline-analysis.c: Fix typos.
+ * ipa-inline-transform.c: Fix typos.
+ * ipa-inline.c: Fix typos.
+ * ipa-pure-const.c: Fix typos.
+ * ipa-ref.h: Fix typos.
+ * ipa-reference.c: Fix typos.
+ * ipa-utils.c: Fix typos.
+ * ipa.c: Fix typos.
+ * ira-emit.c: Fix typos.
+ * ira-lives.c: Fix typos.
+ * lto-streamer.c: Fix typos.
+ * lto-streamer.h: Fix typos.
+ * lto-wrapper.c: Fix typos.
+ * mcf.c: Fix typos.
+ * mode-switching.c: Fix typos.
+ * modulo-sched.c: Fix typos.
+ * plugin.c: Fix typos.
+ * postreload.c: Fix typos.
+ * sched-deps.c: Fix typos.
+ * sel-sched-ir.c: Fix typos.
+ * sel-sched-ir.h: Fix typos.
+ * sel-sched.c: Fix typos.
+ * sese.c: Fix typos.
+ * stor-layout.c: Fix typos.
+ * target-hooks-macros.h: Fix typos.
+ * target.def: Fix typos.
+ * trans-mem.c: Fix typos.
+ * tree-eh.c: Fix typos.
+ * tree-predcom.c: Fix typos.
+ * tree-sra.c: Fix typos.
+ * tree-ssa-address.c: Fix typos.
+ * tree-ssa-loop-ivopts.c: Fix typos.
+ * tree-ssa-loop-niter.c: Fix typos.
+ * tree-ssa-math-opts.c: Fix typos.
+ * tree-ssa-pre.c: Fix typos.
+ * tree-ssa-propagate.c: Fix typos.
+ * tree-ssa-reassoc.c: Fix typos.
+ * tree-ssa-sccvn.c: Fix typos.
+ * tree-ssa-ter.c: Fix typos.
+ * tree-ssa-uninit.c: Fix typos.
+ * tree-ssanames.c: Fix typos.
+ * tree-vect-generic.c: Fix typos.
+ * tree-vect-slp.c: Fix typos.
+ * tree.c: Fix typos.
+ * tree.h: Fix typos.
+ * varasm.c: Fix typos.
+ * varpool.c: Fix typos.
+
+2012-05-29 Joseph Myers <joseph@codesourcery.com>
+
+ * doc/include/texinfo.tex: Update to version 2012-05-16.16.
+
+2012-05-29 Richard Guenther <rguenther@suse.de>
+
+ * tree-dfa.c (find_vars_r): Do not call add_referenced_vars
+ for globals.
+ (add_referenced_var_1): Re-organize. Assert we are not
+ called for globals.
+ (remove_referenced_var): Likewise.
+ * varpool.c (add_new_static_var): Use create_tmp_var_raw.
+ * tree-mudflap.c (execute_mudflap_function_ops): Do not
+ call add_referenced_var on globals.
+ * matrix-reorg.c (transform_access_sites): Likewise.
+
+2012-05-29 Steven Bosscher <steven@gcc.gnu.org>
+
+ * alias.c (reg_known_value): Make this a VEC.
+ (reg_known_equiv_p): Make this an sbitmap.
+ (reg_known_value_size): Remove.
+ (get_reg_known_value, set_reg_known_value, get_reg_known_equiv_p,
+ set_reg_known_equiv_p): Update for reg_known_value and
+ reg_known_value_size data structure change.
+ (init_alias_analysis, end_alias_analysis): Likewise.
+
+2012-05-29 Jakub Jelinek <jakub@redhat.com>
+
+ PR middle-end/53510
+ * input.c (read_line): Use XRESIZEVEC instead of XNEWVEC
+ to avoid leaking memory. No need to handle memory allocation
+ failure. Double string_len on each reallocation instead of adding 2.
+ * gcov.c (read_line): Likewise.
+
2012-05-29 Hans-Peter Nilsson <hp@axis.com>
* config/cris/cris.h (TARGET_HAS_BREAK, TARGET_TRAP_USING_BREAK8):
@@ -14,8 +764,7 @@
2012-05-28 Hans-Peter Nilsson <hp@axis.com>
- * doc/md.texi (stack_protect_test): Remove negation of branch to
- label.
+ * doc/md.texi (stack_protect_test): Remove negation of branch to label.
(Standard Names): Fix typos in documentation of atomic patterns.
2012-05-27 Nathan Sidwell <nathan@acm.org>
@@ -1196,7 +1945,8 @@
* doc/options.texi (EnabledBy): Document
* opts.c: Include opts.h and options.h before tm.h.
(finish_options): Do not handle some sub-options here...
- (common_handle_option): ... instead call common_handle_option_auto here.
+ (common_handle_option): ... instead call common_handle_option_auto
+ here.
* optc-gen.awk: Handle EnabledBy.
* opth-gen.awk: Declare common_handle_option_auto.
* common.opt (Wuninitialized): Use EnabledBy. Delete Init.
diff --git a/gcc/DATESTAMP b/gcc/DATESTAMP
index 0353f11c42f..aeed0571740 100644
--- a/gcc/DATESTAMP
+++ b/gcc/DATESTAMP
@@ -1 +1 @@
-20120529
+20120601
diff --git a/gcc/LANGUAGES b/gcc/LANGUAGES
index 805e9b49cac..c1c48b37a41 100644
--- a/gcc/LANGUAGES
+++ b/gcc/LANGUAGES
@@ -3,7 +3,7 @@ Right now there is no documentation for the GCC tree -> rtl interfaces
Such documentation would be of great benefit to the project. Until such
time as we can formally start documenting the interface this file will
-serve as a repository for information on these interface and any incompatable
+serve as a repository for information on these interface and any incompatible
changes we've made.
2004-09-09:
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 9bbfd906329..f63ed73d066 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -293,7 +293,7 @@ mkinstalldirs=$(SHELL) $(srcdir)/../mkinstalldirs
# write_entries_to_file - writes each entry in a list
# to the specified file. Entries are written in chunks of
-# $(write_entries_to_file_split) to accomodate systems with
+# $(write_entries_to_file_split) to accommodate systems with
# severe command-line-length limitations.
# Parameters:
# $(1): variable containing entries to iterate over
@@ -450,8 +450,8 @@ SPLAY_TREE_H= $(srcdir)/../include/splay-tree.h
FIBHEAP_H = $(srcdir)/../include/fibheap.h
PARTITION_H = $(srcdir)/../include/partition.h
MD5_H = $(srcdir)/../include/md5.h
-DWARF2_H = $(srcdir)/../include/dwarf2.h
-XREGEX_H = $(srcdir)/../include/xregex.h
+DWARF2_H = $(srcdir)/../include/dwarf2.h $(srcdir)/../include/dwarf2.def
+XREGEX_H = $(srcdir)/../include/xregex.h
FNMATCH_H = $(srcdir)/../include/fnmatch.h
# Linker plugin API headers
@@ -464,7 +464,7 @@ NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
# autoconf sets SYSTEM_HEADER_DIR to one of the above.
-# Purge it of unneccessary internal relative paths
+# Purge it of unnecessary internal relative paths
# to directories that might not exist yet.
# The sed idiom for this is to repeat the search-and-replace until it doesn't match, using :a ... ta.
# Use single quotes here to avoid nested double- and backquotes, this
@@ -731,15 +731,27 @@ DIR = ../gcc
# Native compiler for the build machine and its switches.
CC_FOR_BUILD = @CC_FOR_BUILD@
+CXX_FOR_BUILD = @CXX_FOR_BUILD@
BUILD_CFLAGS= @BUILD_CFLAGS@ -DGENERATOR_FILE
+BUILD_CXXFLAGS = @BUILD_CXXFLAGS@ -DGENERATOR_FILE
# Native compiler that we use. This may be C++ some day.
+ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
COMPILER_FOR_BUILD = $(CC_FOR_BUILD)
BUILD_COMPILERFLAGS = $(BUILD_CFLAGS)
+else
+COMPILER_FOR_BUILD = $(CXX_FOR_BUILD)
+BUILD_COMPILERFLAGS = $(BUILD_CXXFLAGS)
+endif
# Native linker that we use.
+ifneq ($(ENABLE_BUILD_WITH_CXX),yes)
LINKER_FOR_BUILD = $(CC_FOR_BUILD)
BUILD_LINKERFLAGS = $(BUILD_CFLAGS)
+else
+LINKER_FOR_BUILD = $(CXX_FOR_BUILD)
+BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS)
+endif
# Native linker and preprocessor flags. For x-fragment overrides.
BUILD_LDFLAGS=@BUILD_LDFLAGS@
@@ -774,7 +786,7 @@ OPTIONS_H_EXTRA =
# Extra include files that are defined by SourceInclude directives in
# the .opt files
-OPTIONS_C_EXTRA =
+OPTIONS_C_EXTRA = $(PRETTY_PRINT_H)
@option_includes@
@@ -852,7 +864,7 @@ RTL_BASE_H = rtl.h rtl.def $(MACHMODE_H) reg-notes.def insn-notes.def \
$(HASHTAB_H)
FIXED_VALUE_H = fixed-value.h $(MACHMODE_H) double-int.h
RTL_H = $(RTL_BASE_H) genrtl.h vecir.h
-RTL_ERROR_H = $(RTL_H) $(DIAGNOSTIC_CORE_H)
+RTL_ERROR_H = rtl-error.h $(RTL_H) $(DIAGNOSTIC_CORE_H)
READ_MD_H = $(OBSTACK_H) $(HASHTAB_H) read-md.h
PARAMS_H = params.h params.def
BUILTINS_DEF = builtins.def sync-builtins.def omp-builtins.def \
@@ -887,7 +899,6 @@ SCHED_INT_H = sched-int.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) $(DF_H) \
SEL_SCHED_IR_H = sel-sched-ir.h $(INSN_ATTR_H) $(BASIC_BLOCK_H) $(RTL_H) \
$(GGC_H) $(BITMAP_H) vecprim.h $(SCHED_INT_H) $(CFGLOOP_H) $(REGSET_H)
SEL_SCHED_DUMP_H = sel-sched-dump.h $(SEL_SCHED_IR_H)
-INTEGRATE_H = integrate.h
CFGLAYOUT_H = cfglayout.h $(BASIC_BLOCK_H)
CFGLOOP_H = cfgloop.h $(BASIC_BLOCK_H) $(RTL_H) vecprim.h double-int.h \
$(BITMAP_H) sbitmap.h
@@ -932,20 +943,25 @@ TREE_FLOW_H = tree-flow.h tree-flow-inline.h tree-ssa-operands.h \
TREE_SSA_LIVE_H = tree-ssa-live.h $(PARTITION_H) vecprim.h
SSAEXPAND_H = ssaexpand.h $(TREE_SSA_LIVE_H)
PRETTY_PRINT_H = pretty-print.h $(INPUT_H) $(OBSTACK_H)
+TREE_PRETTY_PRINT_H = tree-pretty-print.h $(PRETTY_PRINT_H)
+GIMPLE_PRETTY_PRINT_H = gimple-pretty-print.h $(TREE_PRETTY_PRINT_H)
DIAGNOSTIC_CORE_H = diagnostic-core.h $(INPUT_H) bversion.h diagnostic.def
DIAGNOSTIC_H = diagnostic.h $(DIAGNOSTIC_CORE_H) $(PRETTY_PRINT_H)
+DWARF2OUT_H = dwarf2out.h $(DWARF2_H)
C_PRETTY_PRINT_H = c-family/c-pretty-print.h $(PRETTY_PRINT_H) \
$(C_COMMON_H) $(TREE_H)
SCEV_H = tree-scalar-evolution.h $(GGC_H) tree-chrec.h $(PARAMS_H)
-TREE_DATA_REF_H = tree-data-ref.h omega.h graphds.h $(SCEV_H)
+OMEGA_H = omega.h $(PARAMS_H)
+TREE_DATA_REF_H = tree-data-ref.h $(OMEGA_H) graphds.h $(SCEV_H)
TREE_INLINE_H = tree-inline.h vecir.h
REAL_H = real.h $(MACHMODE_H)
IRA_INT_H = ira.h ira-int.h $(CFGLOOP_H) alloc-pool.h
DBGCNT_H = dbgcnt.h dbgcnt.def
EBITMAP_H = ebitmap.h sbitmap.h
+GRAPHITE_PPL_H = graphite-ppl.h $(TREE_H)
LTO_STREAMER_H = lto-streamer.h $(LINKER_PLUGIN_API_H) $(TARGET_H) \
$(CGRAPH_H) $(VEC_H) vecprim.h $(TREE_H) $(GIMPLE_H) \
- $(GCOV_IO_H) $(DIAGNOSTIC_H)
+ $(GCOV_IO_H) $(DIAGNOSTIC_H) alloc-pool.h
DATA_STREAMER_H = data-streamer.h $(VEC_H) $(LTO_STREAMER_H)
GIMPLE_STREAMER_H = gimple-streamer.h $(LTO_STREAMER_H) $(BASIC_BLOCK_H) \
$(FUNCTION_H)
@@ -956,8 +972,8 @@ TREE_VECTORIZER_H = tree-vectorizer.h $(TREE_DATA_REF_H)
IPA_PROP_H = ipa-prop.h $(TREE_H) $(VEC_H) $(CGRAPH_H) $(GIMPLE_H) alloc-pool.h
GSTAB_H = gstab.h stab.def
BITMAP_H = bitmap.h $(HASHTAB_H) statistics.h
-GCC_PLUGIN_H = gcc-plugin.h highlev-plugin-common.h $(CONFIG_H) $(SYSTEM_H) \
- $(HASHTAB_H)
+GCC_PLUGIN_H = gcc-plugin.h highlev-plugin-common.h plugin.def \
+ $(CONFIG_H) $(SYSTEM_H) $(HASHTAB_H)
PLUGIN_H = plugin.h $(GCC_PLUGIN_H)
PLUGIN_VERSION_H = plugin-version.h configargs.h
LIBFUNCS_H = libfuncs.h $(HASHTAB_H)
@@ -1258,7 +1274,6 @@ OBJS = \
ree.o \
incpath.o \
init-regs.o \
- integrate.o \
internal-fn.o \
ipa-cp.o \
ipa-split.o \
@@ -1876,7 +1891,7 @@ c-decl.o : c-decl.c c-lang.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(C_TREE_H) $(GGC_H) $(TARGET_H) $(FLAGS_H) $(FUNCTION_H) \
output.h debug.h toplev.h intl.h $(TM_P_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(OPTS_H) $(C_PRAGMA_H) gt-c-decl.h $(CGRAPH_H) \
- $(HASHTAB_H) $(LIBFUNCS_H) $(EXCEPT_H) $(LANGHOOKS_DEF_H) \
+ $(HASHTAB_H) $(LANGHOOKS_DEF_H) \
$(TREE_DUMP_H) $(C_COMMON_H) $(CPPLIB_H) $(DIAGNOSTIC_CORE_H) \
$(INPUT_H) langhooks.h pointer-set.h tree-iterator.h \
$(PLUGIN_H) c-family/c-ada-spec.h c-family/c-objc.h
@@ -1894,7 +1909,7 @@ c-objc-common.o : c-objc-common.c c-objc-common.h \
$(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(C_TREE_H) $(FLAGS_H) $(DIAGNOSTIC_H) \
langhooks.h $(GGC_H) $(C_PRETTY_PRINT_H) intl.h \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
c-parser.o : c-parser.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(C_TREE_H) $(C_COMMON_H) $(C_PRAGMA_H) $(CPPLIB_H) \
@@ -1904,13 +1919,13 @@ c-parser.o : c-parser.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
c-family/c-objc.h
c-typeck.o : c-typeck.c c-lang.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(C_TREE_H) $(TARGET_H) $(FLAGS_H) intl.h output.h $(EXPR_H) \
+ $(TREE_H) $(C_TREE_H) $(TARGET_H) $(FLAGS_H) intl.h output.h \
langhooks.h tree-iterator.h $(BITMAP_H) $(GIMPLE_H) \
- c-family/c-objc.h
+ c-family/c-objc.h
-graph.o: graph.c $(SYSTEM_H) coretypes.h $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) output.h \
+graph.o: graph.c $(SYSTEM_H) coretypes.h $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) \
$(RTL_H) $(FUNCTION_H) hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(OBSTACK_H) \
$(CONFIG_H) $(EMIT_RTL_H)
@@ -2050,16 +2065,16 @@ c-family/c-pragma.o: c-family/c-pragma.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
c-family/c-pretty-print.o : c-family/c-pretty-print.c $(C_PRETTY_PRINT_H) \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(DIAGNOSTIC_H) tree-iterator.h intl.h tree-pretty-print.h
+ $(DIAGNOSTIC_H) tree-iterator.h intl.h $(TREE_PRETTY_PRINT_H)
c-family/c-semantics.o : c-family/c-semantics.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) output.h \
+ coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) \
$(C_COMMON_H) $(FUNCTION_H) langhooks.h $(SPLAY_TREE_H) $(TIMEVAR_H) \
tree-iterator.h
c-family/c-ada-spec.o : c-family/c-ada-spec.c c-family/c-ada-spec.h \
$(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(CPP_ID_DATA_H) $(TM_H) \
- coretypes.h tree-iterator.h tree-pass.h output.h
+ coretypes.h tree-iterator.h $(TREE_PASS_H)
c-family/stub-objc.o : c-family/stub-objc.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_H) $(C_COMMON_H) c-family/c-objc.h
@@ -2072,7 +2087,7 @@ default-c.o: config/default-c.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
# Files used by all variants of C and some other languages.
attribs.o : attribs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(FLAGS_H) toplev.h $(DIAGNOSTIC_CORE_H) output.h $(GGC_H) $(TM_P_H) \
+ $(FLAGS_H) $(DIAGNOSTIC_CORE_H) $(GGC_H) $(TM_P_H) \
$(TARGET_H) langhooks.h $(CPPLIB_H) $(PLUGIN_H)
incpath.o: incpath.c incpath.h $(CONFIG_H) $(SYSTEM_H) $(CPPLIB_H) \
@@ -2178,7 +2193,8 @@ trans-mem.o : trans-mem.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(GIMPLE_H) $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_INLINE_H) \
$(DIAGNOSTIC_CORE_H) $(DEMANGLE_H) output.h $(TRANS_MEM_H) \
$(PARAMS_H) $(TARGET_H) langhooks.h \
- tree-pretty-print.h gimple-pretty-print.h $(CFGLOOP_H)
+ $(GIMPLE_PRETTY_PRINT_H) $(CFGLOOP_H) \
+ gt-trans-mem.h
ggc-common.o: ggc-common.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(GGC_H) $(HASHTAB_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) hosthooks.h \
@@ -2201,8 +2217,7 @@ stringpool.o: stringpool.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
convert.o: convert.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(FLAGS_H) convert.h $(DIAGNOSTIC_CORE_H) langhooks.h
-double-int.o: double-int.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- toplev.h $(TREE_H)
+double-int.o: double-int.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H)
# lto-compress.o needs $(ZLIBINC) added to the include flags.
CFLAGS-lto-compress.o += $(ZLIBINC)
@@ -2235,13 +2250,13 @@ lto-cgraph.o: lto-cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(DIAGNOSTIC_CORE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h \
$(HASHTAB_H) langhooks.h $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(CGRAPH_H) $(FUNCTION_H) $(GGC_H) $(DIAGNOSTIC_CORE_H) \
- $(EXCEPT_H) $(TIMEVAR_H) output.h pointer-set.h $(LTO_STREAMER_H) \
+ $(EXCEPT_H) $(TIMEVAR_H) pointer-set.h $(LTO_STREAMER_H) \
$(GCOV_IO_H) $(DATA_STREAMER_H) $(TREE_STREAMER_H)
lto-streamer-in.o: lto-streamer-in.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h \
$(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(TREE_PASS_H) $(CGRAPH_H) \
$(FUNCTION_H) $(GGC_H) $(DIAGNOSTIC_H) $(LIBFUNCS_H) $(EXCEPT_H) debug.h \
- $(TIMEVAR_H) output.h $(IPA_UTILS_H) $(LTO_STREAMER_H) toplev.h \
+ $(TIMEVAR_H) $(IPA_UTILS_H) $(LTO_STREAMER_H) toplev.h \
$(DATA_STREAMER_H) $(GIMPLE_STREAMER_H) $(TREE_STREAMER_H)
lto-streamer-out.o : lto-streamer-out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(DIAGNOSTIC_CORE_H) $(TREE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h \
@@ -2253,7 +2268,7 @@ lto-streamer-out.o : lto-streamer-out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
lto-section-in.o: lto-section-in.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(DIAGNOSTIC_CORE_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) input.h \
$(HASHTAB_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) $(CGRAPH_H) $(FUNCTION_H) \
- $(GGC_H) $(DIAGNOSTIC_CORE_H) $(EXCEPT_H) $(TIMEVAR_H) output.h \
+ $(GGC_H) $(DIAGNOSTIC_CORE_H) $(EXCEPT_H) $(TIMEVAR_H) \
$(LTO_STREAMER_H) lto-compress.h
lto-section-out.o : lto-section-out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(DIAGNOSTIC_CORE_H) $(TREE_H) $(EXPR_H) $(PARAMS_H) input.h \
@@ -2272,7 +2287,7 @@ lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(LTO_SYMTAB_H) toplev.h \
$(DIAGNOSTIC_CORE_H) $(STREAMER_HOOKS_H)
langhooks.o : langhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_INLINE_H) $(RTL_H) insn-config.h $(INTEGRATE_H) \
+ $(TREE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_INLINE_H) $(RTL_H) insn-config.h \
langhooks.h $(TARGET_H) $(LANGHOOKS_DEF_H) $(FLAGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
intl.h $(GIMPLE_H) $(CGRAPH_H) output.h tree-diagnostic.h
tree.o: tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
@@ -2280,129 +2295,127 @@ tree.o: tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) $(HASHTAB_H) $(TARGET_H) output.h $(TM_P_H) \
langhooks.h gt-tree.h $(TREE_INLINE_H) tree-iterator.h \
$(BASIC_BLOCK_H) $(TREE_FLOW_H) $(OBSTACK_H) pointer-set.h \
- tree-pass.h $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) $(CGRAPH_H) $(TIMEVAR_H) \
- $(EXCEPT_H) debug.h intl.h tree-diagnostic.h tree-pretty-print.h \
+ $(TREE_PASS_H) $(LANGHOOKS_DEF_H) $(DIAGNOSTIC_H) $(CGRAPH_H) $(TIMEVAR_H) \
+ $(EXCEPT_H) debug.h intl.h tree-diagnostic.h $(TREE_PRETTY_PRINT_H) \
$(COMMON_TARGET_H)
tree-dump.o: tree-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h toplev.h $(SPLAY_TREE_H) $(TREE_DUMP_H) \
tree-iterator.h $(TREE_PASS_H) $(DIAGNOSTIC_H)
tree-inline.o : tree-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(RTL_H) $(EXPR_H) $(FLAGS_H) $(PARAMS_H) $(INPUT_H) insn-config.h \
+ $(TREE_H) $(RTL_H) $(FLAGS_H) $(PARAMS_H) $(INPUT_H) insn-config.h \
$(HASHTAB_H) langhooks.h $(TREE_INLINE_H) $(CGRAPH_H) \
intl.h $(FUNCTION_H) $(GIMPLE_H) \
debug.h $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_FLOW_H) tree-iterator.h tree-mudflap.h \
- $(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) $(INTEGRATE_H) \
- tree-pretty-print.h
+ $(IPA_PROP_H) value-prof.h $(TREE_PASS_H) $(TARGET_H) \
+ $(TREE_PRETTY_PRINT_H)
print-tree.o : print-tree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(GGC_H) langhooks.h tree-iterator.h \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) gimple-pretty-print.h
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) $(GIMPLE_PRETTY_PRINT_H)
stor-layout.o : stor-layout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(PARAMS_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) output.h $(RTL_H) \
+ $(TREE_H) $(PARAMS_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(RTL_H) \
$(GGC_H) $(TM_P_H) $(TARGET_H) langhooks.h $(REGS_H) gt-stor-layout.h \
$(DIAGNOSTIC_CORE_H) $(CGRAPH_H) $(TREE_INLINE_H) $(TREE_DUMP_H) $(GIMPLE_H)
tree-ssa-tail-merge.o: tree-ssa-tail-merge.c \
$(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(BITMAP_H) \
- $(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) output.h \
+ $(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
$(GIMPLE_H) $(FUNCTION_H) \
$(TIMEVAR_H) tree-ssa-sccvn.h \
- $(CGRAPH_H) gimple-pretty-print.h tree-pretty-print.h $(PARAMS_H)
+ $(CGRAPH_H) $(GIMPLE_PRETTY_PRINT_H) $(PARAMS_H)
tree-ssa-structalias.o: tree-ssa-structalias.c \
$(SYSTEM_H) $(CONFIG_H) coretypes.h $(TM_H) $(GGC_H) $(OBSTACK_H) $(BITMAP_H) \
- $(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) output.h \
+ $(FLAGS_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
$(GIMPLE_H) $(HASHTAB_H) $(FUNCTION_H) $(CGRAPH_H) \
$(TREE_PASS_H) $(TIMEVAR_H) alloc-pool.h $(SPLAY_TREE_H) $(PARAMS_H) \
$(CGRAPH_H) $(ALIAS_H) pointer-set.h
tree-ssa-uninit.o : tree-ssa-uninit.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
+ $(TREE_H) $(TM_P_H) $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) langhooks.h tree-pass.h $(BASIC_BLOCK_H) $(BITMAP_H) \
+ $(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
$(FLAGS_H) $(HASHTAB_H) pointer-set.h \
- $(GIMPLE_H) $(TREE_INLINE_H) gimple-pretty-print.h
+ $(GIMPLE_H) $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa.o : tree-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
+ $(TREE_H) $(TM_P_H) $(EXPR_H) $(DIAGNOSTIC_H) \
toplev.h $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) langhooks.h $(TREE_PASS_H) $(BASIC_BLOCK_H) $(BITMAP_H) \
$(FLAGS_H) $(GGC_H) $(HASHTAB_H) pointer-set.h \
- $(GIMPLE_H) $(TREE_INLINE_H) $(TARGET_H) tree-pretty-print.h \
- gimple-pretty-print.h $(CFGLOOP_H)
+ $(GIMPLE_H) $(TREE_INLINE_H) $(TARGET_H) \
+ $(GIMPLE_PRETTY_PRINT_H) $(CFGLOOP_H)
tree-into-ssa.o : tree-into-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
+ $(TREE_H) $(TM_P_H) $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
langhooks.h domwalk.h $(TREE_PASS_H) $(PARAMS_H) $(BASIC_BLOCK_H) \
$(BITMAP_H) $(CFGLOOP_H) $(FLAGS_H) $(HASHTAB_H) \
- $(GIMPLE_H) $(TREE_INLINE_H) vecprim.h tree-pretty-print.h \
- gimple-pretty-print.h
+ $(GIMPLE_H) $(TREE_INLINE_H) vecprim.h \
+ $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-ter.o : tree-ssa-ter.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
- $(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) tree-pretty-print.h \
- gimple-pretty-print.h
+ $(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) \
+ $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-coalesce.o : tree-ssa-coalesce.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_SSA_LIVE_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
tree-outof-ssa.o : tree-outof-ssa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(TREE_SSA_LIVE_H) $(BASIC_BLOCK_H) $(BITMAP_H) $(GGC_H) \
- $(EXPR_H) $(SSAEXPAND_H) tree-pretty-print.h \
- gimple-pretty-print.h
+ $(EXPR_H) $(SSAEXPAND_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-dse.o : tree-ssa-dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(GGC_H) $(TREE_H) $(RTL_H) $(TM_P_H) $(BASIC_BLOCK_H) \
+ $(TM_H) $(GGC_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) domwalk.h $(FLAGS_H) \
- $(DIAGNOSTIC_H) $(TIMEVAR_H) langhooks.h
+ $(GIMPLE_PRETTY_PRINT_H) $(TIMEVAR_H) langhooks.h
tree-ssa-forwprop.o : tree-ssa-forwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- langhooks.h $(FLAGS_H) $(GIMPLE_H) tree-pretty-print.h \
- gimple-pretty-print.h $(EXPR_H)
+ langhooks.h $(FLAGS_H) $(GIMPLE_H) $(GIMPLE_PRETTY_PRINT_H) $(EXPR_H)
tree-ssa-phiprop.o : tree-ssa-phiprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- langhooks.h $(FLAGS_H) tree-pretty-print.h gimple-pretty-print.h
+ langhooks.h $(FLAGS_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-ifcombine.o : tree-ssa-ifcombine.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
tree-ssa-phiopt.o : tree-ssa-phiopt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(GGC_H) $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) langhooks.h $(FLAGS_H) \
$(DIAGNOSTIC_H) $(TIMEVAR_H) pointer-set.h domwalk.h $(CFGLOOP_H) \
- $(TREE_DATA_REF_H) tree-pretty-print.h
+ $(TREE_DATA_REF_H) $(TREE_PRETTY_PRINT_H)
tree-nrv.o : tree-nrv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(FLAGS_H) \
$(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_PASS_H) \
- langhooks.h tree-pretty-print.h
+ langhooks.h $(TREE_PRETTY_PRINT_H)
tree-ssa-copy.o : tree-ssa-copy.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \
+ $(TREE_H) $(TM_P_H) $(GGC_H) $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h tree-ssa-propagate.h \
- $(FLAGS_H) $(CFGLOOP_H) tree-pretty-print.h gimple-pretty-print.h
+ $(FLAGS_H) $(CFGLOOP_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-propagate.o : tree-ssa-propagate.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h \
+ $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \
tree-ssa-propagate.h $(VEC_H) value-prof.h gt-tree-ssa-propagate.h $(FLAGS_H) \
- $(GIMPLE_H) gimple-pretty-print.h
+ $(GIMPLE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-dom.o : tree-ssa-dom.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) output.h $(DIAGNOSTIC_H) \
+ $(TREE_H) $(TM_P_H) $(DIAGNOSTIC_H) \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
- tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) tree-pretty-print.h \
- gimple-pretty-print.h
+ tree-ssa-propagate.h $(CFGLOOP_H) $(PARAMS_H) \
+ $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-uncprop.o : tree-ssa-uncprop.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h \
+ $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(BASIC_BLOCK_H) domwalk.h $(TREE_PASS_H) $(FLAGS_H) \
langhooks.h tree-ssa-propagate.h
tree-ssa-threadedge.o : tree-ssa-threadedge.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(FLAGS_H) $(TM_P_H) \
- $(BASIC_BLOCK_H) $(CFGLOOP_H) output.h $(EXPR_H) \
+ $(BASIC_BLOCK_H) $(CFGLOOP_H) \
$(FUNCTION_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TREE_DUMP_H) $(TREE_FLOW_H) \
$(TREE_PASS_H) tree-ssa-propagate.h langhooks.h \
$(PARAMS_H)
tree-ssa-threadupdate.o : tree-ssa-threadupdate.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h \
+ $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(BASIC_BLOCK_H) $(FLAGS_H) $(TREE_PASS_H) $(CFGLOOP_H)
tree-ssanames.o : tree-ssanames.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -2415,54 +2428,52 @@ domwalk.o : domwalk.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
tree-ssa-live.o : tree-ssa-live.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_SSA_LIVE_H) $(BITMAP_H) debug.h $(FLAGS_H) \
- tree-pretty-print.h gimple-pretty-print.h $(GIMPLE_H)
+ $(GIMPLE_PRETTY_PRINT_H) $(GIMPLE_H)
tree-ssa-copyrename.o : tree-ssa-copyrename.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) \
$(TREE_PASS_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_SSA_LIVE_H) \
$(BASIC_BLOCK_H) $(BITMAP_H) $(FLAGS_H) $(HASHTAB_H) langhooks.h \
- $(GIMPLE_H) $(TREE_INLINE_H) $(GIMPLE_H) tree-pretty-print.h
+ $(GIMPLE_H) $(TREE_INLINE_H) $(GIMPLE_H)
tree-ssa-pre.o : tree-ssa-pre.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
$(CFGLOOP_H) alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) $(HASHTAB_H) \
$(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h tree-ssa-sccvn.h $(PARAMS_H) \
- $(DBGCNT_H) tree-scalar-evolution.h tree-pretty-print.h \
- gimple-pretty-print.h
+ $(DBGCNT_H) tree-scalar-evolution.h $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-sccvn.o : tree-ssa-sccvn.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(FIBHEAP_H) \
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(CFGLOOP_H) \
alloc-pool.h $(BASIC_BLOCK_H) $(BITMAP_H) langhooks.h $(HASHTAB_H) $(GIMPLE_H) \
$(TREE_INLINE_H) tree-iterator.h tree-ssa-propagate.h tree-ssa-sccvn.h \
- $(PARAMS_H) tree-pretty-print.h gimple-pretty-print.h gimple-fold.h
+ $(PARAMS_H) $(GIMPLE_PRETTY_PRINT_H) gimple-fold.h
tree-vrp.o : tree-vrp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(GGC_H) \
+ $(TREE_FLOW_H) $(TREE_PASS_H) $(TREE_DUMP_H) $(DIAGNOSTIC_CORE_H) $(GGC_H) \
$(BASIC_BLOCK_H) tree-ssa-propagate.h $(FLAGS_H) $(TREE_DUMP_H) \
- $(CFGLOOP_H) $(SCEV_H) $(TIMEVAR_H) intl.h tree-pretty-print.h \
- gimple-pretty-print.h gimple-fold.h $(OPTABS_H) $(EXPR_H)
+ $(CFGLOOP_H) $(SCEV_H) $(TIMEVAR_H) intl.h \
+ $(GIMPLE_PRETTY_PRINT_H) gimple-fold.h $(OPTABS_H) $(EXPR_H)
tree-cfg.o : tree-cfg.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(FLAGS_H) output.h \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
+ $(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) \
+ $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
$(CFGLAYOUT_H) $(BASIC_BLOCK_H) \
- value-prof.h tree-ssa-propagate.h $(TREE_INLINE_H) tree-pretty-print.h \
- gimple-pretty-print.h
+ value-prof.h tree-ssa-propagate.h $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-cfgcleanup.o : tree-cfgcleanup.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(FLAGS_H) output.h \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
+ $(TREE_H) $(TM_P_H) $(GGC_H) $(FLAGS_H) \
+ $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(CFGLOOP_H) $(TREE_PASS_H) \
- $(CFGLAYOUT_H) $(BASIC_BLOCK_H) $(HASHTAB_H) \
+ $(BASIC_BLOCK_H) $(HASHTAB_H) \
tree-ssa-propagate.h $(SCEV_H)
tree-tailcall.o : tree-tailcall.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(FUNCTION_H) $(TM_H) coretypes.h \
- $(TREE_DUMP_H) $(DIAGNOSTIC_H) $(EXCEPT_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
- $(BASIC_BLOCK_H) $(DBGCNT_H) gimple-pretty-print.h $(TARGET_H) \
+ $(TREE_DUMP_H) $(EXCEPT_H) $(TREE_PASS_H) $(FLAGS_H) langhooks.h \
+ $(BASIC_BLOCK_H) $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H) $(TARGET_H) \
$(COMMON_TARGET_H)
tree-ssa-sink.o : tree-ssa-sink.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) alloc-pool.h \
$(BASIC_BLOCK_H) $(BITMAP_H) $(CFGLOOP_H) $(FIBHEAP_H) $(HASHTAB_H) \
langhooks.h $(GIMPLE_H) $(TREE_INLINE_H) tree-iterator.h \
- gimple-pretty-print.h
+ $(GIMPLE_PRETTY_PRINT_H)
tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \
$(TM_P_H) $(FUNCTION_H) $(TREE_DUMP_H) $(TREE_INLINE_H) \
tree-iterator.h $(GIMPLE_H) $(CGRAPH_H) $(EXPR_H) langhooks.h \
@@ -2470,106 +2481,104 @@ tree-nested.o: tree-nested.c $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TREE_H) \
tree-if-conv.o: tree-if-conv.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(FLAGS_H) $(TIMEVAR_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
$(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) $(DIAGNOSTIC_H) \
- $(TREE_DUMP_H) $(DBGCNT_H) tree-pretty-print.h gimple-pretty-print.h
+ $(TREE_DUMP_H) $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H)
tree-iterator.o : tree-iterator.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
coretypes.h $(GGC_H) tree-iterator.h $(GIMPLE_H) gt-tree-iterator.h
tree-dfa.o : tree-dfa.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h $(DIAGNOSTIC_H) \
+ $(TREE_H) $(TM_P_H) $(GGC_H) $(DIAGNOSTIC_H) \
$(TREE_INLINE_H) $(HASHTAB_H) pointer-set.h $(FLAGS_H) $(FUNCTION_H) \
$(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(PARAMS_H) $(CGRAPH_H) $(BASIC_BLOCK_H) $(GIMPLE_H) \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
tree-ssa-operands.o : tree-ssa-operands.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(GGC_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
$(FLAGS_H) $(FUNCTION_H) $(TM_H) $(TIMEVAR_H) $(TREE_PASS_H) \
- coretypes.h langhooks.h $(IPA_REFERENCE_H) tree-pretty-print.h \
- gimple-pretty-print.h
+ coretypes.h langhooks.h $(IPA_REFERENCE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-eh.o : tree-eh.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_H) $(FLAGS_H) $(FUNCTION_H) $(EXCEPT_H) langhooks.h \
$(GGC_H) $(TREE_PASS_H) coretypes.h $(TIMEVAR_H) pointer-set.h \
$(TREE_DUMP_H) $(TREE_INLINE_H) tree-iterator.h toplev.h \
$(DIAGNOSTIC_CORE_H) $(CFGLOOP_H)
tree-ssa-loop.o : tree-ssa-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) output.h \
+ $(TREE_H) $(TM_P_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(TREE_PASS_H) $(TIMEVAR_H) \
$(CFGLOOP_H) $(FLAGS_H) $(TREE_INLINE_H) $(SCEV_H) $(DIAGNOSTIC_CORE_H) $(TREE_VECTORIZER_H)
tree-ssa-loop-unswitch.o : tree-ssa-loop-unswitch.c $(TREE_FLOW_H) \
$(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) \
- $(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
+ $(PARAMS_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(BASIC_BLOCK_H) \
$(TREE_INLINE_H)
tree-ssa-address.o : tree-ssa-address.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) \
- output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(FLAGS_H) $(TREE_INLINE_H) $(RECOG_H) insn-config.h \
$(EXPR_H) gt-tree-ssa-address.h $(GGC_H) tree-affine.h $(TARGET_H) \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
tree-ssa-loop-niter.o : tree-ssa-loop-niter.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \
- $(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(TREE_PASS_H) $(TREE_DATA_REF_H) \
- $(BASIC_BLOCK_H) $(GGC_H) intl.h tree-pretty-print.h gimple-pretty-print.h
+ $(BASIC_BLOCK_H) $(GGC_H) intl.h $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-loop-ivcanon.o : tree-ssa-loop-ivcanon.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(PARAMS_H) \
- $(TREE_INLINE_H) output.h $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(TREE_INLINE_H) $(DIAGNOSTIC_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(FLAGS_H) $(TREE_PASS_H) $(SCEV_H) $(BASIC_BLOCK_H) $(TARGET_H) \
- tree-pretty-print.h gimple-pretty-print.h
+ $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-loop-ch.o : tree-ssa-loop-ch.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(TREE_INLINE_H) \
- output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H)
tree-ssa-loop-prefetch.o: tree-ssa-loop-prefetch.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \
- output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
+ $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(RECOG_H) insn-config.h $(HASHTAB_H) \
$(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_CORE_H) langhooks.h $(TREE_INLINE_H) $(TREE_DATA_REF_H) \
- $(OPTABS_H) tree-pretty-print.h
+ $(OPTABS_H) $(TREE_PRETTY_PRINT_H)
tree-predcom.o: tree-predcom.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
$(CFGLOOP_H) $(TREE_FLOW_H) $(GGC_H) $(TREE_DATA_REF_H) \
$(PARAMS_H) $(DIAGNOSTIC_H) $(TREE_PASS_H) $(TM_H) coretypes.h \
- tree-affine.h $(TREE_INLINE_H) tree-pretty-print.h
+ tree-affine.h $(TREE_INLINE_H) $(TREE_PRETTY_PRINT_H)
tree-ssa-loop-ivopts.o : tree-ssa-loop-ivopts.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) $(EXPR_H) \
output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(GGC_H) $(RECOG_H) insn-config.h $(HASHTAB_H) $(SCEV_H) \
$(CFGLOOP_H) $(PARAMS_H) langhooks.h $(BASIC_BLOCK_H) \
- tree-affine.h pointer-set.h $(TARGET_H) tree-pretty-print.h \
- gimple-pretty-print.h tree-ssa-propagate.h
+ tree-affine.h pointer-set.h $(TARGET_H) \
+ $(GIMPLE_PRETTY_PRINT_H) tree-ssa-propagate.h
tree-affine.o : tree-affine.c tree-affine.h $(CONFIG_H) pointer-set.h \
$(SYSTEM_H) $(TREE_H) $(GIMPLE_H) \
- output.h $(DIAGNOSTIC_H) coretypes.h $(TREE_DUMP_H) $(FLAGS_H) \
- tree-pretty-print.h
+ coretypes.h $(TREE_DUMP_H) $(FLAGS_H) \
+ $(TREE_PRETTY_PRINT_H)
tree-ssa-loop-manip.o : tree-ssa-loop-manip.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(BASIC_BLOCK_H) output.h $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
- $(TIMEVAR_H) $(CFGLOOP_H) $(TREE_PASS_H) $(CFGLAYOUT_H) \
+ $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
+ $(TIMEVAR_H) $(CFGLOOP_H) $(TREE_PASS_H) \
$(SCEV_H) $(PARAMS_H) $(TREE_INLINE_H) langhooks.h
tree-ssa-loop-im.o : tree-ssa-loop-im.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(TM_P_H) $(CFGLOOP_H) domwalk.h \
- $(PARAMS_H) output.h $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
+ $(PARAMS_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
- pointer-set.h tree-affine.h tree-ssa-propagate.h gimple-pretty-print.h \
- tree-pretty-print.h
+ pointer-set.h tree-affine.h tree-ssa-propagate.h $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-math-opts.o : tree-ssa-math-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(FLAGS_H) $(TREE_H) $(TREE_FLOW_H) $(TIMEVAR_H) \
$(TREE_PASS_H) alloc-pool.h $(BASIC_BLOCK_H) $(TARGET_H) \
- $(DIAGNOSTIC_H) $(RTL_H) $(EXPR_H) $(OPTABS_H) gimple-pretty-print.h
+ $(DIAGNOSTIC_H) $(RTL_H) $(EXPR_H) $(OPTABS_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-alias.o : tree-ssa-alias.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) $(TREE_INLINE_H) $(FLAGS_H) \
+ $(TREE_H) $(TM_P_H) $(GGC_H) $(TREE_INLINE_H) $(FLAGS_H) \
$(FUNCTION_H) $(TIMEVAR_H) convert.h $(TM_H) coretypes.h langhooks.h \
$(TREE_DUMP_H) $(TREE_PASS_H) $(PARAMS_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
$(GIMPLE_H) $(VEC_H) $(TARGET_H) \
vecprim.h pointer-set.h alloc-pool.h \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
tree-ssa-reassoc.o : tree-ssa-reassoc.c $(TREE_FLOW_H) $(CONFIG_H) \
$(SYSTEM_H) $(TREE_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) \
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) \
tree-iterator.h $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_INLINE_H) \
$(VEC_H) langhooks.h alloc-pool.h pointer-set.h $(CFGLOOP_H) \
- tree-pretty-print.h gimple-pretty-print.h $(DIAGNOSTIC_CORE_H)
+ $(GIMPLE_PRETTY_PRINT_H) $(DIAGNOSTIC_CORE_H)
tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
- $(TREE_H) $(TM_P_H) $(GGC_H) output.h \
+ $(TREE_H) $(TM_P_H) $(GGC_H) \
$(DIAGNOSTIC_H) $(BASIC_BLOCK_H) $(FLAGS_H) $(TIMEVAR_H) $(TM_H) \
coretypes.h $(TREE_DUMP_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) langhooks.h \
$(FLAGS_H) $(CGRAPH_H) $(PLUGIN_H) \
@@ -2577,22 +2586,22 @@ tree-optimize.o : tree-optimize.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
$(TREE_PASS_H) $(CFGLOOP_H) $(EXCEPT_H)
gimplify.o : gimplify.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(GIMPLE_H) \
- $(DIAGNOSTIC_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h \
+ $(DIAGNOSTIC_H) $(TREE_INLINE_H) langhooks.h \
$(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(CGRAPH_H) $(TIMEVAR_H) $(TM_H) \
coretypes.h $(EXCEPT_H) $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) output.h \
$(GGC_H) gt-gimplify.h $(HASHTAB_H) $(TARGET_H) $(DIAGNOSTIC_CORE_H) $(OPTABS_H) \
- $(SPLAY_TREE_H) $(VEC_H) tree-iterator.h tree-pass.h tree-pretty-print.h
+ $(SPLAY_TREE_H) $(VEC_H) tree-iterator.h $(TREE_PASS_H) $(TREE_PRETTY_PRINT_H)
gimple-iterator.o : gimple-iterator.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(GIMPLE_H) $(TREE_FLOW_H) value-prof.h
gimple-fold.o : gimple-fold.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(EXPR_H) $(GGC_H) output.h \
- $(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
+ $(SYSTEM_H) $(RTL_H) $(TREE_H) $(TM_P_H) $(GGC_H) \
+ $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h \
- tree-ssa-propagate.h value-prof.h $(FLAGS_H) $(TARGET_H) gimple-fold.h
+ tree-ssa-propagate.h $(FLAGS_H) $(TARGET_H) gimple-fold.h
gimple-low.o : gimple-low.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
- $(DIAGNOSTIC_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h \
+ $(DIAGNOSTIC_CORE_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h \
$(LANGHOOKS_DEF_H) $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
- $(EXCEPT_H) $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(EXPR_H) $(TREE_PASS_H) \
+ $(EXCEPT_H) $(FLAGS_H) $(RTL_H) $(FUNCTION_H) $(TREE_PASS_H) \
$(HASHTAB_H) $(DIAGNOSTIC_CORE_H) tree-iterator.h
omp-low.o : omp-low.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(GIMPLE_H) $(TREE_INLINE_H) langhooks.h $(DIAGNOSTIC_CORE_H) \
@@ -2600,101 +2609,98 @@ omp-low.o : omp-low.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(TREE_PASS_H) $(GGC_H) $(EXCEPT_H) $(SPLAY_TREE_H) $(OPTABS_H) \
$(CFGLOOP_H) tree-iterator.h gt-omp-low.h
tree-browser.o : tree-browser.c tree-browser.def $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TREE_H) tree-pretty-print.h
-omega.o : omega.c omega.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
+ coretypes.h $(TREE_H) $(TREE_PRETTY_PRINT_H)
+omega.o : omega.c $(OMEGA_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(DIAGNOSTIC_CORE_H) $(TREE_PASS_H)
tree-chrec.o : tree-chrec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- tree-pretty-print.h $(CFGLOOP_H) $(TREE_FLOW_H) $(SCEV_H) $(TREE_PASS_H) \
+ $(TREE_PRETTY_PRINT_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(SCEV_H) $(TREE_PASS_H) \
$(PARAMS_H)
tree-scalar-evolution.o : tree-scalar-evolution.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h gimple-pretty-print.h $(TREE_FLOW_H) $(CFGLOOP_H) $(SCEV_H) \
+ coretypes.h $(GIMPLE_PRETTY_PRINT_H) $(TREE_FLOW_H) $(CFGLOOP_H) $(SCEV_H) \
$(TREE_PASS_H) $(PARAMS_H) gt-tree-scalar-evolution.h
tree-data-ref.o : tree-data-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- gimple-pretty-print.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
+ $(GIMPLE_PRETTY_PRINT_H) $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
$(TREE_PASS_H) langhooks.h tree-affine.h $(PARAMS_H)
-sese.o : sese.c sese.h $(CONFIG_H) $(SYSTEM_H) coretypes.h tree-pretty-print.h \
- $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) tree-pass.h value-prof.h
+sese.o : sese.c sese.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_PRETTY_PRINT_H) \
+ $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) value-prof.h
graphite.o : graphite.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
$(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h \
- $(DBGCNT_H) graphite-ppl.h graphite-poly.h graphite-scop-detection.h \
+ $(DBGCNT_H) $(GRAPHITE_PPL_H) graphite-poly.h graphite-scop-detection.h \
graphite-clast-to-gimple.h graphite-sese-to-poly.h
graphite-blocking.o : graphite-blocking.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- sese.h graphite-ppl.h graphite-poly.h
+ sese.h $(GRAPHITE_PPL_H) graphite-poly.h
graphite-clast-to-gimple.o : graphite-clast-to-gimple.c $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
$(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-cloog-util.h \
- graphite-ppl.h graphite-poly.h graphite-clast-to-gimple.h \
+ $(GRAPHITE_PPL_H) graphite-poly.h graphite-clast-to-gimple.h \
graphite-dependences.h graphite-cloog-compat.h
graphite-cloog-util.o : graphite-cloog-util.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h graphite-cloog-util.h graphite-cloog-compat.h
graphite-dependences.o : graphite-dependences.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- sese.h graphite-ppl.h graphite-poly.h graphite-dependences.h \
+ sese.h $(GRAPHITE_PPL_H) graphite-poly.h graphite-dependences.h \
graphite-cloog-util.h
graphite-interchange.o : graphite-interchange.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) \
- sese.h graphite-ppl.h graphite-poly.h
+ sese.h $(GRAPHITE_PPL_H) graphite-poly.h
graphite-poly.o : graphite-poly.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) gimple-pretty-print.h \
- $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h graphite-ppl.h graphite-poly.h \
+ $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(GIMPLE_PRETTY_PRINT_H) \
+ $(CFGLOOP_H) $(TREE_DATA_REF_H) sese.h $(GRAPHITE_PPL_H) graphite-poly.h \
graphite-dependences.h graphite-cloog-util.h
graphite-ppl.o : graphite-ppl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- graphite-cloog-util.h graphite-ppl.h
+ graphite-cloog-util.h $(GRAPHITE_PPL_H)
graphite-scop-detection.o : graphite-scop-detection.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H) \
- sese.h graphite-ppl.h graphite-poly.h graphite-scop-detection.h
+ sese.h $(GRAPHITE_PPL_H) graphite-poly.h graphite-scop-detection.h
graphite-sese-to-poly.o : graphite-sese-to-poly.c $(CONFIG_H) \
$(SYSTEM_H) coretypes.h $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
- $(TREE_DATA_REF_H) domwalk.h sese.h graphite-ppl.h graphite-poly.h \
+ $(TREE_DATA_REF_H) domwalk.h sese.h $(GRAPHITE_PPL_H) graphite-poly.h \
graphite-sese-to-poly.h
tree-vect-loop.o: tree-vect-loop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
- $(TREE_DUMP_H) $(CFGLOOP_H) $(CFGLAYOUT_H) $(EXPR_H) $(RECOG_H) $(OPTABS_H) \
- $(DIAGNOSTIC_CORE_H) $(SCEV_H) $(TREE_VECTORIZER_H) tree-pretty-print.h \
- gimple-pretty-print.h $(TARGET_H) $(TREE_DATA_REF_H)
+ $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(TREE_FLOW_H) \
+ $(TREE_DUMP_H) $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) $(OPTABS_H) \
+ $(DIAGNOSTIC_CORE_H) $(SCEV_H) $(TREE_VECTORIZER_H) \
+ $(GIMPLE_PRETTY_PRINT_H) $(TARGET_H) $(TREE_DATA_REF_H)
tree-vect-loop-manip.o: tree-vect-loop-manip.c $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
- $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(CFGLAYOUT_H) $(EXPR_H) $(DIAGNOSTIC_CORE_H) \
- $(SCEV_H) $(TREE_VECTORIZER_H) langhooks.h tree-pretty-print.h \
- gimple-pretty-print.h
+ coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(BASIC_BLOCK_H) \
+ $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(CFGLAYOUT_H) $(DIAGNOSTIC_CORE_H) \
+ $(SCEV_H) $(TREE_VECTORIZER_H) langhooks.h $(GIMPLE_PRETTY_PRINT_H)
tree-vect-patterns.o: tree-vect-patterns.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_H) \
+ $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
$(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(EXPR_H) $(OPTABS_H) $(PARAMS_H) \
$(TREE_DATA_REF_H) $(TREE_VECTORIZER_H) $(RECOG_H) $(DIAGNOSTIC_CORE_H) \
- gimple-pretty-print.h
+ $(GIMPLE_PRETTY_PRINT_H)
tree-vect-slp.o: tree-vect-slp.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(CFGLAYOUT_H) \
- $(EXPR_H) $(RECOG_H) $(OPTABS_H) $(TREE_VECTORIZER_H) tree-pretty-print.h \
- gimple-pretty-print.h $(TREE_DATA_REF_H) langhooks.h
+ $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+ $(EXPR_H) $(RECOG_H) $(OPTABS_H) $(TREE_VECTORIZER_H) \
+ $(GIMPLE_PRETTY_PRINT_H) $(TREE_DATA_REF_H) langhooks.h
tree-vect-stmts.o: tree-vect-stmts.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) $(CFGLAYOUT_H) \
- $(EXPR_H) $(RECOG_H) $(OPTABS_H) $(DIAGNOSTIC_CORE_H) $(TREE_VECTORIZER_H) \
- langhooks.h tree-pretty-print.h gimple-pretty-print.h
+ $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+ $(EXPR_H) $(RECOG_H) $(OPTABS_H) $(TREE_VECTORIZER_H) \
+ langhooks.h $(GIMPLE_PRETTY_PRINT_H)
tree-vect-data-refs.o: tree-vect-data-refs.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(GGC_H) $(TREE_H) $(TARGET_H) $(BASIC_BLOCK_H) \
- $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
+ $(TREE_FLOW_H) $(TREE_DUMP_H) $(CFGLOOP_H) \
$(EXPR_H) $(OPTABS_H) $(SCEV_H) $(TREE_VECTORIZER_H) \
- $(DIAGNOSTIC_CORE_H) $(TM_P_H) \
- tree-pretty-print.h gimple-pretty-print.h
+ $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(GIMPLE_PRETTY_PRINT_H)
tree-vectorizer.o: tree-vectorizer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(GGC_H) $(TREE_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
+ $(TM_H) $(GGC_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_DUMP_H) \
$(CFGLOOP_H) $(TREE_PASS_H) $(TREE_VECTORIZER_H) $(TIMEVAR_H) \
- tree-pretty-print.h
+ $(TREE_PRETTY_PRINT_H)
tree-loop-distribution.o: tree-loop-distribution.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(TREE_PASS_H)
tree-parloops.o: tree-parloops.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) gimple-pretty-print.h \
+ $(TREE_FLOW_H) $(CFGLOOP_H) $(TREE_DATA_REF_H) $(GIMPLE_PRETTY_PRINT_H) \
$(TREE_PASS_H) langhooks.h gt-tree-parloops.h $(TREE_VECTORIZER_H)
tree-stdarg.o: tree-stdarg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) $(FUNCTION_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
- tree-stdarg.h $(TARGET_H) langhooks.h gimple-pretty-print.h
+ $(TREE_H) $(FUNCTION_H) $(TREE_FLOW_H) $(TREE_PASS_H) \
+ tree-stdarg.h $(TARGET_H) langhooks.h $(GIMPLE_PRETTY_PRINT_H)
tree-object-size.o: tree-object-size.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(DIAGNOSTIC_CORE_H) $(DIAGNOSTIC_H) $(TREE_FLOW_H) \
- $(TREE_PASS_H) tree-ssa-propagate.h tree-pretty-print.h \
- gimple-pretty-print.h
+ $(TREE_PASS_H) tree-ssa-propagate.h $(GIMPLE_PRETTY_PRINT_H)
internal-fn.o : internal-fn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(INTERNAL_FN_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) $(GIMPLE_H)
gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
@@ -2704,8 +2710,7 @@ gimple.o : gimple.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
gimple-pretty-print.o : gimple-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) $(TREE_FLOW_H) \
$(TM_H) coretypes.h $(TREE_PASS_H) $(GIMPLE_H) value-prof.h \
- $(TRANS_MEM_H) \
- tree-pretty-print.h gimple-pretty-print.h
+ $(TRANS_MEM_H) $(GIMPLE_PRETTY_PRINT_H)
tree-mudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
$(GIMPLE_H) $(DIAGNOSTIC_H) $(DEMANGLE_H) $(HASHTAB_H) langhooks.h tree-mudflap.h \
$(TM_H) coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(CGRAPH_H) $(GGC_H) \
@@ -2718,10 +2723,10 @@ tree-nomudflap.o : $(CONFIG_H) $(SYSTEM_H) $(TREE_H) $(TREE_INLINE_H) \
tree-pretty-print.o : tree-pretty-print.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(DIAGNOSTIC_H) $(HASHTAB_H) $(TREE_FLOW_H) \
$(TM_H) coretypes.h tree-iterator.h $(SCEV_H) langhooks.h \
- $(TREE_PASS_H) value-prof.h output.h tree-pretty-print.h
+ $(TREE_PASS_H) value-prof.h output.h $(TREE_PRETTY_PRINT_H)
tree-diagnostic.o : tree-diagnostic.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(DIAGNOSTIC_H) tree-diagnostic.h langhooks.h $(LANGHOOKS_DEF_H) \
- $(VEC_H)
+ $(VEC_H) $(TREE_PRETTY_PRINT_H) $(TREE_PASS_H)
fold-const.o : fold-const.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(FLAGS_H) $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) $(EXPR_H) $(RTL_H) \
$(GGC_H) $(TM_P_H) langhooks.h $(MD5_H) intl.h $(TARGET_H) \
@@ -2741,7 +2746,7 @@ opts-common.o : opts-common.c $(OPTS_H) $(FLAGS_H) $(CONFIG_H) $(SYSTEM_H) \
targhooks.o : targhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(EXPR_H) $(TM_H) $(RTL_H) $(TM_P_H) $(FUNCTION_H) output.h $(DIAGNOSTIC_CORE_H) \
$(MACHMODE_H) $(TARGET_DEF_H) $(TARGET_H) $(GGC_H) gt-targhooks.h \
- $(OPTABS_H) $(RECOG_H) reload.h hard-reg-set.h intl.h $(OPTS_H) \
+ $(OPTABS_H) $(RECOG_H) $(REGS_H) reload.h hard-reg-set.h intl.h $(OPTS_H) \
tree-ssa-alias.h $(TREE_FLOW_H)
common/common-targhooks.o : common/common-targhooks.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(INPUT_H) $(TM_H) $(COMMON_TARGET_H) common/common-targhooks.h
@@ -2843,27 +2848,27 @@ CFLAGS-toplev.o += -DTARGET_NAME=\"$(target_noncanonical)\"
toplev.o : toplev.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
version.h $(RTL_H) $(FUNCTION_H) $(FLAGS_H) xcoffout.h $(INPUT_H) \
$(INSN_ATTR_H) output.h $(DIAGNOSTIC_H) debug.h insn-config.h intl.h \
- $(RECOG_H) Makefile toplev.h dwarf2out.h sdbout.h dbxout.h $(EXPR_H) \
+ $(RECOG_H) Makefile toplev.h $(DWARF2OUT_H) sdbout.h dbxout.h $(EXPR_H) \
hard-reg-set.h $(BASIC_BLOCK_H) graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_H) \
value-prof.h $(PARAMS_H) $(TM_P_H) reload.h ira.h dwarf2asm.h $(TARGET_H) \
langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) hosthooks.h \
- $(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) $(INTEGRATE_H) \
+ $(CGRAPH_H) $(COVERAGE_H) alloc-pool.h $(GGC_H) \
$(OPTS_H) params.def tree-mudflap.h $(TREE_PASS_H) $(GIMPLE_H) \
tree-ssa-alias.h $(PLUGIN_H) realmpfr.h tree-diagnostic.h \
- tree-pretty-print.h opts-diagnostic.h $(COMMON_TARGET_H)
+ $(TREE_PRETTY_PRINT_H) opts-diagnostic.h $(COMMON_TARGET_H)
hwint.o : hwint.c $(CONFIG_H) $(SYSTEM_H) $(DIAGNOSTIC_CORE_H)
passes.o : passes.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(RTL_H) $(FUNCTION_H) $(FLAGS_H) xcoffout.h $(INPUT_H) $(INSN_ATTR_H) output.h \
+ $(RTL_H) $(FUNCTION_H) $(FLAGS_H) $(INPUT_H) $(INSN_ATTR_H) output.h \
$(DIAGNOSTIC_CORE_H) debug.h insn-config.h intl.h $(RECOG_H) toplev.h \
- dwarf2out.h sdbout.h dbxout.h $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
+ $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) \
graph.h $(EXCEPT_H) $(REGS_H) $(TIMEVAR_H) value-prof.h \
- $(PARAMS_H) $(TM_P_H) reload.h dwarf2asm.h $(TARGET_H) \
- langhooks.h insn-flags.h $(CFGLAYOUT_H) $(CFGLOOP_H) \
+ $(PARAMS_H) $(TM_P_H) reload.h $(TARGET_H) \
+ langhooks.h insn-flags.h $(CFGLOOP_H) \
hosthooks.h $(CGRAPH_H) $(COVERAGE_H) $(TREE_PASS_H) $(TREE_DUMP_H) \
- $(GGC_H) $(INTEGRATE_H) $(CPPLIB_H) $(OPTS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
- gt-passes.h $(DF_H) $(PREDICT_H) $(LTO_HEADER_H) $(LTO_SECTION_OUT_H) \
+ $(GGC_H) $(OPTS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) \
+ gt-passes.h $(DF_H) $(PREDICT_H) $(LTO_STREAMER_H) \
$(PLUGIN_H) $(IPA_UTILS_H)
plugin.o : plugin.c $(PLUGIN_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -2879,13 +2884,13 @@ rtl-error.o: rtl-error.c $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(CONFIG_H)
rtl.o : rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(GGC_H) $(BCONFIG_H) insn-notes.def reg-notes.def toplev.h $(DIAGNOSTIC_CORE_H)
+ $(GGC_H) $(BCONFIG_H) insn-notes.def reg-notes.def $(DIAGNOSTIC_CORE_H)
print-rtl.o : print-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h $(BASIC_BLOCK_H) $(FLAGS_H) \
- $(BCONFIG_H) $(DIAGNOSTIC_H) cselib.h $(TREE_PASS_H) tree-pretty-print.h \
- dwarf2out.h
-rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) toplev.h $(DIAGNOSTIC_CORE_H) \
+ $(BCONFIG_H) $(DIAGNOSTIC_H) cselib.h $(TREE_PASS_H) $(TREE_PRETTY_PRINT_H) \
+ $(DWARF2OUT_H)
+rtlanal.o : rtlanal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(DIAGNOSTIC_CORE_H) \
$(RTL_H) hard-reg-set.h $(TM_P_H) insn-config.h $(RECOG_H) \
$(FLAGS_H) $(REGS_H) output.h $(TARGET_H) $(FUNCTION_H) $(TREE_H) \
$(DF_H) $(EMIT_RTL_H)
@@ -2894,13 +2899,13 @@ varasm.o : varasm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) hard-reg-set.h $(REGS_H) \
output.h $(DIAGNOSTIC_CORE_H) xcoffout.h debug.h $(GGC_H) $(TM_P_H) \
$(HASHTAB_H) $(TARGET_H) langhooks.h gt-varasm.h $(BASIC_BLOCK_H) \
- $(CFGLAYOUT_H) $(CGRAPH_H) targhooks.h tree-mudflap.h \
- tree-iterator.h pointer-set.h $(COMMON_TARGET_H)
+ $(CGRAPH_H) $(TARGET_DEF_H) tree-mudflap.h \
+ pointer-set.h $(COMMON_TARGET_H)
function.o : function.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(TREE_H) $(CFGLAYOUT_H) $(GIMPLE_H) $(FLAGS_H) $(FUNCTION_H) $(EXPR_H) \
$(OPTABS_H) $(LIBFUNCS_H) $(REGS_H) hard-reg-set.h insn-config.h $(RECOG_H) \
output.h $(EXCEPT_H) $(HASHTAB_H) $(GGC_H) $(TM_P_H) langhooks.h \
- gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(INTEGRATE_H) $(PREDICT_H) \
+ gt-function.h $(TARGET_H) $(BASIC_BLOCK_H) $(PREDICT_H) \
$(TREE_PASS_H) $(DF_H) $(TIMEVAR_H) vecprim.h $(PARAMS_H) bb-reorder.h \
$(COMMON_TARGET_H)
statistics.o : statistics.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
@@ -2914,10 +2919,10 @@ stmt.o : stmt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
except.o : except.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(EXCEPT_H) $(FUNCTION_H) $(EXPR_H) $(LIBFUNCS_H) \
langhooks.h insn-config.h hard-reg-set.h $(BASIC_BLOCK_H) output.h \
- dwarf2asm.h dwarf2out.h toplev.h $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) intl.h $(GGC_H) \
- gt-except.h $(CGRAPH_H) $(INTEGRATE_H) $(DIAGNOSTIC_H) $(DWARF2_H) \
+ dwarf2asm.h $(DWARF2OUT_H) toplev.h $(DIAGNOSTIC_CORE_H) $(HASHTAB_H) intl.h $(GGC_H) \
+ gt-except.h $(CGRAPH_H) $(DIAGNOSTIC_H) $(DWARF2_H) \
$(TARGET_H) $(TM_P_H) $(TREE_PASS_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
- tree-pretty-print.h sbitmap.h $(COMMON_TARGET_H) $(CFGLOOP_H)
+ $(TREE_PRETTY_PRINT_H) sbitmap.h $(COMMON_TARGET_H) $(CFGLOOP_H)
expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) $(EXPR_H) $(OPTABS_H) \
$(LIBFUNCS_H) $(INSN_ATTR_H) insn-config.h $(RECOG_H) output.h \
@@ -2925,12 +2930,13 @@ expr.o : expr.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
reload.h langhooks.h intl.h $(TM_P_H) $(TARGET_H) \
tree-iterator.h gt-expr.h $(MACHMODE_H) $(TIMEVAR_H) $(TREE_FLOW_H) \
$(TREE_PASS_H) $(DF_H) $(DIAGNOSTIC_H) vecprim.h $(SSAEXPAND_H) \
- $(PARAMS_H) $(COMMON_TARGET_H)
-dojump.o : dojump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
+ $(PARAMS_H) $(COMMON_TARGET_H) target-globals.h
+dojump.o : dojump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TM_P_H) \
+ $(RTL_H) $(TREE_H) \
$(FLAGS_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) $(INSN_ATTR_H) insn-config.h \
- langhooks.h $(GGC_H) gt-dojump.h vecprim.h $(BASIC_BLOCK_H) output.h
-builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(TREE_H) $(GIMPLE_H) $(FLAGS_H) $(TARGET_H) $(FUNCTION_H) $(REGS_H) \
+ langhooks.h $(GGC_H) gt-dojump.h vecprim.h $(BASIC_BLOCK_H)
+builtins.o : builtins.c builtins.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
+ $(RTL_H) $(TREE_H) $(GIMPLE_H) $(FLAGS_H) $(TARGET_H) $(FUNCTION_H) $(REGS_H) \
$(EXPR_H) $(OPTABS_H) insn-config.h $(RECOG_H) output.h typeclass.h \
hard-reg-set.h $(DIAGNOSTIC_CORE_H) hard-reg-set.h $(EXCEPT_H) \
$(TM_P_H) $(PREDICT_H) $(LIBFUNCS_H) langhooks.h $(BASIC_BLOCK_H) \
@@ -2938,7 +2944,7 @@ builtins.o : builtins.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) value-prof.h
calls.o : calls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) langhooks.h $(TARGET_H) \
- $(LIBFUNCS_H) $(REGS_H) toplev.h $(DIAGNOSTIC_CORE_H) output.h \
+ $(LIBFUNCS_H) $(REGS_H) $(DIAGNOSTIC_CORE_H) output.h \
$(FUNCTION_H) $(TIMEVAR_H) $(TM_P_H) $(CGRAPH_H) $(EXCEPT_H) sbitmap.h \
$(DBGCNT_H) $(TREE_FLOW_H)
expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
@@ -2948,7 +2954,7 @@ expmed.o : expmed.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_
explow.o : explow.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) \
$(FLAGS_H) hard-reg-set.h insn-config.h $(EXPR_H) $(OPTABS_H) $(RECOG_H) \
$(DIAGNOSTIC_CORE_H) $(EXCEPT_H) $(FUNCTION_H) $(GGC_H) $(TM_P_H) langhooks.h gt-explow.h \
- $(TARGET_H) $(COMMON_TARGET_H) output.h
+ $(TARGET_H) $(COMMON_TARGET_H) output.h $(LIBFUNCS_H)
optabs.o : optabs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) insn-config.h $(EXPR_H) $(OPTABS_H) $(LIBFUNCS_H) \
$(RECOG_H) reload.h $(DIAGNOSTIC_CORE_H) $(GGC_H) $(TM_P_H) \
@@ -2966,14 +2972,15 @@ sdbout.o : sdbout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) debug.h \
dwarf2out.o : dwarf2out.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) version.h $(RTL_H) $(DWARF2_H) debug.h $(FLAGS_H) insn-config.h \
output.h $(DIAGNOSTIC_H) hard-reg-set.h $(REGS_H) $(EXPR_H) \
- $(LIBFUNCS_H) toplev.h $(DIAGNOSTIC_CORE_H) dwarf2out.h reload.h \
+ $(LIBFUNCS_H) toplev.h $(DIAGNOSTIC_CORE_H) $(DWARF2OUT_H) reload.h \
$(GGC_H) $(EXCEPT_H) dwarf2asm.h $(TM_P_H) langhooks.h $(HASHTAB_H) \
gt-dwarf2out.h $(TARGET_H) $(CGRAPH_H) $(MD5_H) $(INPUT_H) $(FUNCTION_H) \
$(GIMPLE_H) $(TREE_PASS_H) $(TREE_FLOW_H) $(CFGLAYOUT_H) \
- tree-pretty-print.h $(COMMON_TARGET_H) $(OPTS_H)
+ $(TREE_PRETTY_PRINT_H) $(COMMON_TARGET_H) $(OPTS_H)
dwarf2cfi.o : dwarf2cfi.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- version.h $(RTL_H) $(FUNCTION_H) $(DWARF2_H) dwarf2asm.h dwarf2out.h \
- $(GGC_H) $(TM_P_H) $(TARGET_H) $(TREE_PASS_H) $(BASIC_BLOCK_H)
+ version.h $(RTL_H) $(EXPR_H) $(REGS_H) $(FUNCTION_H) output.h \
+ gt-dwarf2cfi.h debug.h $(DWARF2_H) dwarf2asm.h $(DWARF2OUT_H) $(COMMON_TARGET_H) \
+ $(GGC_H) $(TM_P_H) $(TARGET_H) $(TREE_PASS_H) $(BASIC_BLOCK_H) $(EXCEPT_H)
dwarf2asm.o : dwarf2asm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(FLAGS_H) $(RTL_H) $(TREE_H) output.h dwarf2asm.h $(TM_P_H) $(GGC_H) \
gt-dwarf2asm.h $(DWARF2_H) $(SPLAY_TREE_H) $(TARGET_H)
@@ -2983,7 +2990,7 @@ xcoffout.o : xcoffout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(RTL_H) xcoffout.h $(FLAGS_H) $(DIAGNOSTIC_CORE_H) output.h dbxout.h \
$(GGC_H) $(TARGET_H) debug.h $(GSTAB_H) xcoff.h
godump.o : godump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) \
- $(TREE_H) $(GGC_H) pointer-set.h $(OBSTACK_H) debug.h
+ $(TREE_H) $(GGC_H) pointer-set.h $(OBSTACK_H) debug.h gt-godump.h
emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) $(FUNCTION_H) $(REGS_H) insn-config.h $(RECOG_H) \
$(GGC_H) $(EXPR_H) hard-reg-set.h $(BITMAP_H) $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) \
@@ -2991,16 +2998,11 @@ emit-rtl.o : emit-rtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(DF_H) $(PARAMS_H) $(TARGET_H) $(TREE_FLOW_H)
real.o : real.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
$(DIAGNOSTIC_CORE_H) $(TM_P_H) $(REAL_H) dfp.h realmpfr.h
-realmpfr.o : realmpfr.c realmpfr.h $(CONFIG_H) $(SYSTEM_H) $(REAL_H)
+realmpfr.o : realmpfr.c realmpfr.h $(CONFIG_H) $(SYSTEM_H) $(REAL_H) $(TREE_H)
dfp.o : dfp.c dfp.h $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(REAL_H) $(DECNUM_H)
+ $(TM_P_H) $(REAL_H) $(DECNUM_H)
fixed-value.o: fixed-value.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(REAL_H) $(DIAGNOSTIC_CORE_H)
-integrate.o : integrate.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) $(TREE_H) $(FLAGS_H) debug.h $(INTEGRATE_H) insn-config.h \
- $(EXPR_H) $(REGS_H) intl.h $(FUNCTION_H) output.h $(RECOG_H) \
- $(EXCEPT_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) $(TM_P_H) $(TARGET_H) langhooks.h \
- gt-integrate.h $(GGC_H) $(TREE_PASS_H) $(DF_H)
jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) hard-reg-set.h $(REGS_H) insn-config.h $(RECOG_H) $(EXPR_H) \
$(EXCEPT_H) $(FUNCTION_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) \
@@ -3008,33 +3010,33 @@ jump.o : jump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(PREDICT_H) $(TIMEVAR_H) $(TARGET_H)
simplify-rtx.o : simplify-rtx.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
- $(RECOG_H) $(EXPR_H) $(DIAGNOSTIC_CORE_H) output.h $(FUNCTION_H) $(GGC_H) $(TM_P_H) \
+ $(RECOG_H) $(EXPR_H) $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(GGC_H) $(TM_P_H) \
$(TREE_H) $(TARGET_H)
symtab.o : symtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
- langhooks.h toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) $(TARGET_H) $(CGRAPH_H) \
+ langhooks.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) $(TARGET_H) $(CGRAPH_H) \
$(HASHTAB_H) gt-symtab.h
cgraph.o : cgraph.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
langhooks.h toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) $(TARGET_H) $(CGRAPH_H) \
- gt-cgraph.h output.h intl.h $(BASIC_BLOCK_H) debug.h $(HASHTAB_H) \
+ gt-cgraph.h intl.h $(BASIC_BLOCK_H) debug.h $(HASHTAB_H) \
$(TREE_INLINE_H) $(TREE_DUMP_H) $(TREE_FLOW_H) cif-code.def \
value-prof.h $(EXCEPT_H) $(IPA_UTILS_H) $(DIAGNOSTIC_CORE_H) \
- ipa-inline.h $(LTO_STREAMER_H) $(CFGLOOP_H)
+ ipa-inline.h $(LTO_STREAMER_H) $(CFGLOOP_H) $(GIMPLE_PRETTY_PRINT_H)
cgraphunit.o : cgraphunit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) \
$(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h $(FUNCTION_H) $(GIMPLE_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) debug.h $(DIAGNOSTIC_H) \
$(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
gt-cgraphunit.h tree-iterator.h $(COVERAGE_H) $(TREE_DUMP_H) \
- tree-pretty-print.h gimple-pretty-print.h ipa-inline.h $(IPA_UTILS_H) \
- $(LTO_STREAMER_H) output.h $(REGSET_H) $(EXCEPT_H)
+ $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(IPA_UTILS_H) \
+ $(LTO_STREAMER_H) output.h $(REGSET_H) $(EXCEPT_H) $(GCC_PLUGIN_H) plugin.h
cgraphclones.o : cgraphclones.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) toplev.h $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) \
$(TARGET_H) $(CGRAPH_H) intl.h pointer-set.h $(FUNCTION_H) $(GIMPLE_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) debug.h $(DIAGNOSTIC_H) \
- $(FIBHEAP_H) output.h $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
- gt-cgraphunit.h tree-iterator.h $(COVERAGE_H) $(TREE_DUMP_H) \
- tree-pretty-print.h gimple-pretty-print.h ipa-inline.h $(IPA_UTILS_H) \
- $(LTO_STREAMER_H) output.h $(REGSET_H) $(EXCEPT_H)
+ $(FIBHEAP_H) $(PARAMS_H) $(RTL_H) $(TIMEVAR_H) $(IPA_PROP_H) \
+ tree-iterator.h $(COVERAGE_H) $(TREE_DUMP_H) \
+ $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(IPA_UTILS_H) \
+ $(LTO_STREAMER_H) output.h $(EXCEPT_H) $(GCC_PLUGIN_H) gt-cgraphclones.h
cgraphbuild.o : cgraphbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(CGRAPH_H) intl.h pointer-set.h $(GIMPLE_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(IPA_UTILS_H) $(EXCEPT_H) \
@@ -3050,7 +3052,7 @@ ipa-prop.o : ipa-prop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
langhooks.h $(GGC_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(DIAGNOSTIC_H) \
$(TREE_FLOW_H) $(TM_H) $(TREE_PASS_H) $(FLAGS_H) $(TREE_H) \
$(TREE_INLINE_H) $(GIMPLE_H) $(TIMEVAR_H) \
- tree-pretty-print.h gimple-pretty-print.h $(LTO_STREAMER_H) \
+ $(GIMPLE_PRETTY_PRINT_H) $(LTO_STREAMER_H) \
$(DATA_STREAMER_H) $(TREE_STREAMER_H)
ipa-ref.o : ipa-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
langhooks.h $(GGC_H) $(TARGET_H) $(CGRAPH_H) $(TREE_H) $(TARGET_H) \
@@ -3058,11 +3060,11 @@ ipa-ref.o : ipa-ref.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
ipa-cp.o : ipa-cp.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(TARGET_H) $(GIMPLE_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) \
$(TREE_PASS_H) $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
- $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H) tree-pretty-print.h ipa-inline.h
-ipa-split.o : ipa-split.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
+ $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H) $(TREE_PRETTY_PRINT_H) ipa-inline.h
+ipa-split.o : ipa-split.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_H) $(TARGET_H) $(CGRAPH_H) $(IPA_PROP_H) $(TREE_FLOW_H) \
$(TREE_PASS_H) $(FLAGS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H) $(TREE_DUMP_H) \
- $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H)
+ $(TREE_INLINE_H) $(FIBHEAP_H) $(PARAMS_H) $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h
matrix-reorg.o : matrix-reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(RTL_H) $(TREE_INLINE_H) $(TREE_FLOW_H) \
tree-flow-inline.h langhooks.h $(HASHTAB_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(GGC_H) \
@@ -3074,34 +3076,34 @@ ipa-inline.o : ipa-inline.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
$(DIAGNOSTIC_H) $(FIBHEAP_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(RTL_H) $(IPA_PROP_H) \
- $(EXCEPT_H) gimple-pretty-print.h ipa-inline.h $(TARGET_H) $(IPA_UTILS_H)
+ $(EXCEPT_H) $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(TARGET_H) $(IPA_UTILS_H)
ipa-inline-analysis.o : ipa-inline-analysis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
$(DIAGNOSTIC_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(HASHTAB_H) $(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(IPA_PROP_H) \
- gimple-pretty-print.h ipa-inline.h $(LTO_STREAMER_H) $(DATA_STREAMER_H) \
+ $(GIMPLE_PRETTY_PRINT_H) ipa-inline.h $(LTO_STREAMER_H) $(DATA_STREAMER_H) \
$(TREE_STREAMER_H)
ipa-inline-transform.o : ipa-inline-transform.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) langhooks.h $(TREE_INLINE_H) $(FLAGS_H) $(CGRAPH_H) intl.h \
- $(DIAGNOSTIC_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) \
+ $(TIMEVAR_H) $(TREE_PASS_H) \
$(HASHTAB_H) $(COVERAGE_H) $(GGC_H) $(TREE_FLOW_H) $(IPA_PROP_H) \
- gimple-pretty-print.h ipa-inline.h $(LTO_STREAMER_H) tree-pass.h
+ $(TREE_PASS_H)
ipa-utils.o : ipa-utils.c $(IPA_UTILS_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(GIMPLE_H) $(SPLAY_TREE_H) \
- $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H)
+ $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) $(DIAGNOSTIC_H)
ipa-reference.o : ipa-reference.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_REFERENCE_H) $(IPA_UTILS_H) $(SPLAY_TREE_H) \
- $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) \
+ $(GIMPLE_H) $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) \
$(TIMEVAR_H) $(DIAGNOSTIC_H) $(FUNCTION_H) $(LTO_STREAMER_H) \
$(DIAGNOSTIC_CORE_H) $(DATA_STREAMER_H)
ipa-pure-const.o : ipa-pure-const.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(TREE_FLOW_H) $(TREE_INLINE_H) langhooks.h \
pointer-set.h $(GGC_H) $(IPA_UTILS_H) $(TARGET_H) \
- $(GIMPLE_H) $(CGRAPH_H) output.h $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) \
+ $(GIMPLE_H) $(CGRAPH_H) $(FLAGS_H) $(TREE_PASS_H) $(TIMEVAR_H) \
$(DIAGNOSTIC_H) $(CFGLOOP_H) $(SCEV_H) $(LTO_STREAMER_H) \
- gimple-pretty-print.h $(DATA_STREAMER_H) $(TREE_STREAMER_H)
+ $(GIMPLE_PRETTY_PRINT_H) $(DATA_STREAMER_H) $(TREE_STREAMER_H)
coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(GGC_H) langhooks.h $(COVERAGE_H) \
@@ -3109,12 +3111,12 @@ coverage.o : coverage.c $(GCOV_IO_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(DIAGNOSTIC_CORE_H) intl.h gt-coverage.h $(TARGET_H)
cselib.o : cselib.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) \
- $(EMIT_RTL_H) $(DIAGNOSTIC_CORE_H) output.h $(FUNCTION_H) $(TREE_PASS_H) \
+ $(EMIT_RTL_H) $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(TREE_PASS_H) \
cselib.h gt-cselib.h $(GGC_H) $(TM_P_H) $(PARAMS_H) alloc-pool.h \
$(HASHTAB_H) $(TARGET_H) $(BITMAP_H)
cse.o : cse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(RECOG_H) $(EXPR_H) toplev.h $(DIAGNOSTIC_CORE_H) \
- output.h $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \
+ $(FUNCTION_H) $(BASIC_BLOCK_H) $(GGC_H) $(TM_P_H) $(TIMEVAR_H) \
$(EXCEPT_H) $(TARGET_H) $(PARAMS_H) rtlhooks-def.h $(TREE_PASS_H) \
$(DF_H) $(DBGCNT_H)
dce.o : dce.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
@@ -3125,34 +3127,34 @@ dse.o : dse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(TM_P_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(RECOG_H) $(EXPR_H) $(DF_H) cselib.h $(DBGCNT_H) $(TIMEVAR_H) \
$(TREE_PASS_H) alloc-pool.h $(ALIAS_H) $(OPTABS_H) $(TARGET_H) \
- $(BITMAP_H) $(PARAMS_H)
+ $(BITMAP_H) $(PARAMS_H) $(TREE_FLOW_H)
fwprop.o : fwprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H) $(FLAGS_H) $(OBSTACK_H) $(BASIC_BLOCK_H) \
- output.h $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
+ $(DF_H) alloc-pool.h $(TIMEVAR_H) $(TREE_PASS_H) $(TARGET_H) \
$(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) domwalk.h sparseset.h
web.o : web.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(DIAGNOSTIC_CORE_H) \
+ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) $(DIAGNOSTIC_CORE_H) \
insn-config.h $(RECOG_H) $(DF_H) $(OBSTACK_H) $(TIMEVAR_H) $(TREE_PASS_H)
ree.o : ree.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h \
- $(DF_H) $(TIMEVAR_H) tree-pass.h $(RECOG_H) $(EXPR_H) \
+ hard-reg-set.h $(FLAGS_H) $(BASIC_BLOCK_H) $(FUNCTION_H) \
+ $(DF_H) $(TIMEVAR_H) $(TREE_PASS_H) $(RECOG_H) $(EXPR_H) \
$(REGS_H) $(TREE_H) $(TM_P_H) insn-config.h $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) \
$(TARGET_H) $(OPTABS_H) insn-codes.h rtlhooks-def.h $(PARAMS_H) $(CGRAPH_H)
cprop.o : cprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
- $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h toplev.h $(DIAGNOSTIC_CORE_H) \
+ $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
+ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) toplev.h $(DIAGNOSTIC_CORE_H) \
$(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) $(TREE_H) $(TIMEVAR_H) \
intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H) \
$(DF_H) $(CFGLOOP_H)
gcse.o : gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
- $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h toplev.h $(DIAGNOSTIC_CORE_H) \
+ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) toplev.h $(DIAGNOSTIC_CORE_H) \
$(TM_P_H) $(PARAMS_H) cselib.h $(EXCEPT_H) gt-gcse.h $(TREE_H) $(TIMEVAR_H) \
intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H) \
$(DF_H) gcse.h
store-motion.o : store-motion.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(GGC_H) \
- $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h toplev.h $(DIAGNOSTIC_CORE_H) \
+ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) toplev.h $(DIAGNOSTIC_CORE_H) \
$(TM_P_H) $(EXCEPT_H) $(TREE_H) $(TIMEVAR_H) \
intl.h $(OBSTACK_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
@@ -3160,46 +3162,45 @@ resource.o : resource.c $(CONFIG_H) $(RTL_H) hard-reg-set.h $(SYSTEM_H) \
$(FUNCTION_H) $(DIAGNOSTIC_CORE_H) $(INSN_ATTR_H) $(EXCEPT_H) $(PARAMS_H) $(TM_P_H)
lcm.o : lcm.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
hard-reg-set.h $(FLAGS_H) insn-config.h $(INSN_ATTR_H) $(RECOG_H) \
- $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) output.h sbitmap.h
+ $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) sbitmap.h
mode-switching.o : mode-switching.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(INSN_ATTR_H) $(RECOG_H) $(BASIC_BLOCK_H) $(TM_P_H) $(FUNCTION_H) \
- output.h $(TREE_PASS_H) $(TIMEVAR_H) $(DF_H) $(TARGET_H) $(EMIT_RTL_H)
+ $(TREE_PASS_H) $(TIMEVAR_H) $(DF_H) $(TARGET_H) $(EMIT_RTL_H)
tree-ssa-dce.o : tree-ssa-dce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
- $(GGC_H) $(GIMPLE_H) $(CFGLOOP_H) $(SCEV_H) tree-pretty-print.h \
- gimple-pretty-print.h
+ $(GGC_H) $(GIMPLE_H) $(CFGLOOP_H) $(SCEV_H) $(GIMPLE_PRETTY_PRINT_H)
tree-call-cdce.o : tree-call-cdce.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
- $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TIMEVAR_H) $(TM_H) \
+ $(TREE_FLOW_H) $(TIMEVAR_H) $(TM_H) \
coretypes.h $(TREE_DUMP_H) $(TREE_PASS_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
- $(GIMPLE_H) gimple-pretty-print.h
+ $(GIMPLE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-ssa-ccp.o : tree-ssa-ccp.c $(TREE_FLOW_H) $(CONFIG_H) \
- $(SYSTEM_H) $(TREE_H) $(TM_P_H) $(EXPR_H) output.h \
+ $(SYSTEM_H) $(TREE_H) $(TM_P_H) \
$(DIAGNOSTIC_H) $(FUNCTION_H) $(TIMEVAR_H) $(TM_H) coretypes.h \
$(TREE_DUMP_H) $(BASIC_BLOCK_H) $(TREE_PASS_H) langhooks.h $(PARAMS_H) \
tree-ssa-propagate.h value-prof.h $(FLAGS_H) $(TARGET_H) $(DIAGNOSTIC_CORE_H) \
- $(DBGCNT_H) tree-pretty-print.h gimple-pretty-print.h gimple-fold.h
+ $(DBGCNT_H) $(GIMPLE_PRETTY_PRINT_H) gimple-fold.h
tree-ssa-strlen.o : tree-ssa-strlen.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TREE_FLOW_H) $(TREE_PASS_H) domwalk.h alloc-pool.h tree-ssa-propagate.h \
- gimple-pretty-print.h $(PARAMS_H) $(EXPR_H)
+ $(GIMPLE_PRETTY_PRINT_H) $(PARAMS_H) $(EXPR_H)
tree-sra.o : tree-sra.c $(CONFIG_H) $(SYSTEM_H) coretypes.h alloc-pool.h \
$(TM_H) $(TREE_H) $(GIMPLE_H) $(CGRAPH_H) $(TREE_FLOW_H) \
$(IPA_PROP_H) $(DIAGNOSTIC_H) statistics.h $(TREE_DUMP_H) $(TIMEVAR_H) \
- $(PARAMS_H) $(TARGET_H) $(FLAGS_H) $(EXPR_H) tree-pretty-print.h \
- $(DBGCNT_H) $(TREE_INLINE_H) gimple-pretty-print.h
+ $(PARAMS_H) $(TARGET_H) $(FLAGS_H) \
+ $(DBGCNT_H) $(TREE_INLINE_H) $(GIMPLE_PRETTY_PRINT_H)
tree-switch-conversion.o : tree-switch-conversion.c $(CONFIG_H) $(SYSTEM_H) \
$(TREE_H) $(TM_P_H) $(TREE_FLOW_H) $(DIAGNOSTIC_H) $(TREE_INLINE_H) \
$(TIMEVAR_H) $(TM_H) coretypes.h $(TREE_DUMP_H) $(GIMPLE_H) \
- $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) output.h \
+ $(TREE_PASS_H) $(FLAGS_H) $(EXPR_H) $(BASIC_BLOCK_H) \
$(GGC_H) $(OBSTACK_H) $(PARAMS_H) $(CPPLIB_H) $(PARAMS_H) \
- gimple-pretty-print.h langhooks.h
+ $(GIMPLE_PRETTY_PRINT_H) langhooks.h
tree-complex.o : tree-complex.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(TM_H) $(FLAGS_H) $(TREE_FLOW_H) $(GIMPLE_H) \
- tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h $(DIAGNOSTIC_H)
+ tree-iterator.h $(TREE_PASS_H) tree-ssa-propagate.h
tree-emutls.o : tree-emutls.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(GIMPLE_H) $(TREE_PASS_H) $(TREE_FLOW_H) $(CGRAPH_H) langhooks.h \
- $(TARGET_H) targhooks.h tree-iterator.h
+ $(TARGET_H) $(TARGET_DEF_H) tree-iterator.h
tree-vect-generic.o : tree-vect-generic.c $(CONFIG_H) $(SYSTEM_H) $(TREE_H) \
$(TM_H) $(TREE_FLOW_H) $(GIMPLE_H) tree-iterator.h $(TREE_PASS_H) \
$(FLAGS_H) $(OPTABS_H) $(MACHMODE_H) $(EXPR_H) \
@@ -3212,47 +3213,47 @@ df-core.o : df-core.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
df-problems.o : df-problems.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
- $(TM_P_H) $(TARGET_H) $(FLAGS_H) output.h $(EXCEPT_H) dce.h vecprim.h
+ $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(EXCEPT_H) dce.h vecprim.h
df-scan.o : df-scan.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
insn-config.h $(RECOG_H) $(FUNCTION_H) $(REGS_H) alloc-pool.h \
hard-reg-set.h $(BASIC_BLOCK_H) $(DF_H) $(BITMAP_H) sbitmap.h $(TIMEVAR_H) \
- $(TM_P_H) $(FLAGS_H) $(TARGET_H) $(TARGET_DEF_H) $(TREE_H) output.h \
+ $(TM_P_H) $(FLAGS_H) $(TARGET_H) $(TARGET_DEF_H) $(TREE_H) \
$(TREE_PASS_H) $(EMIT_RTL_H)
regstat.o : regstat.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(TM_P_H) $(FLAGS_H) $(REGS_H) output.h $(EXCEPT_H) hard-reg-set.h \
+ $(TM_P_H) $(FLAGS_H) $(REGS_H) $(EXCEPT_H) hard-reg-set.h \
$(BASIC_BLOCK_H) $(TIMEVAR_H) $(DF_H)
var-tracking.o : var-tracking.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TREE_H) hard-reg-set.h insn-config.h reload.h $(FLAGS_H) \
- $(BASIC_BLOCK_H) output.h sbitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
+ $(BASIC_BLOCK_H) bitmap.h alloc-pool.h $(FIBHEAP_H) $(HASHTAB_H) \
$(REGS_H) $(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(TREE_FLOW_H) \
cselib.h $(TARGET_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) $(DIAGNOSTIC_H) pointer-set.h \
- $(RECOG_H) $(TM_P_H) tree-pretty-print.h
+ $(RECOG_H) $(TM_P_H) $(TREE_PRETTY_PRINT_H)
profile.o : profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(TREE_H) $(FLAGS_H) output.h $(REGS_H) $(EXPR_H) $(FUNCTION_H) $(BASIC_BLOCK_H) \
+ $(TREE_H) $(FLAGS_H) $(REGS_H) $(EXPR_H) $(FUNCTION_H) $(BASIC_BLOCK_H) \
$(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_FLOW_H) value-prof.h cfghooks.h \
$(CFGLOOP_H) $(TIMEVAR_H) $(TREE_PASS_H) profile.h
mcf.o : mcf.c profile.h $(CONFIG_H) $(SYSTEM_H) $(TM_H) coretypes.h \
- $(BASIC_BLOCK_H) output.h langhooks.h $(GCOV_IO_H) $(TREE_H)
+ $(BASIC_BLOCK_H) langhooks.h $(GCOV_IO_H) $(TREE_H)
tree-profile.o : tree-profile.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(TM_H) $(TREE_H) $(FLAGS_H) $(REGS_H) $(EXPR_H) $(FUNCTION_H) \
+ $(TM_H) $(TREE_H) $(FLAGS_H) $(FUNCTION_H) \
$(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(COVERAGE_H) $(TREE_H) value-prof.h $(TREE_DUMP_H) \
$(TREE_PASS_H) $(TREE_FLOW_H) $(TIMEVAR_H) gt-tree-profile.h $(CGRAPH_H)
value-prof.o : value-prof.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h value-prof.h $(EXPR_H) output.h $(FLAGS_H) \
+ $(BASIC_BLOCK_H) hard-reg-set.h profile.h value-prof.h $(EXPR_H) $(FLAGS_H) \
$(RECOG_H) insn-config.h $(OPTABS_H) $(REGS_H) $(GGC_H) $(DIAGNOSTIC_H) \
$(TREE_H) $(COVERAGE_H) $(RTL_H) $(GCOV_IO_H) $(TREE_FLOW_H) \
tree-flow-inline.h $(TIMEVAR_H) $(TREE_PASS_H) $(DIAGNOSTIC_CORE_H) pointer-set.h \
- tree-pretty-print.h gimple-pretty-print.h
+ $(GIMPLE_PRETTY_PRINT_H)
loop-doloop.o : loop-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
- $(DIAGNOSTIC_CORE_H) $(CFGLOOP_H) output.h $(PARAMS_H) $(TARGET_H)
+ $(DIAGNOSTIC_CORE_H) $(CFGLOOP_H) $(PARAMS_H) $(TARGET_H)
alloc-pool.o : alloc-pool.c $(CONFIG_H) $(SYSTEM_H) alloc-pool.h $(HASHTAB_H)
auto-inc-dec.o : auto-inc-dec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TREE_H) $(RTL_H) $(TM_P_H) hard-reg-set.h $(BASIC_BLOCK_H) insn-config.h \
- $(REGS_H) $(FLAGS_H) output.h $(FUNCTION_H) $(EXCEPT_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) \
+ $(REGS_H) $(FLAGS_H) $(FUNCTION_H) $(EXCEPT_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) \
$(EXPR_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H) $(TARGET_H)
cfg.o : cfg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(FLAGS_H) \
- $(REGS_H) hard-reg-set.h output.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(EXCEPT_H) $(GGC_H) \
+ $(REGS_H) hard-reg-set.h $(DIAGNOSTIC_CORE_H) $(FUNCTION_H) $(EXCEPT_H) $(GGC_H) \
$(TM_P_H) $(TIMEVAR_H) $(OBSTACK_H) $(TREE_H) alloc-pool.h \
$(HASHTAB_H) $(DF_H) $(CFGLOOP_H) $(TREE_FLOW_H) $(TREE_PASS_H)
cfghooks.o: cfghooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
@@ -3262,11 +3263,11 @@ cfgexpand.o : cfgexpand.c $(TREE_FLOW_H) $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TREE_DUMP_H) $(EXCEPT_H) langhooks.h $(TREE_PASS_H) $(RTL_H) \
$(DIAGNOSTIC_H) toplev.h $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) $(FLAGS_H) debug.h $(PARAMS_H) \
value-prof.h $(TREE_INLINE_H) $(TARGET_H) $(SSAEXPAND_H) $(REGS_H) \
- tree-pretty-print.h gimple-pretty-print.h $(BITMAP_H) sbitmap.h \
- $(INSN_ATTR_H) $(INTEGRATE_H) $(CFGLOOP_H)
+ $(GIMPLE_PRETTY_PRINT_H) $(BITMAP_H) sbitmap.h \
+ $(INSN_ATTR_H) $(CFGLOOP_H)
cfgrtl.o : cfgrtl.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
- output.h $(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) $(INSN_ATTR_H) \
+ $(FUNCTION_H) $(EXCEPT_H) $(TM_P_H) $(INSN_ATTR_H) \
insn-config.h $(EXPR_H) \
$(CFGLAYOUT_H) $(CFGLOOP_H) $(OBSTACK_H) $(TARGET_H) $(TREE_H) \
$(TREE_PASS_H) $(DF_H) $(GGC_H) $(COMMON_TARGET_H)
@@ -3275,31 +3276,31 @@ cfganal.o : cfganal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TIMEVAR_H) $(OBSTACK_H) $(DIAGNOSTIC_CORE_H) vecprim.h sbitmap.h \
$(BITMAP_H) $(CFGLOOP_H)
cfgbuild.o : cfgbuild.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h output.h $(DIAGNOSTIC_CORE_H) \
+ $(FLAGS_H) $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h $(DIAGNOSTIC_CORE_H) \
$(FUNCTION_H) $(EXCEPT_H) $(TIMEVAR_H) $(TREE_H) $(EXPR_H) sbitmap.h
cfgcleanup.o : cfgcleanup.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) $(TIMEVAR_H) hard-reg-set.h output.h $(FLAGS_H) $(RECOG_H) \
+ $(RTL_H) $(TIMEVAR_H) hard-reg-set.h $(FLAGS_H) $(RECOG_H) \
$(DIAGNOSTIC_CORE_H) insn-config.h cselib.h $(TARGET_H) $(TM_P_H) $(PARAMS_H) \
$(REGS_H) $(EMIT_RTL_H) $(CFGLAYOUT_H) $(TREE_PASS_H) $(CFGLOOP_H) $(EXPR_H) \
$(DF_H) $(DBGCNT_H) dce.h
cfgloop.o : cfgloop.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) coretypes.h $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(FLAGS_H) $(FUNCTION_H) \
- $(OBSTACK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_H) pointer-set.h output.h \
+ $(OBSTACK_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(TREE_H) pointer-set.h \
$(GGC_H)
cfgloopanal.o : cfgloopanal.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) \
- $(OBSTACK_H) output.h graphds.h $(PARAMS_H)
+ $(OBSTACK_H) graphds.h $(PARAMS_H)
graphds.o : graphds.c graphds.h $(CONFIG_H) $(SYSTEM_H) $(BITMAP_H) $(OBSTACK_H) \
coretypes.h $(VEC_H) vecprim.h
loop-iv.o : loop-iv.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(BASIC_BLOCK_H) \
hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H) \
- output.h intl.h $(DIAGNOSTIC_CORE_H) $(DF_H) $(HASHTAB_H)
+ intl.h $(DIAGNOSTIC_CORE_H) $(DF_H) $(HASHTAB_H)
loop-invariant.o : loop-invariant.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(EXPR_H) $(RECOG_H) \
coretypes.h $(TM_H) $(TM_P_H) $(FUNCTION_H) $(FLAGS_H) $(DF_H) \
- $(OBSTACK_H) output.h $(HASHTAB_H) $(EXCEPT_H) $(PARAMS_H) $(REGS_H) ira.h
+ $(OBSTACK_H) $(HASHTAB_H) $(EXCEPT_H) $(PARAMS_H) $(REGS_H) ira.h
cfgloopmanip.o : cfgloopmanip.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) \
- $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) output.h \
+ $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \
coretypes.h $(TM_H) cfghooks.h $(OBSTACK_H) $(TREE_FLOW_H)
loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(GGC_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) \
@@ -3307,10 +3308,10 @@ loop-init.o : loop-init.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(GGC_H) \
$(DF_H)
loop-unswitch.o : loop-unswitch.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \
- output.h $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H)
+ $(EXPR_H) coretypes.h $(TM_H) $(OBSTACK_H)
loop-unroll.o: loop-unroll.c $(CONFIG_H) $(SYSTEM_H) $(RTL_H) $(TM_H) \
$(BASIC_BLOCK_H) hard-reg-set.h $(CFGLOOP_H) $(CFGLAYOUT_H) $(PARAMS_H) \
- output.h $(EXPR_H) coretypes.h $(TM_H) $(HASHTAB_H) $(RECOG_H) \
+ $(EXPR_H) coretypes.h $(TM_H) $(HASHTAB_H) $(RECOG_H) \
$(OBSTACK_H)
dominance.o : dominance.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
hard-reg-set.h $(BASIC_BLOCK_H) et-forest.h $(OBSTACK_H) $(DIAGNOSTIC_CORE_H) \
@@ -3320,7 +3321,7 @@ et-forest.o : et-forest.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
combine.o : combine.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(FUNCTION_H) insn-config.h $(INSN_ATTR_H) $(REGS_H) $(EXPR_H) \
rtlhooks-def.h $(BASIC_BLOCK_H) $(RECOG_H) hard-reg-set.h \
- $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(TREE_H) $(TARGET_H) output.h $(PARAMS_H) $(OPTABS_H) \
+ $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(TREE_H) $(TARGET_H) $(PARAMS_H) $(OPTABS_H) \
insn-codes.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) vecprim.h $(CGRAPH_H) \
$(OBSTACK_H)
reginfo.o : reginfo.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
@@ -3331,43 +3332,43 @@ reginfo.o : reginfo.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
bitmap.o : bitmap.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(GGC_H) gt-bitmap.h $(BITMAP_H) $(OBSTACK_H) $(HASHTAB_H)
vec.o : vec.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(VEC_H) $(GGC_H) \
- toplev.h $(DIAGNOSTIC_CORE_H) $(HASHTAB_H)
+ $(DIAGNOSTIC_CORE_H) $(HASHTAB_H)
reload.o : reload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(FLAGS_H) output.h $(EXPR_H) $(OPTABS_H) reload.h $(RECOG_H) \
hard-reg-set.h insn-config.h $(REGS_H) $(FUNCTION_H) real.h \
addresses.h $(TM_P_H) $(PARAMS_H) $(TARGET_H) $(DF_H) ira.h $(DIAGNOSTIC_CORE_H)
reload1.o : reload1.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) hard-reg-set.h insn-config.h \
- $(BASIC_BLOCK_H) $(RECOG_H) output.h $(FUNCTION_H) $(TM_P_H) \
+ $(BASIC_BLOCK_H) $(RECOG_H) $(FUNCTION_H) $(TM_P_H) \
addresses.h $(EXCEPT_H) $(TREE_H) $(FLAGS_H) $(MACHMODE_H) \
$(OBSTACK_H) $(DF_H) $(TARGET_H) $(EMIT_RTL_H) ira.h
rtlhooks.o : rtlhooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
rtlhooks-def.h $(EXPR_H) $(RECOG_H)
postreload.o : postreload.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) $(OPTABS_H) reload.h $(REGS_H) \
- hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) output.h \
+ hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) \
$(FUNCTION_H) $(DIAGNOSTIC_CORE_H) cselib.h $(TM_P_H) $(EXCEPT_H) $(TREE_H) $(MACHMODE_H) \
$(OBSTACK_H) $(TARGET_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
postreload-gcse.o : postreload-gcse.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
- $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) output.h $(DIAGNOSTIC_CORE_H) \
+ $(RECOG_H) $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) $(DIAGNOSTIC_CORE_H) \
$(TM_P_H) $(EXCEPT_H) $(TREE_H) $(TARGET_H) $(HASHTAB_H) intl.h $(OBSTACK_H) \
$(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DBGCNT_H)
caller-save.o : caller-save.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(FLAGS_H) $(REGS_H) hard-reg-set.h insn-config.h $(BASIC_BLOCK_H) $(FUNCTION_H) \
addresses.h $(RECOG_H) reload.h $(EXPR_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(DF_H) \
- output.h gt-caller-save.h $(GGC_H)
+ gt-caller-save.h $(GGC_H)
bt-load.o : bt-load.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(EXCEPT_H) \
- $(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) output.h $(EXPR_H) \
+ $(RTL_H) hard-reg-set.h $(REGS_H) $(TM_P_H) $(FIBHEAP_H) $(EXPR_H) \
$(TARGET_H) $(FLAGS_H) $(INSN_ATTR_H) $(FUNCTION_H) $(TREE_PASS_H) \
- toplev.h $(DIAGNOSTIC_CORE_H) $(DF_H) vecprim.h $(RECOG_H)
+ $(DIAGNOSTIC_CORE_H) $(DF_H) vecprim.h $(RECOG_H)
reorg.o : reorg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
conditions.h hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) insn-config.h \
$(INSN_ATTR_H) $(EXCEPT_H) $(RECOG_H) $(FUNCTION_H) $(FLAGS_H) output.h \
$(EXPR_H) $(DIAGNOSTIC_CORE_H) $(PARAMS_H) $(TM_P_H) $(OBSTACK_H) $(RESOURCE_H) \
$(TIMEVAR_H) $(TARGET_H) $(TREE_PASS_H)
alias.o : alias.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) $(DIAGNOSTIC_CORE_H) output.h \
+ $(FLAGS_H) hard-reg-set.h $(BASIC_BLOCK_H) $(REGS_H) $(DIAGNOSTIC_CORE_H) \
$(ALIAS_H) $(EMIT_RTL_H) $(GGC_H) $(FUNCTION_H) cselib.h $(TREE_H) $(TM_P_H) \
langhooks.h $(TARGET_H) gt-alias.h $(TIMEVAR_H) $(CGRAPH_H) \
$(SPLAY_TREE_H) $(DF_H) $(TREE_PASS_H) \
@@ -3381,7 +3382,7 @@ init-regs.o : init-regs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
ira-build.o: ira-build.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TARGET_H) $(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) \
- $(PARAMS_H) $(DF_H) sparseset.h $(IRA_INT_H) output.h reload.h
+ $(PARAMS_H) $(DF_H) sparseset.h $(IRA_INT_H) reload.h
ira-costs.o: ira-costs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
hard-reg-set.h $(RTL_H) $(EXPR_H) $(TM_P_H) $(FLAGS_H) $(BASIC_BLOCK_H) \
$(REGS_H) addresses.h insn-config.h $(RECOG_H) $(DIAGNOSTIC_CORE_H) $(TARGET_H) \
@@ -3397,25 +3398,25 @@ ira-color.o: ira-color.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
ira-emit.o: ira-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) hard-reg-set.h \
$(BASIC_BLOCK_H) $(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) \
- $(TREE_PASS_H) output.h reload.h $(DF_H) $(IRA_INT_H)
+ $(TREE_PASS_H) reload.h $(DF_H) $(IRA_INT_H)
ira-lives.o: ira-lives.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(TARGET_H) $(RTL_H) $(REGS_H) $(EXCEPT_H) hard-reg-set.h $(FLAGS_H) \
insn-config.h $(RECOG_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(PARAMS_H) \
$(DF_H) sparseset.h $(IRA_INT_H)
ira.o: ira.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(REGS_H) $(RTL_H) $(TM_P_H) $(TARGET_H) $(FLAGS_H) $(OBSTACK_H) \
- $(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_H) \
+ $(BITMAP_H) hard-reg-set.h $(BASIC_BLOCK_H) $(DBGCNT_H) $(FUNCTION_H) \
$(EXPR_H) $(RECOG_H) $(PARAMS_H) $(TIMEVAR_H) $(TREE_PASS_H) output.h \
- $(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(INTEGRATE_H) $(DF_H) $(GGC_H) $(IRA_INT_H)
+ $(EXCEPT_H) reload.h toplev.h $(DIAGNOSTIC_CORE_H) $(DF_H) $(GGC_H) $(IRA_INT_H)
regmove.o : regmove.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H) \
- $(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
+ $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
$(EXPR_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) \
$(EXCEPT_H) ira.h reload.h $(TARGET_H)
combine-stack-adj.o : combine-stack-adj.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) insn-config.h $(TIMEVAR_H) $(TREE_PASS_H) \
- $(RECOG_H) output.h $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
- $(EXPR_H) $(BASIC_BLOCK_H) $(DIAGNOSTIC_CORE_H) $(TM_P_H) $(DF_H) $(EXCEPT_H) reload.h
+ $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) $(FUNCTION_H) \
+ $(EXPR_H) $(BASIC_BLOCK_H) $(TM_P_H) $(DF_H) $(EXCEPT_H) reload.h
compare-elim.o : compare-elim.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(TM_P_H) insn-config.h $(RECOG_H) $(FLAGS_H) \
$(BASIC_BLOCK_H) $(TREE_PASS_H) $(TARGET_H) $(DF_H) domwalk.h
@@ -3432,7 +3433,7 @@ modulo-sched.o : modulo-sched.c $(DDG_H) $(CONFIG_H) $(CONFIG_H) $(SYSTEM_H) \
$(DF_H) $(DBGCNT_H)
haifa-sched.o : haifa-sched.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h $(FUNCTION_H) \
- $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(TM_P_H) $(TARGET_H) output.h \
+ $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(TM_P_H) $(TARGET_H) \
$(PARAMS_H) $(DBGCNT_H) $(CFGLOOP_H) ira.h $(EMIT_RTL_H) $(COMMON_TARGET_H) \
$(HASHTAB_H)
sched-deps.o : sched-deps.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -3447,7 +3448,7 @@ sched-rgn.o : sched-rgn.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
sched-ebb.o : sched-ebb.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(TM_P_H) \
- $(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H) output.h
+ $(PARAMS_H) $(CFGLAYOUT_H) $(TARGET_H)
sched-vis.o : sched-vis.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(SCHED_INT_H) hard-reg-set.h $(BASIC_BLOCK_H) $(OBSTACK_H) \
$(TREE_PASS_H) $(INSN_ATTR_H)
@@ -3462,7 +3463,7 @@ sel-sched-dump.o : sel-sched-dump.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
$(TM_P_H) $(TARGET_H) $(CFGLAYOUT_H) $(TIMEVAR_H) $(TREE_PASS_H) \
$(SEL_SCHED_DUMP_H) $(GGC_H) $(TREE_H) $(LANGHOOKS_DEF_H) $(SEL_SCHED_IR_H) \
- output.h $(BASIC_BLOCK_H) cselib.h
+ $(BASIC_BLOCK_H) cselib.h
sel-sched-ir.o : sel-sched-ir.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) insn-config.h \
$(FUNCTION_H) $(INSN_ATTR_H) $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(EXCEPT_H) $(PARAMS_H) \
@@ -3472,10 +3473,11 @@ sel-sched-ir.o : sel-sched-ir.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
final.o : final.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(TREE_H) $(FLAGS_H) intl.h $(REGS_H) $(RECOG_H) conditions.h \
insn-config.h $(INSN_ATTR_H) $(FUNCTION_H) output.h hard-reg-set.h \
- $(EXCEPT_H) debug.h xcoffout.h toplev.h $(DIAGNOSTIC_CORE_H) reload.h dwarf2out.h \
+ $(EXCEPT_H) debug.h xcoffout.h toplev.h $(DIAGNOSTIC_CORE_H) reload.h $(DWARF2OUT_H) \
$(TREE_PASS_H) $(BASIC_BLOCK_H) $(TM_P_H) $(TARGET_H) $(EXPR_H) \
$(CFGLAYOUT_H) dbxout.h $(TIMEVAR_H) $(CGRAPH_H) $(COVERAGE_H) \
- $(DF_H) vecprim.h $(GGC_H) $(CFGLOOP_H) $(PARAMS_H) $(TREE_FLOW_H)
+ $(DF_H) vecprim.h $(GGC_H) $(CFGLOOP_H) $(PARAMS_H) $(TREE_FLOW_H) \
+ $(TARGET_DEF_H) $(TREE_PRETTY_PRINT_H)
recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
$(FUNCTION_H) $(BASIC_BLOCK_H) $(REGS_H) $(RECOG_H) $(EXPR_H) \
$(FLAGS_H) insn-config.h $(INSN_ATTR_H) output.h reload.h \
@@ -3484,12 +3486,12 @@ recog.o : recog.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_ERROR_H) \
reg-stack.o : reg-stack.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_ERROR_H) $(TREE_H) $(RECOG_H) $(REGS_H) hard-reg-set.h $(FLAGS_H) \
insn-config.h reload.h $(FUNCTION_H) $(TM_P_H) $(GGC_H) \
- $(BASIC_BLOCK_H) $(CFGLAYOUT_H) output.h $(TIMEVAR_H) \
+ $(BASIC_BLOCK_H) $(TIMEVAR_H) \
$(TREE_PASS_H) $(TARGET_H) vecprim.h $(DF_H) $(EMIT_RTL_H)
sreal.o: sreal.c $(CONFIG_H) $(SYSTEM_H) coretypes.h sreal.h
predict.o: predict.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TREE_H) $(FLAGS_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) \
- hard-reg-set.h output.h $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(FUNCTION_H) $(EXCEPT_H) \
+ hard-reg-set.h $(DIAGNOSTIC_CORE_H) $(RECOG_H) $(FUNCTION_H) $(EXCEPT_H) \
$(TM_P_H) $(PREDICT_H) sreal.h $(PARAMS_H) $(TARGET_H) $(CFGLOOP_H) \
$(COVERAGE_H) $(SCEV_H) $(GGC_H) predict.def $(TIMEVAR_H) $(TREE_DUMP_H) \
$(TREE_FLOW_H) $(TREE_PASS_H) $(EXPR_H) pointer-set.h
@@ -3501,19 +3503,18 @@ bb-reorder.o : bb-reorder.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(PARAMS_H) toplev.h $(DIAGNOSTIC_CORE_H) $(TREE_PASS_H) $(DF_H) \
$(EXCEPT_H) bb-reorder.h
tracer.o : tracer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
- $(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h output.h $(CFGLAYOUT_H) \
+ $(TREE_H) $(BASIC_BLOCK_H) hard-reg-set.h $(CFGLAYOUT_H) \
$(FLAGS_H) $(TIMEVAR_H) $(PARAMS_H) $(COVERAGE_H) $(FIBHEAP_H) \
$(TREE_PASS_H) $(TREE_FLOW_H) $(TREE_INLINE_H) $(CFGLOOP_H)
cfglayout.o : cfglayout.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h output.h \
+ $(RTL_H) $(TREE_H) insn-config.h $(BASIC_BLOCK_H) hard-reg-set.h \
$(FUNCTION_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(TARGET_H) gt-cfglayout.h \
$(GGC_H) alloc-pool.h $(FLAGS_H) $(OBSTACK_H) $(TREE_PASS_H) vecprim.h \
$(DF_H) $(EMIT_RTL_H) $(COMMON_TARGET_H)
-timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TIMEVAR_H) $(FLAGS_H) intl.h toplev.h $(DIAGNOSTIC_CORE_H) $(RTL_H) timevar.def
+timevar.o : timevar.c $(CONFIG_H) $(SYSTEM_H) $(TIMEVAR_H)
regcprop.o : regcprop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
- output.h $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \
+ $(RECOG_H) $(FUNCTION_H) $(OBSTACK_H) $(FLAGS_H) $(TM_P_H) \
addresses.h reload.h $(DIAGNOSTIC_CORE_H) $(TIMEVAR_H) $(TREE_PASS_H) $(DF_H)
regrename.o : regrename.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_ERROR_H) insn-config.h $(BASIC_BLOCK_H) $(REGS_H) hard-reg-set.h \
@@ -3532,7 +3533,7 @@ hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H)
pretty-print.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h intl.h $(PRETTY_PRINT_H)
errors.o : errors.c $(CONFIG_H) $(SYSTEM_H) errors.h
dbgcnt.o: dbgcnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(DIAGNOSTIC_CORE_H) $(DBGCNT_H) \
- $(TM_H) $(RTL_H) output.h
+ $(TM_H) $(RTL_H)
lower-subreg.o : lower-subreg.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(MACHMODE_H) $(TM_H) $(RTL_H) $(TM_P_H) $(TIMEVAR_H) $(FLAGS_H) \
insn-config.h $(BASIC_BLOCK_H) $(RECOG_H) $(OBSTACK_H) $(BITMAP_H) \
@@ -3545,7 +3546,7 @@ target-globals.o : target-globals.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
lower-subreg.h
hw-doloop.o : hw-doloop.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(FLAGS_H) $(EXPR_H) hard-reg-set.h $(BASIC_BLOCK_H) $(TM_P_H) \
- $(DF_H) $(CFGLAYOUT_H) $(CFGLOOP_H) output.h $(RECOG_H) $(TARGET_H) \
+ $(DF_H) $(CFGLAYOUT_H) $(CFGLOOP_H) $(RECOG_H) $(TARGET_H) \
$(REGS_H) hw-doloop.h
$(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h insn-config.h conditions.h \
@@ -3597,7 +3598,7 @@ insn-emit.o : insn-emit.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(TM_P_H) $(FUNCTION_H) $(EXPR_H) $(OPTABS_H) \
dfp.h $(FLAGS_H) output.h insn-config.h hard-reg-set.h $(RECOG_H) \
$(RESOURCE_H) reload.h $(DIAGNOSTIC_CORE_H) $(REGS_H) tm-constrs.h \
- $(GGC_H) $(BASIC_BLOCK_H) $(INTEGRATE_H) $(TARGET_H)
+ $(GGC_H) $(BASIC_BLOCK_H) $(TARGET_H)
insn-enums.o : insn-enums.c $(CONFIG_H) $(SYSTEM_H) insn-constants.h
insn-extract.o : insn-extract.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(DIAGNOSTIC_CORE_H) insn-config.h $(RECOG_H)
@@ -3834,7 +3835,7 @@ GTFILES = $(CPP_ID_DATA_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
$(srcdir)/function.c $(srcdir)/except.c \
$(MELT_H) \
$(srcdir)/gcse.c $(srcdir)/godump.c \
- $(srcdir)/integrate.c $(srcdir)/lists.c $(srcdir)/optabs.c \
+ $(srcdir)/lists.c $(srcdir)/optabs.c \
$(srcdir)/profile.c $(srcdir)/mcf.c \
$(srcdir)/reg-stack.c $(srcdir)/cfglayout.c $(srcdir)/cfglayout.h \
$(srcdir)/sdbout.c $(srcdir)/stor-layout.c \
@@ -4127,7 +4128,8 @@ PREPROCESSOR_DEFINES = \
CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s)
cppbuiltin.o: cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
- $(TREE_H) cppbuiltin.h Makefile
+ $(TARGET_H) $(TARGET_DEF) $(TREE_H) $(CPP_ID_DATA_H) \
+ cppbuiltin.h version.h Makefile
CFLAGS-cppdefault.o += $(PREPROCESSOR_DEFINES)
cppdefault.o: cppdefault.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
@@ -4706,7 +4708,7 @@ installdirs:
PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
toplev.h $(DIAGNOSTIC_CORE_H) $(BASIC_BLOCK_H) $(GIMPLE_H) $(TREE_PASS_H) $(GCC_PLUGIN_H) \
- $(GGC_H) $(TREE_DUMP_H) $(PRETTY_PRINT_H) $(OPTS_H) $(PARAMS_H) plugin.def \
+ $(GGC_H) $(TREE_DUMP_H) $(PRETTY_PRINT_H) $(OPTS_H) $(PARAMS_H) \
$(tm_file_list) $(tm_include_list) $(tm_p_file_list) $(tm_p_include_list) \
$(host_xm_file_list) $(host_xm_include_list) $(xm_include_list) \
intl.h $(PLUGIN_VERSION_H) $(DIAGNOSTIC_H) ${C_TREE_H} \
@@ -4715,7 +4717,7 @@ PLUGIN_HEADERS = $(TREE_H) $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(EXCEPT_H) tree-ssa-sccvn.h real.h output.h $(IPA_UTILS_H) \
$(C_PRAGMA_H) $(CPPLIB_H) $(FUNCTION_H) \
cppdefault.h flags.h $(MD5_H) params.def params.h prefix.h tree-inline.h \
- gimple-pretty-print.h tree-pretty-print.h realmpfr.h \
+ $(GIMPLE_PRETTY_PRINT_H) realmpfr.h \
$(IPA_PROP_H) $(RTL_H) $(TM_P_H) $(CFGLOOP_H) $(EMIT_RTL_H) version.h
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index f92edbb11ce..e031f46d6e4 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-29 Michael Matz <matz@suse.de>
+
+ * gcc-interface/utils.c (create_var_decl_1): Don't call expand_decl.
+
2012-05-26 Eric Botcazou <ebotcazou@adacore.com>
* gcc-interface/decl.c (variant_desc): Rename 'record' to 'new_type'.
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 36012a6ed91..58003084700 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -2227,8 +2227,6 @@ create_var_decl_1 (tree var_name, tree asm_name, tree type, tree var_init,
if (global_bindings_p ())
rest_of_decl_compilation (var_decl, true, 0);
}
- else
- expand_decl (var_decl);
return var_decl;
}
diff --git a/gcc/alias.c b/gcc/alias.c
index 00af340c372..322fe0ca1b6 100644
--- a/gcc/alias.c
+++ b/gcc/alias.c
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "basic-block.h"
#include "flags.h"
-#include "output.h"
#include "diagnostic-core.h"
#include "cselib.h"
#include "splay-tree.h"
@@ -76,7 +75,7 @@ along with GCC; see the file COPYING3. If not see
The first two questions can be answered with a simple examination
of the type system. If structure X contains a field of type Y then
- a store thru a pointer to an X can overwrite any field that is
+ a store through a pointer to an X can overwrite any field that is
contained (recursively) in an X (unless we know that px1 != px2).
The last two of the questions can be solved in the same way as the
@@ -243,12 +242,9 @@ static GTY((deletable)) VEC(rtx,gc) *old_reg_base_value;
? VEC_index (rtx, reg_base_value, REGNO (X)) : 0)
/* Vector indexed by N giving the initial (unchanging) value known for
- pseudo-register N. This array is initialized in init_alias_analysis,
+ pseudo-register N. This vector is initialized in init_alias_analysis,
and does not change until end_alias_analysis is called. */
-static GTY((length("reg_known_value_size"))) rtx *reg_known_value;
-
-/* Indicates number of valid entries in reg_known_value. */
-static GTY(()) unsigned int reg_known_value_size;
+static GTY(()) VEC(rtx,gc) *reg_known_value;
/* Vector recording for each reg_known_value whether it is due to a
REG_EQUIV note. Future passes (viz., reload) may replace the
@@ -262,7 +258,7 @@ static GTY(()) unsigned int reg_known_value_size;
REG_EQUIV notes. One could argue that the REG_EQUIV notes are
wrong, but solving the problem in the scheduler will likely give
better code, so we do it here. */
-static bool *reg_known_equiv_p;
+static sbitmap reg_known_equiv_p;
/* True when scanning insns from the start of the rtl to the
NOTE_INSN_FUNCTION_BEG note. */
@@ -1362,8 +1358,8 @@ get_reg_known_value (unsigned int regno)
if (regno >= FIRST_PSEUDO_REGISTER)
{
regno -= FIRST_PSEUDO_REGISTER;
- if (regno < reg_known_value_size)
- return reg_known_value[regno];
+ if (regno < VEC_length (rtx, reg_known_value))
+ return VEC_index (rtx, reg_known_value, regno);
}
return NULL;
}
@@ -1376,8 +1372,8 @@ set_reg_known_value (unsigned int regno, rtx val)
if (regno >= FIRST_PSEUDO_REGISTER)
{
regno -= FIRST_PSEUDO_REGISTER;
- if (regno < reg_known_value_size)
- reg_known_value[regno] = val;
+ if (regno < VEC_length (rtx, reg_known_value))
+ VEC_replace (rtx, reg_known_value, regno, val);
}
}
@@ -1389,8 +1385,8 @@ get_reg_known_equiv_p (unsigned int regno)
if (regno >= FIRST_PSEUDO_REGISTER)
{
regno -= FIRST_PSEUDO_REGISTER;
- if (regno < reg_known_value_size)
- return reg_known_equiv_p[regno];
+ if (regno < VEC_length (rtx, reg_known_value))
+ return TEST_BIT (reg_known_equiv_p, regno);
}
return false;
}
@@ -1401,8 +1397,13 @@ set_reg_known_equiv_p (unsigned int regno, bool val)
if (regno >= FIRST_PSEUDO_REGISTER)
{
regno -= FIRST_PSEUDO_REGISTER;
- if (regno < reg_known_value_size)
- reg_known_equiv_p[regno] = val;
+ if (regno < VEC_length (rtx, reg_known_value))
+ {
+ if (val)
+ SET_BIT (reg_known_equiv_p, regno);
+ else
+ RESET_BIT (reg_known_equiv_p, regno);
+ }
}
}
@@ -2799,13 +2800,12 @@ init_alias_analysis (void)
int changed, pass;
int i;
unsigned int ui;
- rtx insn;
+ rtx insn, val;
timevar_push (TV_ALIAS_ANALYSIS);
- reg_known_value_size = maxreg - FIRST_PSEUDO_REGISTER;
- reg_known_value = ggc_alloc_cleared_vec_rtx (reg_known_value_size);
- reg_known_equiv_p = XCNEWVEC (bool, reg_known_value_size);
+ reg_known_value = VEC_alloc (rtx, gc, maxreg - FIRST_PSEUDO_REGISTER);
+ reg_known_equiv_p = sbitmap_alloc (maxreg - FIRST_PSEUDO_REGISTER);
/* If we have memory allocated from the previous run, use it. */
if (old_reg_base_value)
@@ -2931,13 +2931,13 @@ init_alias_analysis (void)
t = plus_constant (GET_MODE (src), t,
INTVAL (XEXP (src, 1)));
set_reg_known_value (regno, t);
- set_reg_known_equiv_p (regno, 0);
+ set_reg_known_equiv_p (regno, false);
}
else if (DF_REG_DEF_COUNT (regno) == 1
&& ! rtx_varies_p (src, 1))
{
set_reg_known_value (regno, src);
- set_reg_known_equiv_p (regno, 0);
+ set_reg_known_equiv_p (regno, false);
}
}
}
@@ -2964,9 +2964,12 @@ init_alias_analysis (void)
while (changed && ++pass < MAX_ALIAS_LOOP_PASSES);
/* Fill in the remaining entries. */
- for (i = 0; i < (int)reg_known_value_size; i++)
- if (reg_known_value[i] == 0)
- reg_known_value[i] = regno_reg_rtx[i + FIRST_PSEUDO_REGISTER];
+ FOR_EACH_VEC_ELT (rtx, reg_known_value, i, val)
+ {
+ int regno = i + FIRST_PSEUDO_REGISTER;
+ if (! val)
+ set_reg_known_value (regno, regno_reg_rtx[regno]);
+ }
/* Clean up. */
free (new_reg_base_value);
@@ -2989,11 +2992,8 @@ void
end_alias_analysis (void)
{
old_reg_base_value = reg_base_value;
- ggc_free (reg_known_value);
- reg_known_value = 0;
- reg_known_value_size = 0;
- free (reg_known_equiv_p);
- reg_known_equiv_p = 0;
+ VEC_free (rtx, gc, reg_known_value);
+ sbitmap_free (reg_known_equiv_p);
}
#include "gt-alias.h"
diff --git a/gcc/auto-inc-dec.c b/gcc/auto-inc-dec.c
index 1c9edf85925..f64dbe0dcca 100644
--- a/gcc/auto-inc-dec.c
+++ b/gcc/auto-inc-dec.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "regs.h"
#include "flags.h"
-#include "output.h"
#include "function.h"
#include "except.h"
#include "diagnostic-core.h"
@@ -495,7 +494,7 @@ attempt_change (rtx new_addr, rtx inc_reg)
return false;
}
- /* Jump thru a lot of hoops to keep the attributes up to date. We
+ /* Jump through a lot of hoops to keep the attributes up to date. We
do not want to call one of the change address variants that take
an offset even though we know the offset in many cases. These
assume you are changing where the address is pointing by the
diff --git a/gcc/basic-block.h b/gcc/basic-block.h
index 3aa3a78a7d8..418914a3718 100644
--- a/gcc/basic-block.h
+++ b/gcc/basic-block.h
@@ -802,6 +802,7 @@ extern basic_block alloc_block (void);
extern void alloc_aux_for_blocks (int);
extern void clear_aux_for_blocks (void);
extern void free_aux_for_blocks (void);
+extern void alloc_aux_for_edge (edge, int);
extern void alloc_aux_for_edges (int);
extern void clear_aux_for_edges (void);
extern void free_aux_for_edges (void);
diff --git a/gcc/bb-reorder.c b/gcc/bb-reorder.c
index 7f73b947e69..89431cc32c0 100644
--- a/gcc/bb-reorder.c
+++ b/gcc/bb-reorder.c
@@ -1524,7 +1524,7 @@ fix_up_fall_thru_edges (void)
/* We know the fall-thru edge crosses; if the cond
jump edge does NOT cross, and its destination is the
next block in the bb order, invert the jump
- (i.e. fix it so the fall thru does not cross and
+ (i.e. fix it so the fall through does not cross and
the cond jump does). */
if (!cond_jump_crosses
@@ -2251,7 +2251,7 @@ partition_hot_cold_basic_blocks (void)
/* Convert all crossing fall_thru edges to non-crossing fall
thrus to unconditional jumps (that jump to the original fall
- thru dest). */
+ through dest). */
fix_up_fall_thru_edges ();
/* If the architecture does not have conditional branches that can
diff --git a/gcc/bt-load.c b/gcc/bt-load.c
index a93d2b9bffe..7ec4454746d 100644
--- a/gcc/bt-load.c
+++ b/gcc/bt-load.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "regs.h"
#include "fibheap.h"
-#include "output.h"
#include "target.h"
#include "expr.h"
#include "flags.h"
diff --git a/gcc/builtins.c b/gcc/builtins.c
index 8b20e439cc0..b885f5f657b 100644
--- a/gcc/builtins.c
+++ b/gcc/builtins.c
@@ -2650,8 +2650,8 @@ expand_builtin_cexpi (tree exp, rtx target)
else
gcc_unreachable ();
- op1 = assign_temp (TREE_TYPE (arg), 0, 1, 1);
- op2 = assign_temp (TREE_TYPE (arg), 0, 1, 1);
+ op1 = assign_temp (TREE_TYPE (arg), 1, 1);
+ op2 = assign_temp (TREE_TYPE (arg), 1, 1);
op1a = copy_addr_to_reg (XEXP (op1, 0));
op2a = copy_addr_to_reg (XEXP (op2, 0));
top1 = make_tree (build_pointer_type (TREE_TYPE (arg)), op1a);
diff --git a/gcc/c-decl.c b/gcc/c-decl.c
index 41688a7220d..0c7e80e13c5 100644
--- a/gcc/c-decl.c
+++ b/gcc/c-decl.c
@@ -7317,8 +7317,6 @@ finish_struct (location_t loc, tree t, tree fieldlist, tree attributes,
if (c_dialect_objc ())
objc_check_decl (decl);
rest_of_decl_compilation (decl, toplevel, 0);
- if (!toplevel)
- expand_decl (decl);
}
}
C_TYPE_INCOMPLETE_VARS (TYPE_MAIN_VARIANT (t)) = 0;
@@ -8579,11 +8577,9 @@ check_for_loop_decls (location_t loc, bool turn_off_iso_c99_error)
void
c_push_function_context (void)
{
- struct language_function *p = cfun->language;
- /* cfun->language might have been already allocated by the use of
- -Wunused-local-typedefs. In that case, just re-use it. */
- if (p == NULL)
- cfun->language = p = ggc_alloc_cleared_language_function ();
+ struct language_function *p;
+ p = ggc_alloc_language_function ();
+ cfun->language = p;
p->base.x_stmt_tree = c_stmt_tree;
c_stmt_tree.x_cur_stmt_list
@@ -8609,11 +8605,7 @@ c_pop_function_context (void)
pop_function_context ();
p = cfun->language;
- /* When -Wunused-local-typedefs is in effect, cfun->languages is
- used to store data throughout the life time of the current cfun,
- So don't deallocate it. */
- if (!warn_unused_local_typedefs)
- cfun->language = NULL;
+ cfun->language = NULL;
if (DECL_STRUCT_FUNCTION (current_function_decl) == 0
&& DECL_SAVED_TREE (current_function_decl) == NULL_TREE)
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 650302b0e93..a5b9c1f8660 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,16 @@
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * c-ada-spec.c: Do not include output.h.
+ * c-semantics.c: Likewise.
+
+2012-05-29 Joseph Myers <joseph@codesourcery.com>
+
+ * c-common.c: Fix typo.
+
+2012-05-29 Michael Matz <matz@suse.de>
+
+ * c-common.h (c_expand_decl): Remove prototype.
+
2012-05-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
* c.opt (Wmissing-braces): Use LangEnabledBy(C ObjC,Wall).
diff --git a/gcc/c-family/c-ada-spec.c b/gcc/c-family/c-ada-spec.c
index c6666675ccc..8946624be23 100644
--- a/gcc/c-family/c-ada-spec.c
+++ b/gcc/c-family/c-ada-spec.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "tree-pass.h" /* For TDI_ada and friends. */
-#include "output.h"
#include "c-ada-spec.h"
#include "cpplib.h"
#include "c-pragma.h"
diff --git a/gcc/c-family/c-common.c b/gcc/c-family/c-common.c
index f745365da1a..3a1bbd25347 100644
--- a/gcc/c-family/c-common.c
+++ b/gcc/c-family/c-common.c
@@ -3960,7 +3960,7 @@ pointer_int_sum (location_t loc, enum tree_code resultcode,
/* Replace the integer argument with a suitable product by the object size.
Do this multiplication as signed, then convert to the appropriate type
- for the pointer operation and disregard an overflow that occured only
+ for the pointer operation and disregard an overflow that occurred only
because of the sign-extension change in the latter conversion. */
{
tree t = build_binary_op (loc,
diff --git a/gcc/c-family/c-common.h b/gcc/c-family/c-common.h
index c3d679adcbc..c8e6ce19577 100644
--- a/gcc/c-family/c-common.h
+++ b/gcc/c-family/c-common.h
@@ -544,8 +544,6 @@ extern tree build_modify_expr (location_t, tree, tree, enum tree_code,
location_t, tree, tree);
extern tree build_indirect_ref (location_t, tree, ref_operator);
-extern int c_expand_decl (tree);
-
extern int field_decl_cmp (const void *, const void *);
extern void resort_sorted_fields (void *, void *, gt_pointer_operator,
void *);
diff --git a/gcc/c-family/c-lex.c b/gcc/c-family/c-lex.c
index b122dab3086..d9bd823fde2 100644
--- a/gcc/c-family/c-lex.c
+++ b/gcc/c-family/c-lex.c
@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "input.h"
-#include "output.h"
+#include "output.h" /* for asm_out_file */
#include "c-common.h"
#include "flags.h"
#include "timevar.h"
diff --git a/gcc/c-family/c-pch.c b/gcc/c-family/c-pch.c
index 8d34e0949d5..091f58a6cff 100644
--- a/gcc/c-family/c-pch.c
+++ b/gcc/c-family/c-pch.c
@@ -26,7 +26,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "flags.h"
#include "c-common.h"
-#include "output.h"
+#include "output.h" /* for asm_out_file */
#include "debug.h"
#include "c-pragma.h"
#include "ggc.h"
diff --git a/gcc/c-family/c-semantics.c b/gcc/c-family/c-semantics.c
index cb0f2be314e..1a21ec17f83 100644
--- a/gcc/c-family/c-semantics.c
+++ b/gcc/c-family/c-semantics.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "splay-tree.h"
#include "c-common.h"
#include "flags.h"
-#include "output.h"
#include "tree-iterator.h"
/* Create an empty statement tree rooted at T. */
diff --git a/gcc/c-tree.h b/gcc/c-tree.h
index 8f8c9d8e014..8541747a339 100644
--- a/gcc/c-tree.h
+++ b/gcc/c-tree.h
@@ -535,7 +535,6 @@ extern void store_parm_decls (void);
extern void store_parm_decls_from (struct c_arg_info *);
extern tree xref_tag (enum tree_code, tree);
extern struct c_typespec parser_xref_tag (location_t, enum tree_code, tree);
-extern int c_expand_decl (tree);
extern struct c_parm *build_c_parm (struct c_declspecs *, tree,
struct c_declarator *);
extern struct c_declarator *build_attrs_declarator (tree,
diff --git a/gcc/caller-save.c b/gcc/caller-save.c
index 44131f93efd..ecb862b079c 100644
--- a/gcc/caller-save.c
+++ b/gcc/caller-save.c
@@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "tm_p.h"
#include "addresses.h"
-#include "output.h"
#include "ggc.h"
#define MOVE_MAX_WORDS (MOVE_MAX / UNITS_PER_WORD)
diff --git a/gcc/calls.c b/gcc/calls.c
index 03c92168a24..d4bcd7b67d4 100644
--- a/gcc/calls.c
+++ b/gcc/calls.c
@@ -933,7 +933,7 @@ save_fixed_argument_area (int reg_parm_stack_space, rtx argblock, int *low_to_sa
set_mem_align (stack_area, PARM_BOUNDARY);
if (save_mode == BLKmode)
{
- save_area = assign_stack_temp (BLKmode, num_to_save, 0);
+ save_area = assign_stack_temp (BLKmode, num_to_save);
emit_block_move (validize_mem (save_area), stack_area,
GEN_INT (num_to_save), BLOCK_OP_CALL_PARM);
}
@@ -1258,7 +1258,7 @@ initialize_argument_information (int num_actuals ATTRIBUTE_UNUSED,
set_mem_attributes (copy, type, 1);
}
else
- copy = assign_temp (type, 0, 1, 0);
+ copy = assign_temp (type, 1, 0);
store_expr (args[i].tree_value, copy, 0, false);
@@ -2404,9 +2404,7 @@ expand_call (tree exp, rtx target, int ignore)
/* For variable-sized objects, we must be called with a target
specified. If we were to allocate space on the stack here,
we would have no way of knowing when to free it. */
- rtx d = assign_temp (rettype, 0, 1, 1);
-
- mark_temp_addr_taken (d);
+ rtx d = assign_temp (rettype, 1, 1);
structure_value_addr = XEXP (d, 0);
target = 0;
}
@@ -3280,7 +3278,7 @@ expand_call (tree exp, rtx target, int ignore)
(TYPE_QUALS (rettype)
| TYPE_QUAL_CONST));
- target = assign_temp (nt, 0, 1, 1);
+ target = assign_temp (nt, 1, 1);
}
if (! rtx_equal_p (target, valreg))
@@ -3696,7 +3694,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
if (value != 0 && MEM_P (value))
mem_value = value;
else
- mem_value = assign_temp (tfom, 0, 1, 1);
+ mem_value = assign_temp (tfom, 1, 1);
#endif
/* This call returns a big structure. */
flags &= ~(ECF_CONST | ECF_PURE | ECF_LOOPING_CONST_OR_PURE);
@@ -3811,7 +3809,7 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
else
{
slot = assign_temp (lang_hooks.types.type_for_mode (mode, 0),
- 0, 1, 1);
+ 1, 1);
emit_move_insn (slot, val);
}
@@ -4035,8 +4033,8 @@ emit_library_call_value_1 (int retval, rtx orgfun, rtx value,
{
argvec[argnum].save_area
= assign_stack_temp (BLKmode,
- argvec[argnum].locate.size.constant,
- 0);
+ argvec[argnum].locate.size.constant
+ );
emit_block_move (validize_mem (argvec[argnum].save_area),
stack_area,
@@ -4446,7 +4444,7 @@ store_one_arg (struct arg_data *arg, rtx argblock, int flags,
tree nt = build_qualified_type (ot, (TYPE_QUALS (ot)
| TYPE_QUAL_CONST));
- arg->save_area = assign_temp (nt, 0, 1, 1);
+ arg->save_area = assign_temp (nt, 1, 1);
preserve_temp_slots (arg->save_area);
emit_block_move (validize_mem (arg->save_area), stack_area,
GEN_INT (arg->locate.size.constant),
@@ -4723,11 +4721,7 @@ store_one_arg (struct arg_data *arg, rtx argblock, int flags,
be deferred during the rest of the arguments. */
NO_DEFER_POP;
- /* Free any temporary slots made in processing this argument. Show
- that we might have taken the address of something and pushed that
- as an operand. */
- preserve_temp_slots (NULL_RTX);
- free_temp_slots ();
+ /* Free any temporary slots made in processing this argument. */
pop_temp_slots ();
return sibcall_failure;
diff --git a/gcc/cfg.c b/gcc/cfg.c
index ba85b169059..667e0977b4f 100644
--- a/gcc/cfg.c
+++ b/gcc/cfg.c
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "regs.h"
#include "flags.h"
-#include "output.h"
#include "function.h"
#include "except.h"
#include "diagnostic-core.h"
@@ -814,10 +813,10 @@ free_aux_for_blocks (void)
clear_aux_for_blocks ();
}
-/* Allocate a memory edge of SIZE as BB->aux. The obstack must
+/* Allocate a memory edge of SIZE as E->aux. The obstack must
be first initialized by alloc_aux_for_edges. */
-static void
+void
alloc_aux_for_edge (edge e, int size)
{
/* Verify that aux field is clear. */
diff --git a/gcc/cfgbuild.c b/gcc/cfgbuild.c
index 692fea8a17b..07ef949d20e 100644
--- a/gcc/cfgbuild.c
+++ b/gcc/cfgbuild.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "regs.h"
#include "flags.h"
-#include "output.h"
#include "function.h"
#include "except.h"
#include "expr.h"
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c
index 6c56a041d75..619b274e46a 100644
--- a/gcc/cfgcleanup.c
+++ b/gcc/cfgcleanup.c
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "regs.h"
#include "timevar.h"
-#include "output.h"
#include "insn-config.h"
#include "flags.h"
#include "recog.h"
@@ -62,7 +61,7 @@ along with GCC; see the file COPYING3. If not see
/* Set to true when we are running first pass of try_optimize_cfg loop. */
static bool first_pass;
-/* Set to true if crossjumps occured in the latest run of try_optimize_cfg. */
+/* Set to true if crossjumps occurred in the latest run of try_optimize_cfg. */
static bool crossjumps_occured;
/* Set to true if we couldn't run an optimization due to stale liveness
diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c
index 126b132eb05..8a31a9f5835 100644
--- a/gcc/cfgexpand.c
+++ b/gcc/cfgexpand.c
@@ -49,7 +49,6 @@ along with GCC; see the file COPYING3. If not see
#include "sbitmap.h"
#include "cfgloop.h"
#include "regs.h" /* For reg_renumber. */
-#include "integrate.h" /* For emit_initial_value_sets. */
#include "insn-attr.h" /* For INSN_SCHEDULING. */
/* This variable holds information helping the rewriting of SSA trees
diff --git a/gcc/cfglayout.c b/gcc/cfglayout.c
index 2a5448c7083..3ab0ec0a138 100644
--- a/gcc/cfglayout.c
+++ b/gcc/cfglayout.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "obstack.h"
#include "basic-block.h"
#include "insn-config.h"
-#include "output.h"
#include "function.h"
#include "cfglayout.h"
#include "cfgloop.h"
diff --git a/gcc/cfgloop.c b/gcc/cfgloop.c
index 94ba874b101..8b3cde691e5 100644
--- a/gcc/cfgloop.c
+++ b/gcc/cfgloop.c
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tree-flow.h"
#include "pointer-set.h"
-#include "output.h"
#include "ggc.h"
static void flow_loops_cfg_dump (FILE *);
diff --git a/gcc/cfgloopanal.c b/gcc/cfgloopanal.c
index 652fc4d8b62..cec33fbb97e 100644
--- a/gcc/cfgloopanal.c
+++ b/gcc/cfgloopanal.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "cfgloop.h"
#include "expr.h"
-#include "output.h"
#include "graphds.h"
#include "params.h"
diff --git a/gcc/cfgloopmanip.c b/gcc/cfgloopmanip.c
index 5292ae536b5..0454603d158 100644
--- a/gcc/cfgloopmanip.c
+++ b/gcc/cfgloopmanip.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "cfglayout.h"
#include "cfghooks.h"
-#include "output.h"
#include "tree-flow.h"
static void copy_loops_to (struct loop **, int,
diff --git a/gcc/cfgrtl.c b/gcc/cfgrtl.c
index 3ee92d9a2aa..031dc259e95 100644
--- a/gcc/cfgrtl.c
+++ b/gcc/cfgrtl.c
@@ -48,7 +48,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "regs.h"
#include "flags.h"
-#include "output.h"
#include "function.h"
#include "except.h"
#include "rtl-error.h"
diff --git a/gcc/cgraph.c b/gcc/cgraph.c
index 86a94162236..217644df74a 100644
--- a/gcc/cgraph.c
+++ b/gcc/cgraph.c
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "basic-block.h"
#include "cgraph.h"
-#include "output.h"
#include "intl.h"
#include "gimple.h"
#include "tree-dump.h"
@@ -413,7 +412,7 @@ cgraph_get_create_node (tree decl)
}
/* Mark ALIAS as an alias to DECL. DECL_NODE is cgraph node representing
- the function body is associated with (not neccesarily cgraph_node (DECL). */
+ the function body is associated with (not necessarily cgraph_node (DECL). */
struct cgraph_node *
cgraph_create_function_alias (tree alias, tree decl)
@@ -1581,7 +1580,7 @@ cgraph_node_can_be_local_p (struct cgraph_node *node)
NULL, true));
}
-/* Call calback on NODE, thunks and aliases asociated to NODE.
+/* Call calback on NODE, thunks and aliases associated to NODE.
When INCLUDE_OVERWRITABLE is false, overwritable aliases and thunks are
skipped. */
@@ -1617,7 +1616,7 @@ cgraph_for_node_thunks_and_aliases (struct cgraph_node *node,
return false;
}
-/* Call calback on NODE and aliases asociated to NODE.
+/* Call calback on NODE and aliases associated to NODE.
When INCLUDE_OVERWRITABLE is false, overwritable aliases and thunks are
skipped. */
@@ -2087,7 +2086,7 @@ verify_edge_count_and_frequency (struct cgraph_edge *e)
if (gimple_has_body_p (e->caller->symbol.decl)
&& !e->caller->global.inlined_to
/* FIXME: Inline-analysis sets frequency to 0 when edge is optimized out.
- Remove this once edges are actualy removed from the function at that time. */
+ Remove this once edges are actually removed from the function at that time. */
&& (e->frequency
|| (inline_edge_summary_vec
&& ((VEC_length(inline_edge_summary_t, inline_edge_summary_vec)
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index de854f74b01..0dec33f7757 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -1181,7 +1181,7 @@ varpool_alias_aliased_node (struct varpool_node *n)
/* Given NODE, walk the alias chain to return the function NODE is alias of.
Walk through thunk, too.
- When AVAILABILITY is non-NULL, get minimal availablity in the chain. */
+ When AVAILABILITY is non-NULL, get minimal availability in the chain. */
static inline struct cgraph_node *
cgraph_function_node (struct cgraph_node *node, enum availability *availability)
@@ -1211,7 +1211,7 @@ cgraph_function_node (struct cgraph_node *node, enum availability *availability)
/* Given NODE, walk the alias chain to return the function NODE is alias of.
Do not walk through thunks.
- When AVAILABILITY is non-NULL, get minimal availablity in the chain. */
+ When AVAILABILITY is non-NULL, get minimal availability in the chain. */
static inline struct cgraph_node *
cgraph_function_or_thunk_node (struct cgraph_node *node, enum availability *availability)
@@ -1239,7 +1239,7 @@ cgraph_function_or_thunk_node (struct cgraph_node *node, enum availability *avai
/* Given NODE, walk the alias chain to return the function NODE is alias of.
Do not walk through thunks.
- When AVAILABILITY is non-NULL, get minimal availablity in the chain. */
+ When AVAILABILITY is non-NULL, get minimal availability in the chain. */
static inline struct varpool_node *
varpool_variable_node (struct varpool_node *node, enum availability *availability)
diff --git a/gcc/cgraphclones.c b/gcc/cgraphclones.c
index 7a6fb642413..ab97bd34bca 100644
--- a/gcc/cgraphclones.c
+++ b/gcc/cgraphclones.c
@@ -70,7 +70,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
-#include "output.h"
#include "rtl.h"
#include "tree-flow.h"
#include "tree-inline.h"
@@ -96,7 +95,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimple-pretty-print.h"
#include "output.h"
#include "coverage.h"
-#include "plugin.h"
#include "ipa-inline.h"
#include "ipa-utils.h"
#include "lto-streamer.h"
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index 8dd52234f42..e47008f969c 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -51,7 +51,7 @@ along with GCC; see the file COPYING3. If not see
The symbol table is constructed starting from the trivially needed
symbols finalized by the frontend. Functions are lowered into
GIMPLE representation and callgraph/reference lists are constructed.
- Those are used to discover other neccesary functions and variables.
+ Those are used to discover other necessary functions and variables.
At the end the bodies of unreachable functions are removed.
@@ -220,7 +220,7 @@ static GTY (()) tree vtable_entry_type;
/* Determine if function DECL is trivially needed and should stay in the
compilation unit. This is used at the symbol table construction time
- and differs from later logic removing unnecesary functions that can
+ and differs from later logic removing unnecessary functions that can
take into account results of analysis, whole program info etc. */
static bool
@@ -385,7 +385,7 @@ referred_to_p (symtab_node node)
{
struct ipa_ref *ref;
- /* See if there are any refrences at all. */
+ /* See if there are any references at all. */
if (ipa_ref_list_referring_iterate (&node->symbol.ref_list, 0, ref))
return true;
/* For functions check also calls. */
@@ -1534,7 +1534,7 @@ assemble_thunk (struct cgraph_node *node)
-/* Assemble thunks and aliases asociated to NODE. */
+/* Assemble thunks and aliases associated to NODE. */
static void
assemble_thunks_and_aliases (struct cgraph_node *node)
@@ -1903,7 +1903,7 @@ get_alias_symbol (tree decl)
/* Weakrefs may be associated to external decls and thus not output
- at expansion time. Emit all neccesary aliases. */
+ at expansion time. Emit all necessary aliases. */
static void
output_weakrefs (void)
diff --git a/gcc/collect2-aix.h b/gcc/collect2-aix.h
index 1ab313d0f34..203f42cbd3d 100644
--- a/gcc/collect2-aix.h
+++ b/gcc/collect2-aix.h
@@ -29,7 +29,7 @@ along with GCC; see the file COPYING3. If not see
Definitions adapted from bfd. (Fairly heavily adapted in some cases.)
------------------------------------------------------------------------- */
-/* Compatiblity types for bfd. */
+/* Compatibility types for bfd. */
typedef unsigned HOST_WIDE_INT bfd_vma;
/* The size of an archive's fl_magic field. */
@@ -135,7 +135,7 @@ struct external_filehdr_32
/* The number of entries in the symbol table. */
char f_nsyms[4];
- /* The size of the auxillary header. */
+ /* The size of the auxiliary header. */
char f_opthdr[2];
/* Flags. */
@@ -157,7 +157,7 @@ struct external_filehdr_64
/* The offset of the symbol table from the start of the file. */
char f_symptr[8];
- /* The size of the auxillary header. */
+ /* The size of the auxiliary header. */
char f_opthdr[2];
/* Flags. */
@@ -222,7 +222,7 @@ struct external_syment
/* The class of symbol (a C_* value). */
char n_sclass[1];
- /* The number of auxillary symbols attached to this entry. */
+ /* The number of auxiliary symbols attached to this entry. */
char n_numaux[1];
};
diff --git a/gcc/collect2.c b/gcc/collect2.c
index deed052af2f..fc69e2f71bf 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -406,13 +406,13 @@ collect_exit (int status)
if (ldout != 0 && ldout[0])
{
- dump_file (ldout, stdout);
+ dump_ld_file (ldout, stdout);
maybe_unlink (ldout);
}
if (lderrout != 0 && lderrout[0])
{
- dump_file (lderrout, stderr);
+ dump_ld_file (lderrout, stderr);
maybe_unlink (lderrout);
}
@@ -518,7 +518,7 @@ extract_string (const char **pp)
}
void
-dump_file (const char *name, FILE *to)
+dump_ld_file (const char *name, FILE *to)
{
FILE *stream = fopen (name, "r");
@@ -842,7 +842,7 @@ add_lto_object (struct lto_object_list *list, const char *name)
files contain LTO info. The linker command line LTO_LD_ARGV
represents the linker command that would produce a final executable
without the use of LTO. OBJECT_LST is a vector of object file names
- appearing in LTO_LD_ARGV that are to be considerd for link-time
+ appearing in LTO_LD_ARGV that are to be considered for link-time
recompilation, where OBJECT is a pointer to the last valid element.
(This awkward convention avoids an impedance mismatch with the
usage of similarly-named variables in main().) The elements of
@@ -2567,7 +2567,7 @@ scan_prog_file (const char *prog_name, scanpass which_pass,
/* LTO objects must be in a known format. This check prevents
us from accepting an archive containing LTO objects, which
- gcc cannnot currently handle. */
+ gcc cannot currently handle. */
if (which_pass == PASS_LTOINFO && !maybe_lto_object_file (prog_name))
return;
diff --git a/gcc/collect2.h b/gcc/collect2.h
index d55198dce23..7dedd6579b4 100644
--- a/gcc/collect2.h
+++ b/gcc/collect2.h
@@ -30,7 +30,7 @@ extern void collect_exit (int) ATTRIBUTE_NORETURN;
extern int collect_wait (const char *, struct pex_obj *);
-extern void dump_file (const char *, FILE *);
+extern void dump_ld_file (const char *, FILE *);
extern int file_exists (const char *);
diff --git a/gcc/combine-stack-adj.c b/gcc/combine-stack-adj.c
index 27aca85de38..b3ee785711a 100644
--- a/gcc/combine-stack-adj.c
+++ b/gcc/combine-stack-adj.c
@@ -48,7 +48,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "insn-config.h"
#include "recog.h"
-#include "output.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "flags.h"
diff --git a/gcc/combine.c b/gcc/combine.c
index d23ecfcbccd..70b80bca738 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -97,8 +97,6 @@ along with GCC; see the file COPYING3. If not see
#include "optabs.h"
#include "insn-codes.h"
#include "rtlhooks-def.h"
-/* Include output.h for dump_file. */
-#include "output.h"
#include "params.h"
#include "timevar.h"
#include "tree-pass.h"
@@ -10284,8 +10282,7 @@ simplify_shift_const_1 (enum rtx_code code, enum machine_mode result_mode,
break;
/* Make this fit the case below. */
- varop = gen_rtx_XOR (mode, XEXP (varop, 0),
- GEN_INT (GET_MODE_MASK (mode)));
+ varop = gen_rtx_XOR (mode, XEXP (varop, 0), constm1_rtx);
continue;
case IOR:
diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c
index f11a7245caa..b021e8daf88 100644
--- a/gcc/compare-elim.c
+++ b/gcc/compare-elim.c
@@ -494,7 +494,7 @@ try_eliminate_compare (struct comparison *cmp)
{
rtx x, insn, bb_head, flags, in_a, cmp_src;
- /* We must have found an interesting "clobber" preceeding the compare. */
+ /* We must have found an interesting "clobber" preceding the compare. */
if (cmp->prev_clobber == NULL)
return false;
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c
index 225c9ab3c54..6d15bf70cff 100644
--- a/gcc/config/alpha/alpha.c
+++ b/gcc/config/alpha/alpha.c
@@ -43,7 +43,6 @@ along with GCC; see the file COPYING3. If not see
#include "function.h"
#include "diagnostic-core.h"
#include "ggc.h"
-#include "integrate.h"
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
diff --git a/gcc/config/alpha/ev6.md b/gcc/config/alpha/ev6.md
index adfe504bf8b..a16535a6450 100644
--- a/gcc/config/alpha/ev6.md
+++ b/gcc/config/alpha/ev6.md
@@ -147,11 +147,15 @@
(eq_attr "type" "fadd,fcpys,fbr"))
"ev6_fa")
+(define_bypass 6 "ev6_fmul,ev6_fadd" "ev6_fst,ev6_ftoi")
+
(define_insn_reservation "ev6_fcmov" 8
(and (eq_attr "tune" "ev6")
(eq_attr "type" "fcmov"))
"ev6_fa,nothing*3,ev6_fa")
+(define_bypass 10 "ev6_fcmov" "ev6_fst,ev6_ftoi")
+
(define_insn_reservation "ev6_fdivsf" 12
(and (eq_attr "tune" "ev6")
(and (eq_attr "type" "fdiv")
diff --git a/gcc/config/alpha/vms.h b/gcc/config/alpha/vms.h
index 6f90122fef3..03d9b9b229a 100644
--- a/gcc/config/alpha/vms.h
+++ b/gcc/config/alpha/vms.h
@@ -153,7 +153,7 @@ typedef struct {int num_args; enum avms_arg_type atypes[6];} avms_arg_info;
#define DEFAULT_PCC_STRUCT_RETURN 0
-/* Eventhough pointers are 64bits, only 32bit ever remain significant in code
+/* Even though pointers are 64bits, only 32bit ever remain significant in code
addresses. */
#define MASK_RETURN_ADDR \
(flag_vms_pointer_size == VMS_POINTER_SIZE_NONE \
diff --git a/gcc/config/arm/README-interworking b/gcc/config/arm/README-interworking
index 7f2eda83b49..cfa7f66e294 100644
--- a/gcc/config/arm/README-interworking
+++ b/gcc/config/arm/README-interworking
@@ -227,7 +227,7 @@ considerations when building programs and DLLs:
Switching between the ARM and Thumb instruction sets is accomplished
via the BX instruction which takes as an argument a register name.
-Control is transfered to the address held in this register (with the
+Control is transferred to the address held in this register (with the
bottom bit masked out), and if the bottom bit is set, then Thumb
instruction processing is enabled, otherwise ARM instruction
processing is enabled.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 7a9819705e5..8a862275b5b 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -46,7 +46,6 @@
#include "ggc.h"
#include "except.h"
#include "c-family/c-pragma.h" /* ??? */
-#include "integrate.h"
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
@@ -2588,7 +2587,7 @@ optimal_immediate_sequence (enum rtx_code code, unsigned HOST_WIDE_INT val,
int insns1, insns2;
struct four_ints tmp_sequence;
- /* If we aren't targetting ARM, the best place to start is always at
+ /* If we aren't targeting ARM, the best place to start is always at
the bottom, otherwise look more closely. */
if (TARGET_ARM)
{
@@ -8473,7 +8472,7 @@ cortex_a9_sched_adjust_cost (rtx insn, rtx link, rtx dep, int * cost)
&& reg_overlap_mentioned_p (SET_DEST (PATTERN (insn)),
SET_DEST (PATTERN (dep))))
{
- /* FMACS is a special case where the dependant
+ /* FMACS is a special case where the dependent
instruction can be issued 3 cycles before
the normal latency in case of an output
dependency. */
@@ -9459,7 +9458,7 @@ neon_expand_vector_init (rtx target, rtx vals)
/* Construct the vector in memory one field at a time
and load the whole vector. */
- mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), 0);
+ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
for (i = 0; i < n_elts; i++)
emit_move_insn (adjust_address_nv (mem, inner_mode,
i * GET_MODE_SIZE (inner_mode)),
@@ -16187,7 +16186,7 @@ arm_output_epilogue (rtx sibling)
now we have to use add/sub in those cases. However, the value
of that would be marginal, as both mov and add/sub are 32-bit
in ARM mode, and it would require extra conditionals
- in arm_expand_prologue to distingish ARM-apcs-frame case
+ in arm_expand_prologue to distinguish ARM-apcs-frame case
(where frame pointer is required to point at first register)
and ARM-non-apcs-frame. Therefore, such change is postponed
until real need arise. */
@@ -25638,10 +25637,18 @@ arm_evpc_neon_vrev (struct expand_vec_perm_d *d)
return false;
}
- for (i = 0; i < nelt; i += diff)
+ for (i = 0; i < nelt ; i += diff + 1)
for (j = 0; j <= diff; j += 1)
- if (d->perm[i + j] != i + diff - j)
- return false;
+ {
+ /* This is guaranteed to be true as the value of diff
+ is 7, 3, 1 and we should have enough elements in the
+ queue to generate this. Getting a vector mask with a
+ value of diff other than these values implies that
+ something is wrong by the time we get here. */
+ gcc_assert (i + j < nelt);
+ if (d->perm[i + j] != i + diff - j)
+ return false;
+ }
/* Success! */
if (d->testing_p)
diff --git a/gcc/config/arm/iterators.md b/gcc/config/arm/iterators.md
index 15672647e51..bb0d44e75e0 100644
--- a/gcc/config/arm/iterators.md
+++ b/gcc/config/arm/iterators.md
@@ -36,7 +36,7 @@
;; A list of integer modes that are less than a word
(define_mode_iterator NARROW [QI HI])
-;; A list of all the integer modes upto 64bit
+;; A list of all the integer modes up to 64bit
(define_mode_iterator QHSD [QI HI SI DI])
;; A list of the 32bit and 64bit integer modes
diff --git a/gcc/config/arm/t-arm b/gcc/config/arm/t-arm
index 1128d1904b0..2bc97a65dac 100644
--- a/gcc/config/arm/t-arm
+++ b/gcc/config/arm/t-arm
@@ -78,7 +78,7 @@ arm.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
insn-config.h conditions.h output.h \
$(INSN_ATTR_H) $(FLAGS_H) reload.h $(FUNCTION_H) \
$(EXPR_H) $(OPTABS_H) $(RECOG_H) $(CGRAPH_H) \
- $(GGC_H) except.h $(C_PRAGMA_H) $(INTEGRATE_H) $(TM_P_H) \
+ $(GGC_H) except.h $(C_PRAGMA_H) $(TM_P_H) \
$(TARGET_H) $(TARGET_DEF_H) debug.h langhooks.h $(DF_H) \
intl.h libfuncs.h $(PARAMS_H) $(OPTS_H) $(srcdir)/config/arm/arm-cores.def \
$(srcdir)/config/arm/arm-arches.def $(srcdir)/config/arm/arm-fpus.def
diff --git a/gcc/config/arm/vxworks.h b/gcc/config/arm/vxworks.h
index 887691326e5..391c166336b 100644
--- a/gcc/config/arm/vxworks.h
+++ b/gcc/config/arm/vxworks.h
@@ -1,5 +1,5 @@
/* Definitions of target machine for GCC,
- for ARM with targetting the VXWorks run time environment.
+ for ARM with targeting the VXWorks run time environment.
Copyright (C) 1999, 2000, 2003, 2004, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c
index 38afc7abf93..208f650c9af 100644
--- a/gcc/config/avr/avr.c
+++ b/gcc/config/avr/avr.c
@@ -6840,7 +6840,7 @@ avr_progmem_p (tree decl, tree attributes)
/* Scan type TYP for pointer references to address space ASn.
Return ADDR_SPACE_GENERIC (i.e. 0) if all pointers targeting
the AS are also declared to be CONST.
- Otherwise, return the respective addres space, i.e. a value != 0. */
+ Otherwise, return the respective address space, i.e. a value != 0. */
static addr_space_t
avr_nonconst_pointer_addrspace (tree typ)
@@ -6884,7 +6884,7 @@ avr_nonconst_pointer_addrspace (tree typ)
}
-/* Sanity check NODE so that all pointers targeting non-generic addres spaces
+/* Sanity check NODE so that all pointers targeting non-generic address spaces
go along with CONST qualifier. Writing to these address spaces should
be detected and complained about as early as possible. */
@@ -9727,7 +9727,7 @@ avr_emit_movmemhi (rtx *xop)
/* FIXME: Register allocator does a bad job and might spill address
register(s) inside the loop leading to additional move instruction
to/from stack which could clobber tmp_reg. Thus, do *not* emit
- load and store as seperate insns. Instead, we perform the copy
+ load and store as separate insns. Instead, we perform the copy
by means of one monolithic insn. */
gcc_assert (TMP_REGNO == LPM_REGNO);
diff --git a/gcc/config/avr/avr.h b/gcc/config/avr/avr.h
index 17867eb342e..54c127469e1 100644
--- a/gcc/config/avr/avr.h
+++ b/gcc/config/avr/avr.h
@@ -713,7 +713,7 @@ struct GTY(()) machine_function
int attributes_checked_p;
};
-/* AVR does not round pushes, but the existance of this macro is
+/* AVR does not round pushes, but the existence of this macro is
required in order for pushes to be generated. */
#define PUSH_ROUNDING(X) (X)
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md
index 3fe06da661c..2b1a83c607a 100644
--- a/gcc/config/avr/avr.md
+++ b/gcc/config/avr/avr.md
@@ -29,7 +29,7 @@
;; k Reverse branch condition.
;;..m..Constant Direct Data memory address.
;; i Print the SFR address quivalent of a CONST_INT or a CONST_INT
-;; RAM address. The resulting addres is suitable to be used in IN/OUT.
+;; RAM address. The resulting address is suitable to be used in IN/OUT.
;; o Displacement for (mem (plus (reg) (const_int))) operands.
;; p POST_INC or PRE_DEC address as a pointer (X, Y, Z)
;; r POST_INC or PRE_DEC address as a register (r26, r28, r30)
diff --git a/gcc/config/avr/avr.opt b/gcc/config/avr/avr.opt
index d4d6b7826d8..10769e80e4c 100644
--- a/gcc/config/avr/avr.opt
+++ b/gcc/config/avr/avr.opt
@@ -76,4 +76,5 @@ When accessing RAM, use X as imposed by the hardware, i.e. just use pre-decremen
;; For rationale behind -msp8 see explanation in avr.h.
msp8
-Target Report RejectNegative Undocumented Var(avr_sp8) Init(0)
+Target Report RejectNegative Var(avr_sp8) Init(0)
+The device has no SPH special function register. This option will be overridden by the compiler driver with the correct setting if presence/absence of SPH can be deduced from -mmcu=MCU.
diff --git a/gcc/config/avr/builtins.def b/gcc/config/avr/builtins.def
index 24537052eb0..4b04ff1b367 100644
--- a/gcc/config/avr/builtins.def
+++ b/gcc/config/avr/builtins.def
@@ -38,7 +38,7 @@ DEF_BUILTIN ("__builtin_avr_cli", 0, AVR_BUILTIN_CLI, void_ftype_void, CODE_FO
DEF_BUILTIN ("__builtin_avr_wdr", 0, AVR_BUILTIN_WDR, void_ftype_void, CODE_FOR_wdr)
DEF_BUILTIN ("__builtin_avr_sleep", 0, AVR_BUILTIN_SLEEP, void_ftype_void, CODE_FOR_sleep)
-/* Mapped to respective instruction but might alse be folded away
+/* Mapped to respective instruction but might also be folded away
or emit as libgcc call if ISA does not provide the instruction. */
DEF_BUILTIN ("__builtin_avr_swap", 1, AVR_BUILTIN_SWAP, uchar_ftype_uchar, CODE_FOR_rotlqi3_4)
DEF_BUILTIN ("__builtin_avr_fmul", 2, AVR_BUILTIN_FMUL, uint_ftype_uchar_uchar, CODE_FOR_fmul)
diff --git a/gcc/config/avr/gen-avr-mmcu-texi.c b/gcc/config/avr/gen-avr-mmcu-texi.c
index 0bbd3a30b71..b5cb3c4a8a4 100644
--- a/gcc/config/avr/gen-avr-mmcu-texi.c
+++ b/gcc/config/avr/gen-avr-mmcu-texi.c
@@ -20,10 +20,38 @@
#include "avr-devices.c"
+static const char*
+mcu_name[sizeof avr_mcu_types / sizeof avr_mcu_types[0]];
+
+static int
+comparator (const void *va, const void *vb)
+{
+ const char* const *a = (const char* const*) va;
+ const char* const *b = (const char* const*) vb;
+
+ return strcmp (*a, *b);
+}
+
+static void
+print_mcus (size_t n_mcus)
+{
+ size_t i;
+
+ if (!n_mcus)
+ return;
+
+ qsort (mcu_name, n_mcus, sizeof (char*), comparator);
+
+ printf ("@*@var{mcu}@tie{}=");
+
+ for (i = 0; i < n_mcus; i++)
+ printf (" @code{%s}%s", mcu_name[i], i == n_mcus-1 ? ".\n\n" : ",");
+}
+
int main (void)
{
enum avr_arch arch = 0;
- unsigned i, first = 1;
+ size_t i, n_mcus = 0;
const struct mcu_type_s *mcu;
printf ("@c Copyright (C) 2012 Free Software Foundation, Inc.\n");
@@ -46,27 +74,22 @@ int main (void)
{
arch = mcu->arch;
+ /* Start a new architecture: Flush the MCUs collected so far. */
+
+ print_mcus (n_mcus);
+ n_mcus = 0;
+
for (i = 0; i < sizeof (avr_texinfo) / sizeof (*avr_texinfo); i++)
- {
- if (arch == avr_texinfo[i].arch)
- {
- if (mcu != avr_mcu_types)
- printf (".\n\n");
- printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
- printf ("@*@var{mcu}@tie{}=");
- first = 1;
- break;
- }
- }
+ if (arch == avr_texinfo[i].arch)
+ printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
}
else if (arch == (enum avr_arch) mcu->arch)
{
- printf ("%s @code{%s}", first ? "" : ",", mcu->name);
- first = 0;
+ mcu_name[n_mcus++] = mcu->name;
}
}
- printf (".\n\n");
+ print_mcus (n_mcus);
printf ("@end table\n");
return EXIT_SUCCESS;
diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr
index 24cdd92590a..5da9ef2edda 100644
--- a/gcc/config/avr/t-avr
+++ b/gcc/config/avr/t-avr
@@ -47,10 +47,18 @@ gen-avr-mmcu-texi$(build_exeext): $(srcdir)/config/avr/gen-avr-mmcu-texi.c \
$(TM_H) $(AVR_MCUS) $(srcdir)/config/avr/avr-devices.c
$(CC) $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< -o $@
-avr-devices.o: s-avr-mmcu-texi
+# Make sure that the -mmcu= documentation is in sync with the compiler.
+$(srcdir)/doc/avr-mmcu.texi: s-avr-mmcu-texi; @true
+# invoke.texi @includes avr-mmcu.texi. Put this dependency here instead
+# of in the global Makefile so that developers of other backends are not
+# bothered with AVR stuff.
+$(srcdir)/doc/invoke.texi: $(srcdir)/doc/avr-mmcu.texi
+
+# Ensure that device support is in sync with -mmcu= documentation.
s-avr-mmcu-texi: gen-avr-mmcu-texi$(build_exeext)
- $(RUN_GEN) $< | sed -e 's:\r::g' > avr-mmcu.texi
+ $(RUN_GEN) ./$< > tmp-avr-mmcu.texi
+ $(SHELL) $(srcdir)/../move-if-change tmp-avr-mmcu.texi avr-mmcu.texi
@if cmp -s $(srcdir)/doc/avr-mmcu.texi avr-mmcu.texi; then \
$(STAMP) $@; \
else \
diff --git a/gcc/config/bfin/bfin.c b/gcc/config/bfin/bfin.c
index 1342c568fd0..3cef847c952 100644
--- a/gcc/config/bfin/bfin.c
+++ b/gcc/config/bfin/bfin.c
@@ -44,7 +44,6 @@
#include "recog.h"
#include "optabs.h"
#include "ggc.h"
-#include "integrate.h"
#include "cgraph.h"
#include "langhooks.h"
#include "bfin-protos.h"
diff --git a/gcc/config/c6x/c6x.c b/gcc/config/c6x/c6x.c
index 8a368892bb2..978d0cba82b 100644
--- a/gcc/config/c6x/c6x.c
+++ b/gcc/config/c6x/c6x.c
@@ -40,7 +40,7 @@
#include "tm-preds.h"
#include "tm-constrs.h"
#include "df.h"
-#include "integrate.h"
+#include "function.h"
#include "diagnostic-core.h"
#include "cgraph.h"
#include "cfglayout.h"
@@ -3630,7 +3630,7 @@ typedef struct c6x_sched_context
/* The current scheduling state. */
static struct c6x_sched_context ss;
-/* The following variable value is DFA state before issueing the first insn
+/* The following variable value is DFA state before issuing the first insn
in the current clock cycle. This is used in c6x_variable_issue for
comparison with the state after issuing the last insn in a cycle. */
static state_t prev_cycle_state;
diff --git a/gcc/config/cr16/cr16.c b/gcc/config/cr16/cr16.c
index 852c808f571..df272600c8b 100644
--- a/gcc/config/cr16/cr16.c
+++ b/gcc/config/cr16/cr16.c
@@ -61,7 +61,7 @@
#define FUNC_IS_NORETURN_P(decl) (TREE_THIS_VOLATILE (decl))
/* Predicate that holds when we need to save registers even for 'noreturn'
- functions, to accomodate for unwinding. */
+ functions, to accommodate for unwinding. */
#define MUST_SAVE_REGS_P() \
(flag_unwind_tables || (flag_exceptions && !UI_SJLJ))
diff --git a/gcc/config/cr16/cr16.md b/gcc/config/cr16/cr16.md
index 5e4530c32ce..12072b46f0c 100644
--- a/gcc/config/cr16/cr16.md
+++ b/gcc/config/cr16/cr16.md
@@ -144,7 +144,7 @@
[(set_attr "length" "2")]
)
-;; Arithmetic Instuction Patterns
+;; Arithmetic Instruction Patterns
;; Addition-Subtraction "adddi3/subdi3" insns.
(define_insn "<plusminus_insn>di3"
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h
index edb5f97e18b..78fbe684078 100644
--- a/gcc/config/cris/cris.h
+++ b/gcc/config/cris/cris.h
@@ -156,11 +156,13 @@ extern int cris_cpu_version;
" -D__CRIS_arch_tune=" CRIS_DEFAULT_TUNE "}}}}}"\
CRIS_ARCH_CPP_DEFAULT
-/* Override previous definitions (linux.h). */
+/* Override previous definitions (../linux.h). */
#undef CC1_SPEC
#define CC1_SPEC \
"%{metrax4:-march=v3}\
%{metrax100:-march=v8}\
+ %{march=*:-march=%*}\
+ %{mcpu=*:-mcpu=%*}\
%(cc1_subtarget)"
/* For the cris-*-elf subtarget. */
@@ -190,7 +192,9 @@ extern int cris_cpu_version;
MAYBE_AS_NO_MUL_BUG_ABORT \
"%(asm_subtarget)\
%{march=*:%{mcpu=*:%edo not specify both -march=... and -mcpu=...}}\
- %{march=v32:--march=v32} %{mcpu=v32:--march=v32}"
+ %{march=v0|mcpu=v0|march=v3|mcpu=v3|march=v8|mcpu=v8:--march=v0_v10}\
+ %{march=v10|mcpu=v10:--march=v10}\
+ %{march=v32|mcpu=v32:--march=v32}"
/* For the cris-*-elf subtarget. */
#define CRIS_ASM_SUBTARGET_SPEC \
diff --git a/gcc/config/cris/cris.md b/gcc/config/cris/cris.md
index 49f36e350da..7d691f5a0b5 100644
--- a/gcc/config/cris/cris.md
+++ b/gcc/config/cris/cris.md
@@ -1530,7 +1530,7 @@
"movs<m> %1,%0"
[(set_attr "slottable" "yes,yes,no")])
-;; To do a byte->word extension, extend to dword, exept that the top half
+;; To do a byte->word extension, extend to dword, except that the top half
;; of the register will be clobbered. FIXME: Perhaps this is not needed.
(define_insn "extendqihi2"
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 10cbdc39a3f..6805cf1264e 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -3461,7 +3461,7 @@ darwin_function_section (tree decl, enum node_frequency freq,
/* Startup code should go to startup subsection unless it is
unlikely executed (this happens especially with function splitting
- where we can split away unnecesary parts of static constructors). */
+ where we can split away unnecessary parts of static constructors). */
if (startup && freq != NODE_FREQUENCY_UNLIKELY_EXECUTED)
return (weak)
? darwin_sections[text_startup_coal_section]
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index 3e6efd79061..5855778109d 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -356,7 +356,9 @@ extern GTY(()) int darwin_ms_struct;
%{!Zbundle:%{pg:%{static:-lgcrt0.o} \
%{!static:%{object:-lgcrt0.o} \
%{!object:%{preload:-lgcrt0.o} \
- %{!preload:-lgcrt1.o %(darwin_crt2)}}}} \
+ %{!preload:-lgcrt1.o \
+ %:version-compare(>= 10.8 mmacosx-version-min= -no_new_main) \
+ %(darwin_crt2)}}}} \
%{!pg:%{static:-lcrt0.o} \
%{!static:%{object:-lcrt0.o} \
%{!object:%{preload:-lcrt0.o} \
@@ -379,7 +381,7 @@ extern GTY(()) int darwin_ms_struct;
#define DARWIN_CRT1_SPEC \
"%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \
%:version-compare(>< 10.5 10.6 mmacosx-version-min= -lcrt1.10.5.o) \
- %:version-compare(>= 10.6 mmacosx-version-min= -lcrt1.10.6.o) \
+ %:version-compare(>< 10.6 10.8 mmacosx-version-min= -lcrt1.10.6.o) \
%{fgnu-tm: -lcrttms.o}"
/* Default Darwin ASM_SPEC, very simple. */
@@ -414,6 +416,8 @@ extern GTY(()) int darwin_ms_struct;
#define TARGET_WANT_DEBUG_PUB_SECTIONS true
+#define TARGET_FORCE_AT_COMP_DIR true
+
/* When generating stabs debugging, use N_BINCL entries. */
#define DBX_USE_BINCL
diff --git a/gcc/config/darwin.opt b/gcc/config/darwin.opt
index 3fcd35f090d..23419f9b0b1 100644
--- a/gcc/config/darwin.opt
+++ b/gcc/config/darwin.opt
@@ -224,7 +224,7 @@ Generate code suitable for fast turn around debugging
; and cc1plus don't crash if no -mmacosx-version-min is passed. The
; driver will always pass a -mmacosx-version-min, so in normal use the
; Init is never used. Useful for setting the OS on which people
-; ususally debug.
+; usually debug.
mmacosx-version-min=
Target Joined Report Var(darwin_macosx_version_min) Init("10.6")
The earliest MacOS X version on which this program will run
diff --git a/gcc/config/epiphany/epiphany.c b/gcc/config/epiphany/epiphany.c
index f1a8db76353..aca296f0152 100644
--- a/gcc/config/epiphany/epiphany.c
+++ b/gcc/config/epiphany/epiphany.c
@@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "tm-constrs.h"
#include "tree-pass.h"
-#include "integrate.h"
/* Which cpu we're compiling for. */
int epiphany_cpu_type;
diff --git a/gcc/config/frv/frv.c b/gcc/config/frv/frv.c
index ace9e437118..d7a111acbbb 100644
--- a/gcc/config/frv/frv.c
+++ b/gcc/config/frv/frv.c
@@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
#include "target.h"
#include "target-def.h"
#include "targhooks.h"
-#include "integrate.h"
#include "langhooks.h"
#include "df.h"
diff --git a/gcc/config/i386/i386-c.c b/gcc/config/i386/i386-c.c
index 23427bf034f..0f78d8928ed 100644
--- a/gcc/config/i386/i386-c.c
+++ b/gcc/config/i386/i386-c.c
@@ -48,7 +48,7 @@ ix86_target_macros_internal (HOST_WIDE_INT isa_flag,
void (*def_or_undef) (cpp_reader *,
const char *))
{
- /* For some of the k6/pentium varients there weren't seperate ISA bits to
+ /* For some of the k6/pentium varients there weren't separate ISA bits to
identify which tune/arch flag was passed, so figure it out here. */
size_t arch_len = strlen (ix86_arch_string);
size_t tune_len = strlen (ix86_tune_string);
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 9e4ada03be4..4c680953a7f 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -9185,7 +9185,7 @@ choose_baseaddr (HOST_WIDE_INT cfa_offset)
if (m->use_fast_prologue_epilogue)
{
/* Choose the base register most likely to allow the most scheduling
- opportunities. Generally FP is valid througout the function,
+ opportunities. Generally FP is valid throughout the function,
while DRAP must be reloaded within the epilogue. But choose either
over the SP due to increased encoding size. */
@@ -12810,13 +12810,13 @@ legitimize_tls_address (rtx x, enum tls_model model, bool for_mov)
case TLS_MODEL_INITIAL_EXEC:
if (TARGET_64BIT)
{
- if (TARGET_SUN_TLS)
+ if (TARGET_SUN_TLS && !TARGET_X32)
{
/* The Sun linker took the AMD64 TLS spec literally
and can only handle %rax as destination of the
initial executable code sequence. */
- dest = gen_reg_rtx (Pmode);
+ dest = gen_reg_rtx (DImode);
emit_insn (gen_tls_initial_exec_64_sun (dest, x));
return dest;
}
@@ -33112,7 +33112,7 @@ ix86_count_insn (basic_block bb)
return min_prev_count;
}
-/* Pad short funtion to 4 instructions. */
+/* Pad short function to 4 instructions. */
static void
ix86_pad_short_function (void)
@@ -34410,7 +34410,7 @@ half:
}
else
{
- rtx mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), false);
+ rtx mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
emit_move_insn (mem, target);
@@ -34627,7 +34627,7 @@ ix86_expand_vector_extract (bool mmx_ok, rtx target, rtx vec, int elt)
}
else
{
- rtx mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), false);
+ rtx mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
emit_move_insn (mem, vec);
@@ -36909,7 +36909,7 @@ expand_vec_perm_interleave2 (struct expand_vec_perm_d *d)
{
if (d->perm[0] / nelt2 == nonzero_halves[1])
{
- /* Attempt to increase the likelyhood that dfinal
+ /* Attempt to increase the likelihood that dfinal
shuffle will be intra-lane. */
char tmph = nonzero_halves[0];
nonzero_halves[0] = nonzero_halves[1];
@@ -38985,7 +38985,7 @@ fits_dispatch_window (rtx insn)
/* Make disp_cmp and disp_jcc get scheduled at the latest. These
instructions should be given the lowest priority in the
scheduling process in Haifa scheduler to make sure they will be
- scheduled in the same dispatch window as the refrence to them. */
+ scheduled in the same dispatch window as the reference to them. */
if (group == disp_jcc || group == disp_cmp)
return false;
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 8fb5b40da73..e49ee2c74da 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -1585,13 +1585,13 @@ spill_xfmode_rfmode_operand (rtx in, int force, enum machine_mode mode)
&& GET_MODE (SUBREG_REG (in)) == TImode
&& GET_CODE (SUBREG_REG (in)) == REG)
{
- rtx memt = assign_stack_temp (TImode, 16, 0);
+ rtx memt = assign_stack_temp (TImode, 16);
emit_move_insn (memt, SUBREG_REG (in));
return adjust_address (memt, mode, 0);
}
else if (force && GET_CODE (in) == REG)
{
- rtx memx = assign_stack_temp (mode, 16, 0);
+ rtx memx = assign_stack_temp (mode, 16);
emit_move_insn (memx, in);
return memx;
}
@@ -1716,7 +1716,7 @@ ia64_expand_movxf_movrf (enum machine_mode mode, rtx operands[])
memt = adjust_address (in, TImode, 0);
else
{
- memt = assign_stack_temp (TImode, 16, 0);
+ memt = assign_stack_temp (TImode, 16);
memx = adjust_address (memt, mode, 0);
emit_move_insn (memx, in);
}
@@ -3454,7 +3454,7 @@ output_probe_stack_range (rtx reg1, rtx reg2)
Also any insns generated here should have RTX_FRAME_RELATED_P(insn) = 1
so that the debug info generation code can handle them properly.
- The register save area is layed out like so:
+ The register save area is laid out like so:
cfa+16
[ varargs spill area ]
[ fr register spill area ]
diff --git a/gcc/config/m32r/m32r.c b/gcc/config/m32r/m32r.c
index b27a3a5bb89..27386468844 100644
--- a/gcc/config/m32r/m32r.c
+++ b/gcc/config/m32r/m32r.c
@@ -29,6 +29,7 @@
#include "insn-config.h"
#include "conditions.h"
#include "output.h"
+#include "dbxout.h"
#include "insn-attr.h"
#include "flags.h"
#include "expr.h"
@@ -36,7 +37,6 @@
#include "recog.h"
#include "diagnostic-core.h"
#include "ggc.h"
-#include "integrate.h"
#include "df.h"
#include "tm_p.h"
#include "target.h"
diff --git a/gcc/config/m68k/cf.md b/gcc/config/m68k/cf.md
index d6f1e92c3c9..96519dc9e4d 100644
--- a/gcc/config/m68k/cf.md
+++ b/gcc/config/m68k/cf.md
@@ -52,7 +52,7 @@
(define_cpu_unit "cf_dsoc,cf_agex" "cfv123_oep")
-;; A memory unit that is reffered to as 'certain hardware resources' in
+;; A memory unit that is referred to as 'certain hardware resources' in
;; ColdFire reference manuals. This unit remains occupied for two cycles
;; after last dsoc cycle of a store - hence there is a 2 cycle delay between
;; two consecutive stores.
diff --git a/gcc/config/mep/mep.c b/gcc/config/mep/mep.c
index edfff549e2a..8e6cc4d1a8c 100644
--- a/gcc/config/mep/mep.c
+++ b/gcc/config/mep/mep.c
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "ggc.h"
#include "diagnostic-core.h"
-#include "integrate.h"
#include "target.h"
#include "target-def.h"
#include "langhooks.h"
@@ -3869,7 +3868,7 @@ static int prev_opcode = 0;
/* This isn't as optimal as it could be, because we don't know what
control register the STC opcode is storing in. We only need to add
- the nop if it's the relevent register, but we add it for irrelevent
+ the nop if it's the relevant register, but we add it for irrelevant
registers also. */
void
@@ -6993,7 +6992,7 @@ core_insn_p (rtx insn)
}
/* Mark coprocessor instructions that can be bundled together with
- the immediately preceeding core instruction. This is later used
+ the immediately preceding core instruction. This is later used
to emit the "+" that tells the assembler to create a VLIW insn.
For unbundled insns, the assembler will automatically add coprocessor
diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
index b170606bc75..8d08bc282ff 100644
--- a/gcc/config/microblaze/microblaze.c
+++ b/gcc/config/microblaze/microblaze.c
@@ -31,7 +31,6 @@
#include "conditions.h"
#include "insn-flags.h"
#include "insn-attr.h"
-#include "integrate.h"
#include "recog.h"
#include "tree.h"
#include "function.h"
@@ -190,7 +189,7 @@ enum reg_class microblaze_regno_to_class[] =
/* MicroBlaze specific machine attributes.
interrupt_handler - Interrupt handler attribute to add interrupt prologue
and epilogue and use appropriate interrupt return.
- save_volatiles - Similiar to interrupt handler, but use normal return. */
+ save_volatiles - Similar to interrupt handler, but use normal return. */
int interrupt_handler;
int save_volatiles;
diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
index 92f0f60f1ff..d17d8948335 100644
--- a/gcc/config/microblaze/microblaze.h
+++ b/gcc/config/microblaze/microblaze.h
@@ -546,7 +546,7 @@ typedef struct microblaze_args
#define FUNCTION_MODE SImode
-/* Mode should alwasy be SImode */
+/* Mode should always be SImode */
#define REGISTER_MOVE_COST(MODE, FROM, TO) \
( GR_REG_CLASS_P (FROM) && GR_REG_CLASS_P (TO) ? 2 \
: (FROM) == ST_REGS && GR_REG_CLASS_P (TO) ? 4 \
diff --git a/gcc/config/mips/4600.md b/gcc/config/mips/4600.md
index c645cbc5d82..fcdbf00d261 100644
--- a/gcc/config/mips/4600.md
+++ b/gcc/config/mips/4600.md
@@ -1,5 +1,5 @@
;; R4600 and R4650 pipeline description.
-;; Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 2004, 2005, 2007, 2012 Free Software Foundation, Inc.
;;
;; This file is part of GCC.
@@ -24,16 +24,30 @@
;; We handle the R4600 and R4650 in much the same way. The only difference
;; is in the integer multiplication and division costs.
-(define_insn_reservation "r4600_imul" 10
+(define_insn_reservation "r4600_imul_si" 10
(and (eq_attr "cpu" "r4600")
- (eq_attr "type" "imul,imul3,imadd"))
+ (eq_attr "type" "imul,imul3,imadd")
+ (eq_attr "mode" "SI"))
"imuldiv*10")
-(define_insn_reservation "r4600_idiv" 42
+(define_insn_reservation "r4600_imul_di" 12
(and (eq_attr "cpu" "r4600")
- (eq_attr "type" "idiv"))
+ (eq_attr "type" "imul,imul3,imadd")
+ (eq_attr "mode" "DI"))
+ "imuldiv*12")
+
+(define_insn_reservation "r4600_idiv_si" 42
+ (and (eq_attr "cpu" "r4600")
+ (eq_attr "type" "idiv")
+ (eq_attr "mode" "SI"))
"imuldiv*42")
+(define_insn_reservation "r4600_idiv_di" 74
+ (and (eq_attr "cpu" "r4600")
+ (eq_attr "type" "idiv")
+ (eq_attr "mode" "DI"))
+ "imuldiv*74")
+
(define_insn_reservation "r4650_imul" 4
(and (eq_attr "cpu" "r4650")
diff --git a/gcc/config/mips/mips.c b/gcc/config/mips/mips.c
index 2e6c3001178..122bc98efa0 100644
--- a/gcc/config/mips/mips.c
+++ b/gcc/config/mips/mips.c
@@ -50,7 +50,6 @@ along with GCC; see the file COPYING3. If not see
#include "debug.h"
#include "target.h"
#include "target-def.h"
-#include "integrate.h"
#include "langhooks.h"
#include "cfglayout.h"
#include "sched-int.h"
@@ -17201,7 +17200,7 @@ static void
mips_expand_vi_general (enum machine_mode vmode, enum machine_mode imode,
unsigned nelt, unsigned nvar, rtx target, rtx vals)
{
- rtx mem = assign_stack_temp (vmode, GET_MODE_SIZE (vmode), 0);
+ rtx mem = assign_stack_temp (vmode, GET_MODE_SIZE (vmode));
unsigned int i, isize = GET_MODE_SIZE (imode);
if (nvar < nelt)
diff --git a/gcc/config/mmix/mmix.c b/gcc/config/mmix/mmix.c
index 8f801e6c7ca..3a99cb626af 100644
--- a/gcc/config/mmix/mmix.c
+++ b/gcc/config/mmix/mmix.c
@@ -41,7 +41,6 @@ along with GCC; see the file COPYING3. If not see
#include "dwarf2.h"
#include "debug.h"
#include "tm_p.h"
-#include "integrate.h"
#include "target.h"
#include "target-def.h"
#include "df.h"
diff --git a/gcc/config/mmix/mmix.md b/gcc/config/mmix/mmix.md
index dbd4c0f778d..1cd397a8a14 100644
--- a/gcc/config/mmix/mmix.md
+++ b/gcc/config/mmix/mmix.md
@@ -529,7 +529,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
better way. */
stack_slot
= validize_mem (assign_stack_temp (SFmode,
- GET_MODE_SIZE (SFmode), 0));
+ GET_MODE_SIZE (SFmode)));
emit_insn (gen_floatdisf2 (stack_slot, operands[1]));
emit_move_insn (operands[0], stack_slot);
DONE;
@@ -563,7 +563,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
way. */
stack_slot
= validize_mem (assign_stack_temp (SFmode,
- GET_MODE_SIZE (SFmode), 0));
+ GET_MODE_SIZE (SFmode)));
emit_insn (gen_floatunsdisf2 (stack_slot, operands[1]));
emit_move_insn (operands[0], stack_slot);
DONE;
@@ -645,7 +645,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
way. */
stack_slot
= validize_mem (assign_stack_temp (SFmode,
- GET_MODE_SIZE (SFmode), 0));
+ GET_MODE_SIZE (SFmode)));
emit_insn (gen_truncdfsf2 (stack_slot, operands[1]));
emit_move_insn (operands[0], stack_slot);
DONE;
@@ -678,7 +678,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
better way. */
stack_slot
= validize_mem (assign_stack_temp (SFmode,
- GET_MODE_SIZE (SFmode), 0));
+ GET_MODE_SIZE (SFmode)));
emit_move_insn (stack_slot, operands[1]);
emit_insn (gen_extendsfdf2 (operands[0], stack_slot));
DONE;
diff --git a/gcc/config/mn10300/mn10300.c b/gcc/config/mn10300/mn10300.c
index 1554f94644c..5b9f0699469 100644
--- a/gcc/config/mn10300/mn10300.c
+++ b/gcc/config/mn10300/mn10300.c
@@ -2762,7 +2762,7 @@ mn10300_adjust_sched_cost (rtx insn, rtx link, rtx dep, int cost)
Chapter 3 of the MN103E Series Instruction Manual
where it says:
- "When the preceeding instruction is a CPU load or
+ "When the preceding instruction is a CPU load or
store instruction, a following FPU instruction
cannot be executed until the CPU completes the
latency period even though there are no register
@@ -2788,7 +2788,7 @@ mn10300_adjust_sched_cost (rtx insn, rtx link, rtx dep, int cost)
return cost;
/* XXX: Verify: The text of 1-7-4 implies that the restriction
- only applies when an INTEGER load/store preceeds an FPU
+ only applies when an INTEGER load/store precedes an FPU
instruction, but is this true ? For now we assume that it is. */
if (GET_MODE_CLASS (GET_MODE (SET_SRC (PATTERN (insn)))) != MODE_INT)
return cost;
diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md
index 91378a79345..a1cbc7a9fd4 100644
--- a/gcc/config/mn10300/mn10300.md
+++ b/gcc/config/mn10300/mn10300.md
@@ -999,7 +999,7 @@
;; ??? Note that AM33 has a third multiply variant that puts the high part
;; into the MDRQ register, however this variant also constrains the inputs
;; to be in DATA_REGS and thus isn't as helpful as it might be considering
-;; the existance of the 4-operand multiply. Nor is there a set of divide
+;; the existence of the 4-operand multiply. Nor is there a set of divide
;; insns that use MDRQ. Given that there is an IMM->MDRQ insn, this would
;; have been very handy for starting udivmodsi4...
@@ -1808,7 +1808,7 @@
)
;; ----------------------------------------------------------------------
-;; MISCELANEOUS
+;; MISCELLANEOUS
;; ----------------------------------------------------------------------
;; Note the use of the (const_int 0) when generating the insn that matches
diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c
index 56c889db88c..25ae5d81f57 100644
--- a/gcc/config/pa/pa.c
+++ b/gcc/config/pa/pa.c
@@ -33,11 +33,11 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tree.h"
#include "output.h"
+#include "dbxout.h"
#include "except.h"
#include "expr.h"
#include "optabs.h"
#include "reload.h"
-#include "integrate.h"
#include "function.h"
#include "diagnostic-core.h"
#include "ggc.h"
@@ -188,6 +188,7 @@ static enum machine_mode pa_c_mode_for_suffix (char);
static section *pa_function_section (tree, enum node_frequency, bool, bool);
static bool pa_cannot_force_const_mem (enum machine_mode, rtx);
static bool pa_legitimate_constant_p (enum machine_mode, rtx);
+static unsigned int pa_section_type_flags (tree, const char *, int);
/* The following extra sections are only used for SOM. */
static GTY(()) section *som_readonly_data_section;
@@ -383,6 +384,8 @@ static size_t n_deferred_plabels = 0;
#undef TARGET_LEGITIMATE_CONSTANT_P
#define TARGET_LEGITIMATE_CONSTANT_P pa_legitimate_constant_p
+#undef TARGET_SECTION_TYPE_FLAGS
+#define TARGET_SECTION_TYPE_FLAGS pa_section_type_flags
struct gcc_target targetm = TARGET_INITIALIZER;
@@ -5939,7 +5942,7 @@ pa_secondary_reload (bool in_p, rtx x, reg_class_t rclass_i,
}
/* Request a secondary reload with a general scratch register
- for everthing else. ??? Could symbolic operands be handled
+ for everything else. ??? Could symbolic operands be handled
directly when generating non-pic PA 2.0 code? */
sri->icode = (in_p
? direct_optab_handler (reload_in_optab, mode)
@@ -10340,7 +10343,29 @@ pa_legitimate_constant_p (enum machine_mode mode, rtx x)
&& !pa_cint_ok_for_move (INTVAL (x)))
return false;
+ if (function_label_operand (x, mode))
+ return false;
+
return true;
}
+/* Implement TARGET_SECTION_TYPE_FLAGS. */
+
+static unsigned int
+pa_section_type_flags (tree decl, const char *name, int reloc)
+{
+ unsigned int flags;
+
+ flags = default_section_type_flags (decl, name, reloc);
+
+ /* Function labels are placed in the constant pool. This can
+ cause a section conflict if decls are put in ".data.rel.ro"
+ or ".data.rel.ro.local" using the __attribute__ construct. */
+ if (strcmp (name, ".data.rel.ro") == 0
+ || strcmp (name, ".data.rel.ro.local") == 0)
+ flags |= SECTION_WRITE | SECTION_RELRO;
+
+ return flags;
+}
+
#include "gt-pa.h"
diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c
index 57cbd157f41..2beddce8cc9 100644
--- a/gcc/config/picochip/picochip.c
+++ b/gcc/config/picochip/picochip.c
@@ -40,7 +40,6 @@ along with GCC; see the file COPYING3. If not, see
#include "function.h"
#include "output.h"
#include "basic-block.h"
-#include "integrate.h"
#include "diagnostic-core.h"
#include "ggc.h"
#include "hashtab.h"
diff --git a/gcc/config/picochip/picochip.h b/gcc/config/picochip/picochip.h
index abe6d6432b5..9eb7df94c01 100644
--- a/gcc/config/picochip/picochip.h
+++ b/gcc/config/picochip/picochip.h
@@ -221,7 +221,7 @@ extern enum picochip_dfa_type picochip_schedule_type;
#define CALL_USED_REGISTERS {1,1,1,1,1,1,0,0, 0,0,0,0,1,1,0,1, 1,1,1,1}
#define CALL_REALLY_USED_REGISTERS {1,1,1,1,1,1,0,0, 0,0,0,0,1,1,0,0, 0,1,0,0}
-/* Define the number of the picoChip link and condition psuedo registers. */
+/* Define the number of the picoChip link and condition pseudo registers. */
#define LINK_REGNUM 12
#define CC_REGNUM 17
#define ACC_REGNUM 16
diff --git a/gcc/config/rs6000/a2.md b/gcc/config/rs6000/a2.md
index 851d8949ff7..79fdf913de1 100644
--- a/gcc/config/rs6000/a2.md
+++ b/gcc/config/rs6000/a2.md
@@ -25,7 +25,7 @@
;; The multiplier pipeline.
(define_cpu_unit "mult" "ppca2")
-;; The auxillary processor unit (FP/vector unit).
+;; The auxiliary processor unit (FP/vector unit).
(define_cpu_unit "axu" "ppca2")
;; D.4.6
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index d7cb49db2d8..5796e4add0a 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -40,8 +40,8 @@
#include "except.h"
#include "function.h"
#include "output.h"
+#include "dbxout.h"
#include "basic-block.h"
-#include "integrate.h"
#include "diagnostic-core.h"
#include "toplev.h"
#include "ggc.h"
@@ -2077,7 +2077,7 @@ rs6000_init_hard_regno_mode_ok (bool global_init_p)
/* TODO add SPE and paired floating point vector support. */
- /* Register class constaints for the constraints that depend on compile
+ /* Register class constraints for the constraints that depend on compile
switches. */
if (TARGET_HARD_FLOAT && TARGET_FPRS)
rs6000_constraints[RS6000_CONSTRAINT_f] = FLOAT_REGS;
@@ -2328,7 +2328,7 @@ darwin_rs6000_override_options (void)
/* Unless the user (not the configurer) has explicitly overridden
it with -mcpu=G3 or -mno-altivec, then 10.5+ targets default to
- G4 unless targetting the kernel. */
+ G4 unless targeting the kernel. */
if (!flag_mkernel
&& !flag_apple_kext
&& strverscmp (darwin_macosx_version_min, "10.5") >= 0
@@ -4576,7 +4576,7 @@ rs6000_expand_vector_init (rtx target, rtx vals)
of 64-bit items is not supported on Altivec. */
if (all_same && GET_MODE_SIZE (inner_mode) <= 4)
{
- mem = assign_stack_temp (mode, GET_MODE_SIZE (inner_mode), 0);
+ mem = assign_stack_temp (mode, GET_MODE_SIZE (inner_mode));
emit_move_insn (adjust_address_nv (mem, inner_mode, 0),
XVECEXP (vals, 0, 0));
x = gen_rtx_UNSPEC (VOIDmode,
@@ -4612,7 +4612,7 @@ rs6000_expand_vector_init (rtx target, rtx vals)
/* Construct the vector in memory one field at a time
and load the whole vector. */
- mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), 0);
+ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
for (i = 0; i < n_elts; i++)
emit_move_insn (adjust_address_nv (mem, inner_mode,
i * GET_MODE_SIZE (inner_mode)),
@@ -4641,7 +4641,7 @@ rs6000_expand_vector_set (rtx target, rtx val, int elt)
}
/* Load single variable value. */
- mem = assign_stack_temp (mode, GET_MODE_SIZE (inner_mode), 0);
+ mem = assign_stack_temp (mode, GET_MODE_SIZE (inner_mode));
emit_move_insn (adjust_address_nv (mem, inner_mode, 0), val);
x = gen_rtx_UNSPEC (VOIDmode,
gen_rtvec (1, const0_rtx), UNSPEC_LVE);
@@ -4696,7 +4696,7 @@ rs6000_expand_vector_extract (rtx target, rtx vec, int elt)
}
/* Allocate mode-sized buffer. */
- mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), 0);
+ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
emit_move_insn (mem, vec);
@@ -27812,7 +27812,7 @@ rs6000_allocate_stack_temp (enum machine_mode mode,
bool offsettable_p,
bool reg_reg_p)
{
- rtx stack = assign_stack_temp (mode, GET_MODE_SIZE (mode), 0);
+ rtx stack = assign_stack_temp (mode, GET_MODE_SIZE (mode));
rtx addr = XEXP (stack, 0);
int strict_p = (reload_in_progress || reload_completed);
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 26b2720cac8..ba4acb69de7 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -10038,7 +10038,7 @@
operands[2] = gen_reg_rtx (DFmode);
operands[3] = gen_reg_rtx (DFmode);
operands[4] = gen_reg_rtx (DImode);
- operands[5] = assign_stack_temp (DImode, GET_MODE_SIZE (DImode), 0);
+ operands[5] = assign_stack_temp (DImode, GET_MODE_SIZE (DImode));
})
(define_insn_and_split "*fix_trunctfsi2_internal"
diff --git a/gcc/config/rs6000/t-rs6000 b/gcc/config/rs6000/t-rs6000
index 5204f589d5d..f912e54f218 100644
--- a/gcc/config/rs6000/t-rs6000
+++ b/gcc/config/rs6000/t-rs6000
@@ -25,7 +25,7 @@ rs6000.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h \
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
- output.h $(BASIC_BLOCK_H) $(INTEGRATE_H) toplev.h $(GGC_H) $(HASHTAB_H) \
+ output.h dbxout.h $(BASIC_BLOCK_H) toplev.h $(GGC_H) $(HASHTAB_H) \
$(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h gt-rs6000.h \
cfglayout.h cfgloop.h $(OPTS_H) $(COMMON_TARGET_H)
diff --git a/gcc/config/rs6000/vector.md b/gcc/config/rs6000/vector.md
index 6674054223b..87a52762a4d 100644
--- a/gcc/config/rs6000/vector.md
+++ b/gcc/config/rs6000/vector.md
@@ -172,7 +172,7 @@
-;; Reload patterns for vector operations. We may need an addtional base
+;; Reload patterns for vector operations. We may need an additional base
;; register to convert the reg+offset addressing to reg+reg for vector
;; registers and reg+reg or (reg+reg)&(-16) addressing to just an index
;; register for gpr registers.
diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md
index 1ba603f4a6e..95ba051a486 100644
--- a/gcc/config/rx/rx.md
+++ b/gcc/config/rx/rx.md
@@ -408,7 +408,7 @@
;; Note - the following set of patterns do not use the "memory_operand"
;; predicate or an "m" constraint because we do not allow symbol_refs
-;; or label_refs as legitmate memory addresses. This matches the
+;; or label_refs as legitimate memory addresses. This matches the
;; behaviour of most of the RX instructions. Only the call/branch
;; instructions are allowed to refer to symbols/labels directly.
;; The call operands are in QImode because that is the value of
diff --git a/gcc/config/rx/rx.opt b/gcc/config/rx/rx.opt
index 308bf0c8ada..76c2f61c79b 100644
--- a/gcc/config/rx/rx.opt
+++ b/gcc/config/rx/rx.opt
@@ -87,7 +87,7 @@ Use the simulator runtime.
mas100-syntax
Target Mask(AS100_SYNTAX) Report
-Generate assembler output that is compatible with the Renesas AS100 assembler. This may restrict some of the compiler's capabilities. The default is to generate GAS compatable syntax.
+Generate assembler output that is compatible with the Renesas AS100 assembler. This may restrict some of the compiler's capabilities. The default is to generate GAS compatible syntax.
;---------------------------------------------------
diff --git a/gcc/config/s390/2097.md b/gcc/config/s390/2097.md
index 77c206ecdbc..333e1b26ff4 100644
--- a/gcc/config/s390/2097.md
+++ b/gcc/config/s390/2097.md
@@ -703,11 +703,11 @@
; Declaration for some pseudo-pipeline stages that reflect the
-; dispatch gap when issueing an INT/FXU/BFU-executed instruction after
+; dispatch gap when issuing an INT/FXU/BFU-executed instruction after
; an instruction executed by a different unit has been executed. The
; approach is that we pretend a pipelined execution of BFU operations
; with as many stages as the gap is long and request that none of
-; these stages is busy when issueing a FXU- or DFU-executed
+; these stages is busy when issuing a FXU- or DFU-executed
; instruction. Similar for FXU- and DFU-executed instructions.
; Declaration for FPU stages.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index b338cd96136..bc0bf8a991a 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -42,7 +42,6 @@ along with GCC; see the file COPYING3. If not see
#include "reload.h"
#include "diagnostic-core.h"
#include "basic-block.h"
-#include "integrate.h"
#include "ggc.h"
#include "target.h"
#include "target-def.h"
@@ -9044,6 +9043,7 @@ s390_gimplify_va_arg (tree valist, tree type, gimple_seq *pre_p,
lab_false = create_artificial_label (UNKNOWN_LOCATION);
lab_over = create_artificial_label (UNKNOWN_LOCATION);
addr = create_tmp_var (ptr_type_node, "addr");
+ mark_sym_for_renaming (addr);
t = fold_convert (TREE_TYPE (reg), size_int (max_reg));
t = build2 (GT_EXPR, boolean_type_node, reg, t);
@@ -10533,7 +10533,7 @@ s390_z10_prevent_earlyload_conflicts (rtx *ready, int *nready_p)
}
/* This function is called via hook TARGET_SCHED_REORDER before
- issueing one insn from list READY which contains *NREADYP entries.
+ issuing one insn from list READY which contains *NREADYP entries.
For target z10 it reorders load instructions to avoid early load
conflicts in the floating point pipeline */
static int
diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h
index 99c09e8860e..f69b3174b00 100644
--- a/gcc/config/s390/s390.h
+++ b/gcc/config/s390/s390.h
@@ -762,7 +762,7 @@ do { \
/* This value is used in tree-sra to decide whether it might benefical
to split a struct move into several word-size moves. For S/390
only small values make sense here since struct moves are relatively
- cheap thanks to mvc so the small default value choosen for archs
+ cheap thanks to mvc so the small default value chosen for archs
with memmove patterns should be ok. But this value is multiplied
in tree-sra with UNITS_PER_WORD to make a decision so we adjust it
here to compensate for that factor since mvc costs exactly the same
diff --git a/gcc/config/score/score.c b/gcc/config/score/score.c
index 0af0fd50b82..9c68e19ed30 100644
--- a/gcc/config/score/score.c
+++ b/gcc/config/score/score.c
@@ -45,7 +45,6 @@
#include "debug.h"
#include "target.h"
#include "target-def.h"
-#include "integrate.h"
#include "langhooks.h"
#include "cfglayout.h"
#include "df.h"
diff --git a/gcc/config/sh/predicates.md b/gcc/config/sh/predicates.md
index c6d0d464f08..f75675ec096 100644
--- a/gcc/config/sh/predicates.md
+++ b/gcc/config/sh/predicates.md
@@ -879,3 +879,22 @@
}
return 0;
})
+
+;; The atomic_* operand predicates are used for the atomic patterns.
+;; Depending on the particular pattern some operands can be immediate
+;; values. Using these predicates avoids the usage of 'force_reg' in the
+;; expanders.
+(define_predicate "atomic_arith_operand"
+ (ior (match_code "subreg,reg")
+ (and (match_test "satisfies_constraint_I08 (op)")
+ (match_test "mode != QImode")
+ (match_test "mode != HImode")
+ (match_test "TARGET_SH4A_ARCH"))))
+
+(define_predicate "atomic_logical_operand"
+ (ior (match_code "subreg,reg")
+ (and (match_test "satisfies_constraint_K08 (op)")
+ (match_test "mode != QImode")
+ (match_test "mode != HImode")
+ (match_test "TARGET_SH4A_ARCH"))))
+
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 08ee5b436f5..20e67c63628 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -39,7 +39,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-attr.h"
#include "diagnostic-core.h"
#include "recog.h"
-#include "integrate.h"
#include "dwarf2.h"
#include "tm_p.h"
#include "target.h"
@@ -393,7 +392,7 @@ static const struct attribute_spec sh_attribute_table[] =
The insn that frees registers is most likely to be the insn with lowest
LUID (original insn order); but such an insn might be there in the stalled
queue (Q) instead of the ready queue (R). To solve this, we skip cycles
- upto a max of 8 cycles so that such insns may move from Q -> R.
+ up to a max of 8 cycles so that such insns may move from Q -> R.
The description of the hooks are as below:
@@ -877,12 +876,27 @@ sh_option_override (void)
align_functions = min_align;
}
+ /* Enable fmac insn for "a * b + c" SFmode calculations when -ffast-math
+ is enabled and -mno-fused-madd is not specified by the user.
+ The fmac insn can't be enabled by default due to the implied
+ FMA semantics. See also PR target/29100. */
+ if (global_options_set.x_TARGET_FMAC == 0 && flag_unsafe_math_optimizations)
+ TARGET_FMAC = 1;
+
if (sh_fixed_range_str)
sh_fix_range (sh_fixed_range_str);
/* This target defaults to strict volatile bitfields. */
if (flag_strict_volatile_bitfields < 0 && abi_version_at_least(2))
flag_strict_volatile_bitfields = 1;
+
+ /* Make sure that only one atomic mode is selected and that the selection
+ is valid for the current target CPU. */
+ if (TARGET_SOFT_ATOMIC && TARGET_HARD_ATOMIC)
+ error ("-msoft-atomic and -mhard-atomic cannot be used at the same time");
+ if (TARGET_HARD_ATOMIC && ! TARGET_SH4A_ARCH)
+ error ("-mhard-atomic is only available for SH4A targets");
+
}
/* Print the operand address in x to the stream. */
@@ -11478,7 +11492,7 @@ sh_expand_binop_v2sf (enum rtx_code code, rtx op0, rtx op1, rtx op2)
We could hold SFmode / SCmode values in XD registers, but that
would require a tertiary reload when reloading from / to memory,
and a secondary reload to reload from / to general regs; that
- seems to be a loosing proposition.
+ seems to be a losing proposition.
We want to allow TImode FP regs so that when V4SFmode is loaded as TImode,
it won't be ferried through GP registers first. */
diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h
index a6fac9484c2..b5f20f90558 100644
--- a/gcc/config/sh/sh.h
+++ b/gcc/config/sh/sh.h
@@ -172,6 +172,9 @@ do { \
(TARGET_SH1 && ! TARGET_SH2E && ! TARGET_SH5 \
&& ! (TARGET_HITACHI || sh_attr_renesas_p (FUN_DECL)))
+/* Nonzero if either soft or hard atomics are enabled. */
+#define TARGET_ANY_ATOMIC (TARGET_SOFT_ATOMIC | TARGET_HARD_ATOMIC)
+
#ifndef TARGET_CPU_DEFAULT
#define TARGET_CPU_DEFAULT SELECT_SH1
#define SUPPORT_SH1 1
@@ -433,7 +436,20 @@ do { \
"%{m2a*:%eSH2a does not support little-endian}}"
#endif
-#define DRIVER_SELF_SPECS UNSUPPORTED_SH2A
+#define UNSUPPORTED_ATOMIC_OPTIONS \
+"%{msoft-atomic:%{mhard-atomic:%e-msoft-atomic and -mhard-atomic cannot be \
+used at the same time}}"
+
+#if TARGET_CPU_DEFAULT & MASK_SH4A
+#define UNSUPPORTED_HARD_ATOMIC_CPU ""
+#else
+#define UNSUPPORTED_HARD_ATOMIC_CPU \
+"%{!m4a*:%{mhard-atomic:%e-mhard-atomic is only available for SH4A targets}}"
+#endif
+
+#undef DRIVER_SELF_SPECS
+#define DRIVER_SELF_SPECS UNSUPPORTED_SH2A, UNSUPPORTED_ATOMIC_OPTIONS,\
+ UNSUPPORTED_HARD_ATOMIC_CPU
#define ASSEMBLER_DIALECT assembler_dialect
diff --git a/gcc/config/sh/sh.md b/gcc/config/sh/sh.md
index 7167b920641..99d4c625f23 100644
--- a/gcc/config/sh/sh.md
+++ b/gcc/config/sh/sh.md
@@ -577,7 +577,7 @@
(and (eq_attr "type" "cbranch")
(match_test "TARGET_SH2"))
;; SH2e has a hardware bug that pretty much prohibits the use of
- ;; annuled delay slots.
+ ;; annulled delay slots.
[(eq_attr "cond_delay_slot" "yes") (and (eq_attr "cond_delay_slot" "yes")
(not (eq_attr "cpu" "sh2e"))) (nil)])
@@ -631,7 +631,7 @@
[(set_attr "type" "mt_group")])
;; Test low QI subreg against zero.
-;; This avoids unecessary zero extension before the test.
+;; This avoids unnecessary zero extension before the test.
(define_insn "tstqi_t_zero"
[(set (reg:SI T_REG)
@@ -5470,7 +5470,7 @@ label:
;; selected to copy QImode regs. If one of them happens to be allocated
;; on the stack, reload will stick to movqi insn and generate wrong
;; displacement addressing because of the generic m alternatives.
-;; With the movqi_reg_reg being specified before movqi it will be intially
+;; With the movqi_reg_reg being specified before movqi it will be initially
;; picked to load/store regs. If the regs regs are on the stack reload will
;; try other insns and not stick to movqi_reg_reg.
;; The same applies to the movhi variants.
diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt
index 3ab2c51be4a..6a78d04ed10 100644
--- a/gcc/config/sh/sh.opt
+++ b/gcc/config/sh/sh.opt
@@ -321,7 +321,11 @@ Follow Renesas (formerly Hitachi) / SuperH calling conventions
msoft-atomic
Target Report Var(TARGET_SOFT_ATOMIC)
-Use software atomic sequences supported by kernel
+Use gUSA software atomic sequences
+
+mhard-atomic
+Target Report Var(TARGET_HARD_ATOMIC)
+Use hardware atomic sequences
menable-tas
Target Report RejectNegative Var(TARGET_ENABLE_TAS)
diff --git a/gcc/config/sh/sync.md b/gcc/config/sh/sync.md
index 258e048f3c7..79cd765d87f 100644
--- a/gcc/config/sh/sync.md
+++ b/gcc/config/sh/sync.md
@@ -21,10 +21,42 @@
;;
;; Atomic integer operations for the Renesas / SuperH SH CPUs.
;;
+;; On SH CPUs atomic integer operations can be done either in 'software' or
+;; in 'hardware', where true hardware support was introduced with the SH4A.
+;; In addition to that all SH CPUs support the 'tas.b' instruction, which
+;; can be optionally used to implement the 'atomic_test_and_set' builtin.
+;;
+;; tas.b atomic_test_and_set (-menable-tas)
+;;
+;; Depending on the particular hardware configuration, usage of the 'tas.b'
+;; instruction might be undesired or even unsafe. Thus, it has to be
+;; enabled by the user explicitely. If it is not enabled, the
+;; 'atomic_test_and_set' builtin is implemented either with hardware or with
+;; software atomics, depending on which is enabled. It is also possible to
+;; enable the 'tas.b' instruction only, without enabling support for the
+;; other atomic operations.
+;;
+;;
+;; Hardware Atomics (-mhard-atomic, SH4A only)
+;;
+;; Hardware atomics implement all atomic operations using the 'movli.l' and
+;; 'movco.l' instructions that are availble on SH4A. On multi-core hardware
+;; configurations hardware atomics is the only safe mode.
+;; However, it can also be safely used on single-core configurations.
+;; Since these instructions operate on SImode memory only, QImode and HImode
+;; have to be emulated with SImode and subreg masking, which results in
+;; larger code.
+;;
+;;
+;; Software Atomics (-msoft-atomic)
+;;
;; On single-core systems there can only be one execution context running
;; at a given point in time. This allows the usage of rewindable atomic
;; sequences, which effectively emulate locked-load / conditional-store
-;; operations.
+;; operations. This requires complementary support in the interrupt /
+;; exception handling code (e.g. kernel) and does not work safely on multi-
+;; core configurations.
+;;
;; When an execution context is interrupted while it is an atomic
;; sequence, the interrupted context's PC is rewound to the beginning of
;; the atomic sequence by the interrupt / exception handling code, before
@@ -79,15 +111,16 @@
;; For correct operation the atomic sequences must not be rewound after
;; they have passed the write-back instruction.
;;
-;; The current implementation is limited to QImode, HImode and SImode
+;; The current atomic support is limited to QImode, HImode and SImode
;; atomic operations. DImode operations could also be implemented but
;; would require some ABI modifications to support multiple-instruction
;; write-back. This is because SH1/SH2/SH3/SH4 does not have a DImode
;; store instruction. DImode stores must be split into two SImode stores.
;;
-;; For some operations it would be possible to use insns with an immediate
-;; operand such as add #imm,Rn. However, since the original value before
-;; the operation also needs to be available, this is not so handy.
+;; On single-core SH4A CPUs software atomic aware interrupt / exception code
+;; is actually compatible with user code that utilizes hardware atomics.
+;; Since SImode hardware atomic sequences are more compact on SH4A they are
+;; always used, regardless of the selected atomic mode.
(define_c_enum "unspec" [
UNSPEC_ATOMIC
@@ -100,6 +133,7 @@
])
(define_mode_iterator I124 [QI HI SI])
+(define_mode_iterator I12 [QI HI])
(define_mode_attr i124suffix [(QI "b") (HI "w") (SI "l")])
(define_mode_attr i124extend_insn [(QI "exts.b") (HI "exts.w") (SI "mov")])
@@ -108,23 +142,42 @@
(define_code_attr fetchop_name
[(plus "add") (minus "sub") (ior "or") (xor "xor") (and "and")])
+(define_code_attr fetchop_predicate
+ [(plus "atomic_arith_operand") (minus "register_operand")
+ (ior "atomic_logical_operand") (xor "atomic_logical_operand")
+ (and "atomic_logical_operand")])
+
+(define_code_attr fetchop_constraint
+ [(plus "rI08") (minus "r") (ior "rK08") (xor "rK08") (and "rK08")])
+
+;;------------------------------------------------------------------------------
+;; comapre and swap
+
(define_expand "atomic_compare_and_swap<mode>"
[(match_operand:SI 0 "register_operand" "") ;; bool success output
(match_operand:I124 1 "register_operand" "") ;; oldval output
(match_operand:I124 2 "memory_operand" "") ;; memory
- (match_operand:I124 3 "register_operand" "") ;; expected input
- (match_operand:I124 4 "register_operand" "") ;; newval input
+ (match_operand:I124 3 "atomic_arith_operand" "") ;; expected input
+ (match_operand:I124 4 "atomic_arith_operand" "") ;; newval input
(match_operand:SI 5 "const_int_operand" "") ;; is_weak
(match_operand:SI 6 "const_int_operand" "") ;; success model
(match_operand:SI 7 "const_int_operand" "")] ;; failure model
- "TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
+ "TARGET_ANY_ATOMIC && !TARGET_SHMEDIA"
{
- rtx addr;
+ rtx addr = force_reg (Pmode, XEXP (operands[2], 0));
+ rtx old_val = gen_lowpart (SImode, operands[1]);
+ rtx exp_val = operands[3];
+ rtx new_val = operands[4];
+ rtx atomic_insn;
+
+ if (TARGET_HARD_ATOMIC || (TARGET_SH4A_ARCH && <MODE>mode == SImode))
+ atomic_insn = gen_atomic_compare_and_swap<mode>_hard (old_val, addr,
+ exp_val, new_val);
+ else
+ atomic_insn = gen_atomic_compare_and_swap<mode>_soft (old_val, addr,
+ exp_val, new_val);
+ emit_insn (atomic_insn);
- addr = force_reg (Pmode, XEXP (operands[2], 0));
- emit_insn (gen_atomic_compare_and_swap<mode>_soft
- (gen_lowpart (SImode, operands[1]), addr, operands[3],
- operands[4]));
if (<MODE>mode == QImode)
emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, operands[1]),
operands[1]));
@@ -135,6 +188,67 @@
DONE;
})
+(define_insn "atomic_compare_and_swapsi_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&r")
+ (unspec_volatile:SI
+ [(mem:SI (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:SI 2 "arith_operand" "rI08")
+ (match_operand:SI 3 "arith_operand" "rI08")]
+ UNSPECV_CMPXCHG_1))
+ (set (mem:SI (match_dup 1))
+ (unspec_volatile:SI [(const_int 0)] UNSPECV_CMPXCHG_2))
+ (set (reg:SI T_REG)
+ (unspec_volatile:SI [(const_int 0)] UNSPECV_CMPXCHG_3))
+ (clobber (reg:SI R0_REG))]
+ "TARGET_ANY_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r0: movli.l @%1,r0" "\n"
+ " cmp/eq %2,r0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " mov r0,%0" "\n"
+ " mov %3,r0" "\n"
+ " movco.l r0,@%1" "\n"
+ " bf 0b" "\n"
+ "0:";
+}
+ [(set_attr "length" "14")])
+
+(define_insn "atomic_compare_and_swap<mode>_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&r")
+ (unspec_volatile:SI
+ [(mem:I12 (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:I12 2 "register_operand" "r")
+ (match_operand:I12 3 "register_operand" "r")]
+ UNSPECV_CMPXCHG_1))
+ (set (mem:I12 (match_dup 1))
+ (unspec_volatile:I12 [(const_int 0)] UNSPECV_CMPXCHG_2))
+ (set (reg:SI T_REG)
+ (unspec_volatile:SI [(const_int 0)] UNSPECV_CMPXCHG_3))
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 4 "=&r"))
+ (clobber (match_scratch:SI 5 "=&r"))
+ (clobber (match_scratch:SI 6 "=1"))]
+ "TARGET_HARD_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%5" "\n"
+ " <i124extend_insn> %2,%4" "\n"
+ " and %1,%5" "\n"
+ " xor %5,%1" "\n"
+ " add r15,%1" "\n"
+ " add #-4,%1" "\n"
+ "0: movli.l @%5,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.<i124suffix> @%1,%0" "\n"
+ " mov.<i124suffix> %3,@%1" "\n"
+ " cmp/eq %4,%0" "\n"
+ " bf{.|/}s 0f" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%5" "\n"
+ " bf 0b" "\n"
+ "0:";
+}
+ [(set_attr "length" "30")])
+
(define_insn "atomic_compare_and_swap<mode>_soft"
[(set (match_operand:SI 0 "register_operand" "=&u")
(unspec_volatile:SI
@@ -151,7 +265,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" <i124extend_insn> %2,%4" "\n"
" .align 2" "\n"
" mov r15,r1" "\n"
@@ -164,16 +278,27 @@
}
[(set_attr "length" "20")])
+;;------------------------------------------------------------------------------
+;; read - write - return old value
+
(define_expand "atomic_exchange<mode>"
[(match_operand:I124 0 "register_operand" "") ;; oldval output
(match_operand:I124 1 "memory_operand" "") ;; memory
- (match_operand:I124 2 "register_operand" "") ;; newval input
+ (match_operand:I124 2 "atomic_arith_operand" "") ;; newval input
(match_operand:SI 3 "const_int_operand" "")] ;; memory model
- "TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
+ "TARGET_ANY_ATOMIC && !TARGET_SHMEDIA"
{
rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
- emit_insn (gen_atomic_exchange<mode>_soft
- (operands[0], addr, operands[2]));
+ rtx val = operands[2];
+ rtx atomic_insn;
+
+ if (TARGET_HARD_ATOMIC || (TARGET_SH4A_ARCH && <MODE>mode == SImode))
+ atomic_insn = gen_atomic_exchange<mode>_hard (operands[0], addr, val);
+ else
+ atomic_insn = gen_atomic_exchange<mode>_soft (operands[0], addr, val);
+
+ emit_insn (atomic_insn);
+
if (<MODE>mode == QImode)
emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, operands[0]),
operands[0]));
@@ -183,6 +308,49 @@
DONE;
})
+(define_insn "atomic_exchangesi_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&r")
+ (mem:SI (match_operand:SI 1 "register_operand" "r")))
+ (set (mem:SI (match_dup 1))
+ (unspec:SI
+ [(match_operand:SI 2 "arith_operand" "rI08")] UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))]
+ "TARGET_ANY_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r0: movli.l @%1,r0" "\n"
+ " mov r0,%0" "\n"
+ " mov %2,r0" "\n"
+ " movco.l r0,@%1" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "10")])
+
+(define_insn "atomic_exchange<mode>_hard"
+ [(set (match_operand:I12 0 "register_operand" "=&r")
+ (mem:I12 (match_operand:SI 1 "register_operand" "r")))
+ (set (mem:I12 (match_dup 1))
+ (unspec:I12
+ [(match_operand:I12 2 "register_operand" "r")] UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 3 "=&r"))
+ (clobber (match_scratch:SI 4 "=1"))]
+ "TARGET_HARD_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%3" "\n"
+ " and %1,%3" "\n"
+ " xor %3,%1" "\n"
+ " add r15,%1" "\n"
+ " add #-4,%1" "\n"
+ "0: movli.l @%3,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.<i124suffix> @%1,%0" "\n"
+ " mov.<i124suffix> %2,@%1" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%3" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "24")])
+
(define_insn "atomic_exchange<mode>_soft"
[(set (match_operand:I124 0 "register_operand" "=&u")
(mem:I124 (match_operand:SI 1 "register_operand" "u")))
@@ -193,7 +361,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" .align 2" "\n"
" mov r15,r1" "\n"
" mov #(0f-1f),r15" "\n"
@@ -203,22 +371,32 @@
}
[(set_attr "length" "14")])
+;;------------------------------------------------------------------------------
+;; read - add|sub|or|and|xor|nand - write - return old value
+
(define_expand "atomic_fetch_<fetchop_name><mode>"
[(set (match_operand:I124 0 "register_operand" "")
(match_operand:I124 1 "memory_operand" ""))
(set (match_dup 1)
(unspec:I124
[(FETCHOP:I124 (match_dup 1)
- (match_operand:I124 2 "register_operand" ""))]
+ (match_operand:I124 2 "<fetchop_predicate>" ""))]
UNSPEC_ATOMIC))
(match_operand:SI 3 "const_int_operand" "")]
- "TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
+ "TARGET_ANY_ATOMIC && !TARGET_SHMEDIA"
{
- rtx addr;
+ rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
+ rtx atomic_insn;
+
+ if (TARGET_HARD_ATOMIC || (TARGET_SH4A_ARCH && <MODE>mode == SImode))
+ atomic_insn = gen_atomic_fetch_<fetchop_name><mode>_hard (operands[0], addr,
+ operands[2]);
+ else
+ atomic_insn = gen_atomic_fetch_<fetchop_name><mode>_soft (operands[0],
+ addr,
+ operands[2]);
+ emit_insn (atomic_insn);
- addr = force_reg (Pmode, XEXP (operands[1], 0));
- emit_insn (gen_atomic_fetch_<fetchop_name><mode>_soft
- (operands[0], addr, operands[2]));
if (<MODE>mode == QImode)
emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, operands[0]),
operands[0]));
@@ -228,6 +406,55 @@
DONE;
})
+(define_insn "atomic_fetch_<fetchop_name>si_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&r")
+ (mem:SI (match_operand:SI 1 "register_operand" "r")))
+ (set (mem:SI (match_dup 1))
+ (unspec:SI
+ [(FETCHOP:SI (mem:SI (match_dup 1))
+ (match_operand:SI 2 "<fetchop_predicate>" "<fetchop_constraint>"))]
+ UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))]
+ "TARGET_ANY_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r0: movli.l @%1,r0" "\n"
+ " mov r0,%0" "\n"
+ " <fetchop_name> %2,r0" "\n"
+ " movco.l r0,@%1" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "10")])
+
+(define_insn "atomic_fetch_<fetchop_name><mode>_hard"
+ [(set (match_operand:I12 0 "register_operand" "=&r")
+ (mem:I12 (match_operand:SI 1 "register_operand" "r")))
+ (set (mem:I12 (match_dup 1))
+ (unspec:I12
+ [(FETCHOP:I12 (mem:I12 (match_dup 1))
+ (match_operand:I12 2 "<fetchop_predicate>" "<fetchop_constraint>"))]
+ UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 3 "=&r"))
+ (clobber (match_scratch:SI 4 "=1"))]
+ "TARGET_HARD_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%3" "\n"
+ " and %1,%3" "\n"
+ " xor %3,%1" "\n"
+ " add r15,%1" "\n"
+ " add #-4,%1" "\n"
+ "0: movli.l @%3,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.<i124suffix> @%1,r0" "\n"
+ " mov r0,%0" "\n"
+ " <fetchop_name> %2,r0" "\n"
+ " mov.<i124suffix> r0,@%1" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%3" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "28")])
+
(define_insn "atomic_fetch_<fetchop_name><mode>_soft"
[(set (match_operand:I124 0 "register_operand" "=&u")
(mem:I124 (match_operand:SI 1 "register_operand" "u")))
@@ -241,7 +468,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" .align 2" "\n"
" mov r15,r1" "\n"
" mov #(0f-1f),r15" "\n"
@@ -259,16 +486,23 @@
(set (match_dup 1)
(unspec:I124
[(not:I124 (and:I124 (match_dup 1)
- (match_operand:I124 2 "register_operand" "")))]
+ (match_operand:I124 2 "atomic_logical_operand" "")))]
UNSPEC_ATOMIC))
(match_operand:SI 3 "const_int_operand" "")]
- "TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
+ "TARGET_ANY_ATOMIC && !TARGET_SHMEDIA"
{
- rtx addr;
+ rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
+ rtx atomic_insn;
+
+ if (TARGET_HARD_ATOMIC || (TARGET_SH4A_ARCH && <MODE>mode == SImode))
+ atomic_insn = gen_atomic_fetch_nand<mode>_hard (operands[0], addr,
+ operands[2]);
+ else
+ atomic_insn = gen_atomic_fetch_nand<mode>_soft (operands[0], addr,
+ operands[2]);
+
+ emit_insn (atomic_insn);
- addr = force_reg (Pmode, XEXP (operands[1], 0));
- emit_insn (gen_atomic_fetch_nand<mode>_soft
- (operands[0], addr, operands[2]));
if (<MODE>mode == QImode)
emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, operands[0]),
operands[0]));
@@ -278,6 +512,57 @@
DONE;
})
+(define_insn "atomic_fetch_nandsi_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&r")
+ (mem:SI (match_operand:SI 1 "register_operand" "r")))
+ (set (mem:SI (match_dup 1))
+ (unspec:SI
+ [(not:SI (and:SI (mem:SI (match_dup 1))
+ (match_operand:SI 2 "logical_operand" "rK08")))]
+ UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))]
+ "TARGET_ANY_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r0: movli.l @%1,r0" "\n"
+ " mov r0,%0" "\n"
+ " and %2,r0" "\n"
+ " not r0,r0" "\n"
+ " movco.l r0,@%1" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "12")])
+
+(define_insn "atomic_fetch_nand<mode>_hard"
+ [(set (match_operand:I12 0 "register_operand" "=&r")
+ (mem:I12 (match_operand:SI 1 "register_operand" "r")))
+ (set (mem:I12 (match_dup 1))
+ (unspec:I12
+ [(not:I12 (and:I12 (mem:I12 (match_dup 1))
+ (match_operand:I12 2 "logical_operand" "rK08")))]
+ UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 3 "=&r"))
+ (clobber (match_scratch:SI 4 "=1"))]
+ "TARGET_HARD_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%3" "\n"
+ " and %1,%3" "\n"
+ " xor %3,%1" "\n"
+ " add r15,%1" "\n"
+ " add #-4,%1" "\n"
+ "0: movli.l @%3,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.<i124suffix> @%1,r0" "\n"
+ " mov r0,%0" "\n"
+ " and %2,r0" "\n"
+ " not r0,r0" "\n"
+ " mov.<i124suffix> r0,@%1" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%3" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "30")])
+
(define_insn "atomic_fetch_nand<mode>_soft"
[(set (match_operand:I124 0 "register_operand" "=&u")
(mem:I124 (match_operand:SI 1 "register_operand" "u")))
@@ -291,7 +576,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" mov r15,r1" "\n"
" .align 2" "\n"
" mov #(0f-1f),r15" "\n"
@@ -304,23 +589,32 @@
}
[(set_attr "length" "20")])
+;;------------------------------------------------------------------------------
+;; read - add|sub|or|and|xor|nand - write - return new value
+
(define_expand "atomic_<fetchop_name>_fetch<mode>"
[(set (match_operand:I124 0 "register_operand" "")
(FETCHOP:I124
(match_operand:I124 1 "memory_operand" "")
- (match_operand:I124 2 "register_operand" "")))
+ (match_operand:I124 2 "<fetchop_predicate>" "")))
(set (match_dup 1)
(unspec:I124
[(FETCHOP:I124 (match_dup 1) (match_dup 2))]
UNSPEC_ATOMIC))
(match_operand:SI 3 "const_int_operand" "")]
- "TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
+ "TARGET_ANY_ATOMIC && !TARGET_SHMEDIA"
{
- rtx addr;
+ rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
+ rtx atomic_insn;
+
+ if (TARGET_HARD_ATOMIC || (TARGET_SH4A_ARCH && <MODE>mode == SImode))
+ atomic_insn = gen_atomic_<fetchop_name>_fetch<mode>_hard (operands[0], addr,
+ operands[2]);
+ else
+ atomic_insn = gen_atomic_<fetchop_name>_fetch<mode>_soft (operands[0], addr,
+ operands[2]);
+ emit_insn (atomic_insn);
- addr = force_reg (Pmode, XEXP (operands[1], 0));
- emit_insn (gen_atomic_<fetchop_name>_fetch<mode>_soft
- (operands[0], addr, operands[2]));
if (<MODE>mode == QImode)
emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, operands[0]),
operands[0]));
@@ -330,6 +624,56 @@
DONE;
})
+(define_insn "atomic_<fetchop_name>_fetchsi_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&z")
+ (FETCHOP:SI
+ (mem:SI (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:SI 2 "<fetchop_predicate>" "<fetchop_constraint>")))
+ (set (mem:SI (match_dup 1))
+ (unspec:SI
+ [(FETCHOP:SI (mem:SI (match_dup 1)) (match_dup 2))]
+ UNSPEC_ATOMIC))]
+ "TARGET_ANY_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r0: movli.l @%1,%0" "\n"
+ " <fetchop_name> %2,%0" "\n"
+ " movco.l %0,@%1" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "8")])
+
+(define_insn "atomic_<fetchop_name>_fetch<mode>_hard"
+ [(set (match_operand:I12 0 "register_operand" "=&r")
+ (FETCHOP:I12
+ (mem:I12 (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:I12 2 "<fetchop_predicate>" "<fetchop_constraint>")))
+ (set (mem:I12 (match_dup 1))
+ (unspec:I12
+ [(FETCHOP:I12 (mem:I12 (match_dup 1)) (match_dup 2))]
+ UNSPEC_ATOMIC))
+
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 3 "=&r"))
+ (clobber (match_scratch:SI 4 "=1"))]
+ "TARGET_HARD_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%3" "\n"
+ " and %1,%3" "\n"
+ " xor %3,%1" "\n"
+ " add r15,%1" "\n"
+ " add #-4,%1" "\n"
+ "0: movli.l @%3,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.<i124suffix> @%1,r0" "\n"
+ " <fetchop_name> %2,r0" "\n"
+ " mov.<i124suffix> r0,@%1" "\n"
+ " mov r0,%0" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%3" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "28")])
+
(define_insn "atomic_<fetchop_name>_fetch<mode>_soft"
[(set (match_operand:I124 0 "register_operand" "=&u")
(FETCHOP:I124
@@ -343,7 +687,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" mov r15,r1" "\n"
" .align 2" "\n"
" mov #(0f-1f),r15" "\n"
@@ -358,19 +702,25 @@
[(set (match_operand:I124 0 "register_operand" "")
(not:I124 (and:I124
(match_operand:I124 1 "memory_operand" "")
- (match_operand:I124 2 "register_operand" ""))))
+ (match_operand:I124 2 "atomic_logical_operand" ""))))
(set (match_dup 1)
(unspec:I124
[(not:I124 (and:I124 (match_dup 1) (match_dup 2)))]
UNSPEC_ATOMIC))
(match_operand:SI 3 "const_int_operand" "")]
- "TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
+ "TARGET_ANY_ATOMIC && !TARGET_SHMEDIA"
{
- rtx addr;
+ rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
+ rtx atomic_insn;
+
+ if (TARGET_HARD_ATOMIC || (TARGET_SH4A_ARCH && <MODE>mode == SImode))
+ atomic_insn = gen_atomic_nand_fetch<mode>_hard (operands[0], addr,
+ operands[2]);
+ else
+ atomic_insn = gen_atomic_nand_fetch<mode>_soft (operands[0], addr,
+ operands[2]);
+ emit_insn (atomic_insn);
- addr = force_reg (Pmode, XEXP (operands[1], 0));
- emit_insn (gen_atomic_nand_fetch<mode>_soft
- (operands[0], addr, operands[2]));
if (<MODE>mode == QImode)
emit_insn (gen_zero_extendqisi2 (gen_lowpart (SImode, operands[0]),
operands[0]));
@@ -380,6 +730,54 @@
DONE;
})
+(define_insn "atomic_nand_fetchsi_hard"
+ [(set (match_operand:SI 0 "register_operand" "=&z")
+ (not:SI (and:SI (mem:SI (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:SI 2 "logical_operand" "rK08"))))
+ (set (mem:SI (match_dup 1))
+ (unspec:SI
+ [(not:SI (and:SI (mem:SI (match_dup 1)) (match_dup 2)))]
+ UNSPEC_ATOMIC))]
+ "TARGET_ANY_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r0: movli.l @%1,%0" "\n"
+ " and %2,%0" "\n"
+ " not %0,%0" "\n"
+ " movco.l %0,@%1" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "10")])
+
+(define_insn "atomic_nand_fetch<mode>_hard"
+ [(set (match_operand:I12 0 "register_operand" "=&r")
+ (not:I12 (and:I12 (mem:I12 (match_operand:SI 1 "register_operand" "r"))
+ (match_operand:I12 2 "logical_operand" "rK08"))))
+ (set (mem:I12 (match_dup 1))
+ (unspec:I12
+ [(not:I12 (and:I12 (mem:I12 (match_dup 1)) (match_dup 2)))]
+ UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 3 "=&r"))
+ (clobber (match_scratch:SI 4 "=1"))]
+ "TARGET_HARD_ATOMIC && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%3" "\n"
+ " and %1,%3" "\n"
+ " xor %3,%1" "\n"
+ " add r15,%1" "\n"
+ " add #-4,%1" "\n"
+ "0: movli.l @%3,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.<i124suffix> @%1,r0" "\n"
+ " and %2,r0" "\n"
+ " not r0,%0" "\n"
+ " mov.<i124suffix> %0,@%1" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%3" "\n"
+ " bf 0b";
+}
+ [(set_attr "length" "28")])
+
(define_insn "atomic_nand_fetch<mode>_soft"
[(set (match_operand:I124 0 "register_operand" "=&u")
(not:I124 (and:I124
@@ -393,7 +791,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" .align 2" "\n"
" mov r15,r1" "\n"
" mov #(0f-1f),r15" "\n"
@@ -405,11 +803,14 @@
}
[(set_attr "length" "18")])
+;;------------------------------------------------------------------------------
+;; read - test against zero - or with 0x80 - write - return test result
+
(define_expand "atomic_test_and_set"
[(match_operand:SI 0 "register_operand" "") ;; bool result output
(match_operand:QI 1 "memory_operand" "") ;; memory
(match_operand:SI 2 "const_int_operand" "")] ;; model
- "(TARGET_SOFT_ATOMIC || TARGET_ENABLE_TAS) && !TARGET_SHMEDIA"
+ "(TARGET_ANY_ATOMIC || TARGET_ENABLE_TAS) && !TARGET_SHMEDIA"
{
rtx addr = force_reg (Pmode, XEXP (operands[1], 0));
@@ -417,11 +818,13 @@
emit_insn (gen_tasb (addr));
else
{
- rtx val;
-
- val = gen_int_mode (targetm.atomic_test_and_set_trueval, QImode);
+ rtx val = gen_int_mode (targetm.atomic_test_and_set_trueval, QImode);
val = force_reg (QImode, val);
- emit_insn (gen_atomic_test_and_set_soft (addr, val));
+
+ if (TARGET_HARD_ATOMIC)
+ emit_insn (gen_atomic_test_and_set_hard (addr, val));
+ else
+ emit_insn (gen_atomic_test_and_set_soft (addr, val));
}
/* The result of the test op is the inverse of what we are
@@ -452,7 +855,7 @@
(clobber (reg:SI R1_REG))]
"TARGET_SOFT_ATOMIC && !TARGET_ENABLE_TAS && !TARGET_SHMEDIA"
{
- return "mova 1f,r0" "\n"
+ return "\r mova 1f,r0" "\n"
" .align 2" "\n"
" mov r15,r1" "\n"
" mov #(0f-1f),r15" "\n"
@@ -463,3 +866,31 @@
}
[(set_attr "length" "16")])
+(define_insn "atomic_test_and_set_hard"
+ [(set (reg:SI T_REG)
+ (eq:SI (mem:QI (match_operand:SI 0 "register_operand" "r"))
+ (const_int 0)))
+ (set (mem:QI (match_dup 0))
+ (unspec:QI [(match_operand:QI 1 "register_operand" "r")] UNSPEC_ATOMIC))
+ (clobber (reg:SI R0_REG))
+ (clobber (match_scratch:SI 2 "=&r"))
+ (clobber (match_scratch:SI 3 "=&r"))
+ (clobber (match_scratch:SI 4 "=0"))]
+ "TARGET_HARD_ATOMIC && !TARGET_ENABLE_TAS && TARGET_SH4A_ARCH"
+{
+ return "\r mov #-4,%2" "\n"
+ " and %0,%2" "\n"
+ " xor %2,%0" "\n"
+ " add r15,%0" "\n"
+ " add #-4,%0" "\n"
+ "0: movli.l @%2,r0" "\n"
+ " mov.l r0,@-r15" "\n"
+ " mov.b @%0,%3" "\n"
+ " mov.b %1,@%0" "\n"
+ " mov.l @r15+,r0" "\n"
+ " movco.l r0,@%2" "\n"
+ " bf 0b" "\n"
+ " tst %3,%3";
+}
+ [(set_attr "length" "26")])
+
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index 4cb381e60e9..54fce8f6ddb 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -2738,7 +2738,7 @@ emit_soft_tfmode_libcall (const char *func_name, int nargs, rtx *operands)
}
else
{
- this_slot = assign_stack_temp (TFmode, GET_MODE_SIZE (TFmode), 0);
+ this_slot = assign_stack_temp (TFmode, GET_MODE_SIZE (TFmode));
/* Operand 0 is the return value. We'll copy it out later. */
if (i > 0)
@@ -7431,7 +7431,7 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
}
else
{
- slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode), 0);
+ slot0 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode));
emit_move_insn (slot0, x);
}
@@ -7444,7 +7444,7 @@ sparc_emit_float_lib_cmp (rtx x, rtx y, enum rtx_code comparison)
}
else
{
- slot1 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode), 0);
+ slot1 = assign_stack_temp (TFmode, GET_MODE_SIZE(TFmode));
emit_move_insn (slot1, y);
}
@@ -11631,7 +11631,7 @@ sparc_expand_vector_init (rtx target, rtx vals)
}
}
- mem = assign_stack_temp (mode, GET_MODE_SIZE (mode), 0);
+ mem = assign_stack_temp (mode, GET_MODE_SIZE (mode));
for (i = 0; i < n_elts; i++)
emit_move_insn (adjust_address_nv (mem, inner_mode,
i * GET_MODE_SIZE (inner_mode)),
diff --git a/gcc/config/sparc/sync.md b/gcc/config/sparc/sync.md
index d07d572c614..d11f6636490 100644
--- a/gcc/config/sparc/sync.md
+++ b/gcc/config/sparc/sync.md
@@ -45,7 +45,7 @@
})
;; A compiler-only memory barrier. Generic code, when checking for the
-;; existance of various named patterns, uses asm("":::"memory") when we
+;; existence of various named patterns, uses asm("":::"memory") when we
;; don't need an actual instruction. Here, it's easiest to pretend that
;; membar 0 is such a barrier. Further, this gives us a nice hook to
;; ignore all such barriers on Sparc V7.
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index dc5ca45dd57..b81bf5e8f2d 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -35,7 +35,6 @@
#include "function.h"
#include "output.h"
#include "basic-block.h"
-#include "integrate.h"
#include "diagnostic-core.h"
#include "ggc.h"
#include "hashtab.h"
@@ -2870,7 +2869,7 @@ spu_machine_dependent_reorg (void)
prop = prev;
/* If this is the JOIN block of a simple IF-THEN then
- propogate the hint to the HEADER block. */
+ propagate the hint to the HEADER block. */
else if (prev && prev2
&& EDGE_COUNT (bb->preds) == 2
&& EDGE_COUNT (prev->preds) == 1
@@ -3124,7 +3123,7 @@ spu_sched_variable_issue (FILE *file ATTRIBUTE_UNUSED,
prev_priority = INSN_PRIORITY (insn);
}
- /* Always try issueing more insns. spu_sched_reorder will decide
+ /* Always try issuing more insns. spu_sched_reorder will decide
when the cycle should be advanced. */
return 1;
}
@@ -3231,7 +3230,7 @@ spu_sched_reorder (FILE *file ATTRIBUTE_UNUSED, int verbose ATTRIBUTE_UNUSED,
used to effect it. */
if (in_spu_reorg && spu_dual_nops < 10)
{
- /* When we are at an even address and we are not issueing nops to
+ /* When we are at an even address and we are not issuing nops to
improve scheduling then we need to advance the cycle. */
if ((spu_sched_length & 7) == 0 && prev_clock_var == clock
&& (spu_dual_nops == 0
diff --git a/gcc/config/spu/spu.md b/gcc/config/spu/spu.md
index 3178a6df593..03ed4575591 100644
--- a/gcc/config/spu/spu.md
+++ b/gcc/config/spu/spu.md
@@ -4209,7 +4209,7 @@ selb\t%0,%4,%0,%3"
""
{ spu_expand_prologue (); DONE; })
-;; "blockage" is only emited in epilogue. This is what it took to
+;; "blockage" is only emitted in epilogue. This is what it took to
;; make "basic block reordering" work with the insns sequence
;; generated by the spu_expand_epilogue (taken from mips.md)
diff --git a/gcc/config/spu/t-spu-elf b/gcc/config/spu/t-spu-elf
index 50c8d0353f5..84fbbb28ad2 100644
--- a/gcc/config/spu/t-spu-elf
+++ b/gcc/config/spu/t-spu-elf
@@ -22,7 +22,7 @@ spu.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h \
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
$(OBSTACK_H) $(TREE_H) $(EXPR_H) $(OPTABS_H) except.h function.h \
- output.h $(BASIC_BLOCK_H) $(INTEGRATE_H) $(GGC_H) $(HASHTAB_H) \
+ output.h $(BASIC_BLOCK_H) $(GGC_H) $(HASHTAB_H) \
$(TM_P_H) $(TARGET_H) $(TARGET_DEF_H) langhooks.h reload.h cfglayout.h \
$(srcdir)/config/spu/spu-protos.h \
$(srcdir)/config/spu/spu-builtins.def
diff --git a/gcc/config/tilegx/tilegx.c b/gcc/config/tilegx/tilegx.c
index a23e193ee3a..7ca4eb68be4 100644
--- a/gcc/config/tilegx/tilegx.c
+++ b/gcc/config/tilegx/tilegx.c
@@ -37,7 +37,7 @@
#include "tm-constrs.h"
#include "target.h"
#include "target-def.h"
-#include "integrate.h"
+#include "function.h"
#include "dwarf2.h"
#include "timevar.h"
#include "gimple.h"
diff --git a/gcc/config/tilepro/tilepro.c b/gcc/config/tilepro/tilepro.c
index 2b18b4f6622..ce28d9e8221 100644
--- a/gcc/config/tilepro/tilepro.c
+++ b/gcc/config/tilepro/tilepro.c
@@ -38,7 +38,7 @@
#include "tm-constrs.h"
#include "target.h"
#include "target-def.h"
-#include "integrate.h"
+#include "function.h"
#include "dwarf2.h"
#include "timevar.h"
#include "gimple.h"
diff --git a/gcc/config/v850/v850.c b/gcc/config/v850/v850.c
index e2a72b0b3d5..186327da7ac 100644
--- a/gcc/config/v850/v850.c
+++ b/gcc/config/v850/v850.c
@@ -37,7 +37,6 @@
#include "function.h"
#include "diagnostic-core.h"
#include "ggc.h"
-#include "integrate.h"
#include "tm_p.h"
#include "target.h"
#include "target-def.h"
diff --git a/gcc/config/vms/vms.c b/gcc/config/vms/vms.c
index d4ebd18730b..d23e8a8456a 100644
--- a/gcc/config/vms/vms.c
+++ b/gcc/config/vms/vms.c
@@ -99,12 +99,12 @@ static const struct vms_crtl_name vms_crtl_names[] =
#define NBR_CRTL_NAMES (sizeof (vms_crtl_names) / sizeof (*vms_crtl_names))
-/* List of aliased identifiers. They must be persistant accross gc. */
+/* List of aliased identifiers. They must be persistent across gc. */
static GTY(()) VEC(tree,gc) *aliases_id;
/* Add a CRTL translation. This simply use the transparent alias
- mechanism, which is platform independant and works with the
+ mechanism, which is platform independent and works with the
#pragma extern_prefix (which set the assembler name). */
static void
diff --git a/gcc/config/vxworks-dummy.h b/gcc/config/vxworks-dummy.h
index e3ea6ad6a98..e2ea7fa4d64 100644
--- a/gcc/config/vxworks-dummy.h
+++ b/gcc/config/vxworks-dummy.h
@@ -22,7 +22,7 @@ a copy of the GCC Runtime Library Exception along with this program;
see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
<http://www.gnu.org/licenses/>. */
-/* True if we're targetting VxWorks. */
+/* True if we're targeting VxWorks. */
#ifndef TARGET_VXWORKS
#define TARGET_VXWORKS 0
#endif
diff --git a/gcc/config/vxworks.h b/gcc/config/vxworks.h
index 04ee945d650..000de3604f6 100644
--- a/gcc/config/vxworks.h
+++ b/gcc/config/vxworks.h
@@ -20,7 +20,7 @@ You should have received a copy of the GNU General Public License
along with GCC; see the file COPYING3. If not see
<http://www.gnu.org/licenses/>. */
-/* Assert that we are targetting VxWorks. */
+/* Assert that we are targeting VxWorks. */
#undef TARGET_VXWORKS
#define TARGET_VXWORKS 1
diff --git a/gcc/configure b/gcc/configure
index 1cd61344511..1fdf0af80ca 100755
--- a/gcc/configure
+++ b/gcc/configure
@@ -703,7 +703,9 @@ LIBTOOL
collect2
STMP_FIXINC
BUILD_LDFLAGS
+BUILD_CXXFLAGS
BUILD_CFLAGS
+CXX_FOR_BUILD
CC_FOR_BUILD
inhibit_libc
SYSTEM_HEADER_DIR
@@ -11835,7 +11837,9 @@ fi
# These are the normal (build=host) settings:
CC_FOR_BUILD='$(CC)'
+CXX_FOR_BUILD='$(CXX)'
BUILD_CFLAGS='$(ALL_CFLAGS)'
+BUILD_CXXFLAGS='$(ALL_CXXFLAGS)'
BUILD_LDFLAGS='$(LDFLAGS)'
STMP_FIXINC=stmp-fixinc
@@ -17967,7 +17971,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 17970 "configure"
+#line 17974 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@@ -18073,7 +18077,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
-#line 18076 "configure"
+#line 18080 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
diff --git a/gcc/configure.ac b/gcc/configure.ac
index a3a40389a3c..22dab55a24a 100644
--- a/gcc/configure.ac
+++ b/gcc/configure.ac
@@ -1848,7 +1848,9 @@ AC_SUBST(inhibit_libc)
# These are the normal (build=host) settings:
CC_FOR_BUILD='$(CC)' AC_SUBST(CC_FOR_BUILD)
+CXX_FOR_BUILD='$(CXX)' AC_SUBST(CXX_FOR_BUILD)
BUILD_CFLAGS='$(ALL_CFLAGS)' AC_SUBST(BUILD_CFLAGS)
+BUILD_CXXFLAGS='$(ALL_CXXFLAGS)' AC_SUBST(BUILD_CXXFLAGS)
BUILD_LDFLAGS='$(LDFLAGS)' AC_SUBST(BUILD_LDFLAGS)
STMP_FIXINC=stmp-fixinc AC_SUBST(STMP_FIXINC)
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 5850ff6847d..b1f073460ac 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,28 @@
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * call.c: Do not include output.h.
+ * class.c: Likewise.
+ * except.c: Likewise.
+ * friend.c: Likewise.
+ * init.c: Likewise.
+ * lex.c: Likewise.
+ * method.c: Likewise.
+ * parser.c: Likewise.
+ * pt.c: Likewise.
+ * rtti.c: Likewise.
+ * search.c: Likewise.
+
+2012-05-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/53356
+ * tree.c (stabilize_init): Handle stabilizing a TARGET_EXPR
+ representing a bitwise copy of a glvalue.
+
+ * tree.c (stabilize_expr): Tweak logic.
+
+ PR c++/53356
+ * tree.c (stabilize_init): Side effects make the init unstable.
+
2012-05-28 Paolo Carlini <paolo.carlini@oracle.com>
PR c++/53503
diff --git a/gcc/cp/Make-lang.in b/gcc/cp/Make-lang.in
index c32c87eb65a..a6de644ba2a 100644
--- a/gcc/cp/Make-lang.in
+++ b/gcc/cp/Make-lang.in
@@ -265,7 +265,7 @@ CXX_PARSER_H = tree.h c-family/c-pragma.h cp/parser.h
CXX_PRETTY_PRINT_H = cp/cxx-pretty-print.h $(C_PRETTY_PRINT_H)
cp/lex.o: cp/lex.c $(CXX_TREE_H) $(TM_H) $(FLAGS_H) \
- $(C_PRAGMA_H) output.h input.h cp/operators.def $(TM_P_H) \
+ $(C_PRAGMA_H) input.h cp/operators.def $(TM_P_H) \
c-family/c-objc.h
cp/cp-lang.o: cp/cp-lang.c $(CXX_TREE_H) $(TM_H) debug.h langhooks.h \
$(LANGHOOKS_DEF_H) $(C_COMMON_H) gtype-cp.h gt-cp-cp-lang.h \
@@ -334,7 +334,7 @@ cp/optimize.o: cp/optimize.c $(CXX_TREE_H) $(TM_H) \
cp/mangle.o: cp/mangle.c $(CXX_TREE_H) $(TM_H) $(REAL_H) \
gt-cp-mangle.h $(TARGET_H) $(TM_P_H) $(CGRAPH_H)
cp/parser.o: cp/parser.c $(CXX_TREE_H) $(TM_H) $(DIAGNOSTIC_CORE_H) \
- gt-cp-parser.h output.h $(TARGET_H) $(PLUGIN_H) intl.h \
+ gt-cp-parser.h $(TARGET_H) $(PLUGIN_H) intl.h \
c-family/c-objc.h tree-pretty-print.h $(CXX_PARSER_H) $(TIMEVAR.H)
cp/cp-gimplify.o: cp/cp-gimplify.c $(CXX_TREE_H) $(C_COMMON_H) \
$(TM_H) coretypes.h pointer-set.h tree-iterator.h $(SPLAY_TREE_H)
diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 5efa57cd759..6745afd379d 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "cp-tree.h"
-#include "output.h"
#include "flags.h"
#include "toplev.h"
#include "diagnostic-core.h"
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 5aef0fe71f4..c30054d5709 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "cp-tree.h"
#include "flags.h"
-#include "output.h"
#include "toplev.h"
#include "target.h"
#include "convert.h"
diff --git a/gcc/cp/except.c b/gcc/cp/except.c
index 8998c7d7091..6fe3cce2b30 100644
--- a/gcc/cp/except.c
+++ b/gcc/cp/except.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "cp-tree.h"
#include "flags.h"
-#include "output.h"
#include "tree-inline.h"
#include "tree-iterator.h"
#include "target.h"
diff --git a/gcc/cp/init.c b/gcc/cp/init.c
index ca6f14af370..5bd46cb4b0d 100644
--- a/gcc/cp/init.c
+++ b/gcc/cp/init.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "cp-tree.h"
#include "flags.h"
-#include "output.h"
#include "target.h"
static bool begin_init_stmts (tree *, tree *);
diff --git a/gcc/cp/lex.c b/gcc/cp/lex.c
index a79448ea549..743f4752c1c 100644
--- a/gcc/cp/lex.c
+++ b/gcc/cp/lex.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "c-family/c-pragma.h"
#include "c-family/c-objc.h"
-#include "output.h"
#include "tm_p.h"
#include "timevar.h"
diff --git a/gcc/cp/method.c b/gcc/cp/method.c
index 77f8839828a..6e2952131ba 100644
--- a/gcc/cp/method.c
+++ b/gcc/cp/method.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "tree.h"
#include "cp-tree.h"
-#include "output.h"
#include "flags.h"
#include "toplev.h"
#include "tm_p.h"
diff --git a/gcc/cp/parser.c b/gcc/cp/parser.c
index 9fd8c84d923..547f9e21438 100644
--- a/gcc/cp/parser.c
+++ b/gcc/cp/parser.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "decl.h"
#include "flags.h"
#include "diagnostic-core.h"
-#include "output.h"
#include "target.h"
#include "cgraph.h"
#include "c-family/c-common.h"
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index fa994baf859..c55687bb95f 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -40,7 +40,6 @@ along with GCC; see the file COPYING3. If not see
#include "cp-objcp-common.h"
#include "tree-inline.h"
#include "decl.h"
-#include "output.h"
#include "toplev.h"
#include "timevar.h"
#include "tree-iterator.h"
diff --git a/gcc/cp/rtti.c b/gcc/cp/rtti.c
index bdeea713da8..e79b02e6837 100644
--- a/gcc/cp/rtti.c
+++ b/gcc/cp/rtti.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "cp-tree.h"
#include "flags.h"
-#include "output.h"
#include "convert.h"
#include "target.h"
#include "c-family/c-pragma.h"
diff --git a/gcc/cp/search.c b/gcc/cp/search.c
index 19ef5967a80..e6d6be814c6 100644
--- a/gcc/cp/search.c
+++ b/gcc/cp/search.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "cp-tree.h"
#include "intl.h"
#include "flags.h"
-#include "output.h"
#include "toplev.h"
#include "target.h"
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 236180de7fd..2b541cd5bd5 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -3283,8 +3283,8 @@ stabilize_expr (tree exp, tree* initp)
init_expr = NULL_TREE;
else if (VOID_TYPE_P (TREE_TYPE (exp)))
{
- *initp = exp;
- return void_zero_node;
+ init_expr = exp;
+ exp = void_zero_node;
}
/* There are no expressions with REFERENCE_TYPE, but there can be call
arguments with such a type; just treat it as a pointer. */
@@ -3389,7 +3389,7 @@ stabilize_aggr_init (tree call, tree *initp)
takes care not to introduce additional temporaries.
Returns TRUE iff the expression was successfully pre-evaluated,
- i.e., if INIT is now side-effect free, except for, possible, a
+ i.e., if INIT is now side-effect free, except for, possibly, a
single call to a constructor. */
bool
@@ -3402,21 +3402,37 @@ stabilize_init (tree init, tree *initp)
if (t == error_mark_node || processing_template_decl)
return true;
- if (TREE_CODE (t) == INIT_EXPR
- && TREE_CODE (TREE_OPERAND (t, 1)) != TARGET_EXPR
- && TREE_CODE (TREE_OPERAND (t, 1)) != CONSTRUCTOR
- && TREE_CODE (TREE_OPERAND (t, 1)) != AGGR_INIT_EXPR)
- {
- TREE_OPERAND (t, 1) = stabilize_expr (TREE_OPERAND (t, 1), initp);
- return true;
- }
-
if (TREE_CODE (t) == INIT_EXPR)
t = TREE_OPERAND (t, 1);
if (TREE_CODE (t) == TARGET_EXPR)
t = TARGET_EXPR_INITIAL (t);
- if (TREE_CODE (t) == COMPOUND_EXPR)
- t = expr_last (t);
+
+ /* If the RHS can be stabilized without breaking copy elision, stabilize
+ it. We specifically don't stabilize class prvalues here because that
+ would mean an extra copy, but they might be stabilized below. */
+ if (TREE_CODE (init) == INIT_EXPR
+ && TREE_CODE (t) != CONSTRUCTOR
+ && TREE_CODE (t) != AGGR_INIT_EXPR
+ && (SCALAR_TYPE_P (TREE_TYPE (t))
+ || lvalue_or_rvalue_with_address_p (t)))
+ {
+ TREE_OPERAND (init, 1) = stabilize_expr (t, initp);
+ return true;
+ }
+
+ if (TREE_CODE (t) == COMPOUND_EXPR
+ && TREE_CODE (init) == INIT_EXPR)
+ {
+ tree last = expr_last (t);
+ /* Handle stabilizing the EMPTY_CLASS_EXPR pattern. */
+ if (!TREE_SIDE_EFFECTS (last))
+ {
+ *initp = t;
+ TREE_OPERAND (init, 1) = last;
+ return true;
+ }
+ }
+
if (TREE_CODE (t) == CONSTRUCTOR)
{
/* Aggregate initialization: stabilize each of the field
@@ -3439,11 +3455,6 @@ stabilize_init (tree init, tree *initp)
return good;
}
- /* If the initializer is a COND_EXPR, we can't preevaluate
- anything. */
- if (TREE_CODE (t) == COND_EXPR)
- return false;
-
if (TREE_CODE (t) == CALL_EXPR)
{
stabilize_call (t, initp);
@@ -3458,7 +3469,7 @@ stabilize_init (tree init, tree *initp)
/* The initialization is being performed via a bitwise copy -- and
the item copied may have side effects. */
- return TREE_SIDE_EFFECTS (init);
+ return !TREE_SIDE_EFFECTS (init);
}
/* Like "fold", but should be used whenever we might be processing the
diff --git a/gcc/cprop.c b/gcc/cprop.c
index ea6909195ac..29495e000df 100644
--- a/gcc/cprop.c
+++ b/gcc/cprop.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "expr.h"
#include "except.h"
diff --git a/gcc/cse.c b/gcc/cse.c
index 9f4e97932ed..783c932aed0 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "expr.h"
#include "diagnostic-core.h"
#include "toplev.h"
-#include "output.h"
#include "ggc.h"
#include "timevar.h"
#include "except.h"
@@ -622,9 +621,7 @@ static enum machine_mode cse_cc_succs (basic_block, basic_block, rtx, rtx,
static const struct rtl_hooks cse_rtl_hooks = RTL_HOOKS_INITIALIZER;
-/* Nonzero if X has the form (PLUS frame-pointer integer). We check for
- virtual regs here because the simplify_*_operation routines are called
- by integrate.c, which is called before virtual register instantiation. */
+/* Nonzero if X has the form (PLUS frame-pointer integer). */
static bool
fixed_base_plus_p (rtx x)
@@ -636,9 +633,6 @@ fixed_base_plus_p (rtx x)
return true;
if (x == arg_pointer_rtx && fixed_regs[ARG_POINTER_REGNUM])
return true;
- if (REGNO (x) >= FIRST_VIRTUAL_REGISTER
- && REGNO (x) <= LAST_VIRTUAL_REGISTER)
- return true;
return false;
case PLUS:
diff --git a/gcc/cselib.c b/gcc/cselib.c
index a8c66b8dee9..5e6d049b0e3 100644
--- a/gcc/cselib.c
+++ b/gcc/cselib.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "function.h"
#include "emit-rtl.h"
#include "diagnostic-core.h"
-#include "output.h"
#include "ggc.h"
#include "hashtab.h"
#include "tree-pass.h"
@@ -1374,7 +1373,7 @@ cselib_lookup_mem (rtx x, int create)
return mem_elt;
}
-/* Search thru the possible substitutions in P. We prefer a non reg
+/* Search through the possible substitutions in P. We prefer a non reg
substitution because this allows us to expand the tree further. If
we find, just a reg, take the lowest regno. There may be several
non-reg results, we just take the first one because they will all
diff --git a/gcc/dbgcnt.c b/gcc/dbgcnt.c
index fa46ed8a60d..532e4d0e57a 100644
--- a/gcc/dbgcnt.c
+++ b/gcc/dbgcnt.c
@@ -25,7 +25,6 @@ See dbgcnt.def for usage information. */
#include "diagnostic-core.h"
#include "tm.h"
#include "rtl.h"
-#include "output.h"
#include "dbgcnt.h"
diff --git a/gcc/dbxout.c b/gcc/dbxout.c
index ed9015182ed..a6b7b99841f 100644
--- a/gcc/dbxout.c
+++ b/gcc/dbxout.c
@@ -3817,4 +3817,40 @@ dbxout_begin_function (tree decl)
#endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
+/* Record an element in the table of global destructors. SYMBOL is
+ a SYMBOL_REF of the function to be called; PRIORITY is a number
+ between 0 and MAX_INIT_PRIORITY. */
+
+void
+default_stabs_asm_out_destructor (rtx symbol ATTRIBUTE_UNUSED,
+ int priority ATTRIBUTE_UNUSED)
+{
+#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
+ /* Tell GNU LD that this is part of the static destructor set.
+ This will work for any system that uses stabs, most usefully
+ aout systems. */
+ dbxout_begin_simple_stabs ("___DTOR_LIST__", 22 /* N_SETT */);
+ dbxout_stab_value_label (XSTR (symbol, 0));
+#else
+ sorry ("global destructors not supported on this target");
+#endif
+}
+
+/* Likewise for global constructors. */
+
+void
+default_stabs_asm_out_constructor (rtx symbol ATTRIBUTE_UNUSED,
+ int priority ATTRIBUTE_UNUSED)
+{
+#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
+ /* Tell GNU LD that this is part of the static destructor set.
+ This will work for any system that uses stabs, most usefully
+ aout systems. */
+ dbxout_begin_simple_stabs ("___CTOR_LIST__", 22 /* N_SETT */);
+ dbxout_stab_value_label (XSTR (symbol, 0));
+#else
+ sorry ("global constructors not supported on this target");
+#endif
+}
+
#include "gt-dbxout.h"
diff --git a/gcc/dbxout.h b/gcc/dbxout.h
index 80616597b40..84c78362ff1 100644
--- a/gcc/dbxout.h
+++ b/gcc/dbxout.h
@@ -26,6 +26,28 @@ extern void dbxout_parms (tree);
extern void dbxout_reg_parms (tree);
extern int dbxout_syms (tree);
+extern void default_stabs_asm_out_destructor (rtx, int);
+extern void default_stabs_asm_out_constructor (rtx, int);
+
+/* dbxout helper functions */
+#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
+
+extern void dbxout_int (int);
+extern void dbxout_stabd (int, int);
+extern void dbxout_begin_stabn (int);
+extern void dbxout_begin_stabn_sline (int);
+extern void dbxout_begin_empty_stabs (int);
+extern void dbxout_begin_simple_stabs (const char *, int);
+extern void dbxout_begin_simple_stabs_desc (const char *, int, int);
+
+extern void dbxout_stab_value_zero (void);
+extern void dbxout_stab_value_label (const char *);
+extern void dbxout_stab_value_label_diff (const char *, const char *);
+extern void dbxout_stab_value_internal_label (const char *, int *);
+extern void dbxout_stab_value_internal_label_diff (const char *, int *,
+ const char *);
+#endif
+
/* Language description for N_SO stabs. */
#define N_SO_AS 1
#define N_SO_C 2
diff --git a/gcc/df-problems.c b/gcc/df-problems.c
index e04daceccab..a020e28ad27 100644
--- a/gcc/df-problems.c
+++ b/gcc/df-problems.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "recog.h"
#include "function.h"
#include "regs.h"
-#include "output.h"
#include "alloc-pool.h"
#include "flags.h"
#include "hard-reg-set.h"
diff --git a/gcc/df-scan.c b/gcc/df-scan.c
index 9d39700369d..0d36ad13893 100644
--- a/gcc/df-scan.c
+++ b/gcc/df-scan.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "recog.h"
#include "function.h"
#include "regs.h"
-#include "output.h"
#include "alloc-pool.h"
#include "flags.h"
#include "hard-reg-set.h"
@@ -3734,7 +3733,7 @@ df_get_eh_block_artificial_uses (bitmap eh_block_artificial_uses)
{
bitmap_clear (eh_block_artificial_uses);
- /* The following code (down thru the arg_pointer setting APPEARS
+ /* The following code (down through the arg_pointer setting APPEARS
to be necessary because there is nothing that actually
describes what the exception handling code may actually need
to keep alive. */
@@ -4539,7 +4538,7 @@ df_scan_verify (void)
/* Verification is a 4 step process. */
- /* (1) All of the refs are marked by going thru the reg chains. */
+ /* (1) All of the refs are marked by going through the reg chains. */
for (i = 0; i < DF_REG_SIZE (df); i++)
{
gcc_assert (df_reg_chain_mark (DF_REG_DEF_CHAIN (i), i, true, false)
diff --git a/gcc/df.h b/gcc/df.h
index c0fabb9e2b7..1b4882d1d16 100644
--- a/gcc/df.h
+++ b/gcc/df.h
@@ -367,7 +367,7 @@ struct df_base_ref
when FUDs are added. */
struct df_insn_info *insn_info;
/* For each regno, there are three chains of refs, one for the uses,
- the eq_uses and the defs. These chains go thru the refs
+ the eq_uses and the defs. These chains go through the refs
themselves rather than using an external structure. */
union df_ref_d *next_reg; /* Next ref with same regno and type. */
union df_ref_d *prev_reg; /* Prev ref with same regno and type. */
diff --git a/gcc/doc/avr-mmcu.texi b/gcc/doc/avr-mmcu.texi
index ee5f2fa34a2..ac9c631161a 100644
--- a/gcc/doc/avr-mmcu.texi
+++ b/gcc/doc/avr-mmcu.texi
@@ -13,11 +13,11 @@
@item avr2
``Classic'' devices with up to 8@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{at90s2313}, @code{at90s2323}, @code{at90s2333}, @code{at90s2343}, @code{attiny22}, @code{attiny26}, @code{at90s4414}, @code{at90s4433}, @code{at90s4434}, @code{at90s8515}, @code{at90c8534}, @code{at90s8535}.
+@*@var{mcu}@tie{}= @code{at90c8534}, @code{at90s2313}, @code{at90s2323}, @code{at90s2333}, @code{at90s2343}, @code{at90s4414}, @code{at90s4433}, @code{at90s4434}, @code{at90s8515}, @code{at90s8535}, @code{attiny22}, @code{attiny26}.
@item avr25
``Classic'' devices with up to 8@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny4313}, @code{attiny44}, @code{attiny44a}, @code{attiny84}, @code{attiny84a}, @code{attiny25}, @code{attiny45}, @code{attiny85}, @code{attiny261}, @code{attiny261a}, @code{attiny461}, @code{attiny461a}, @code{attiny861}, @code{attiny861a}, @code{attiny43u}, @code{attiny87}, @code{attiny48}, @code{attiny88}, @code{at86rf401}.
+@*@var{mcu}@tie{}= @code{at86rf401}, @code{ata6289}, @code{attiny13}, @code{attiny13a}, @code{attiny2313}, @code{attiny2313a}, @code{attiny24}, @code{attiny24a}, @code{attiny25}, @code{attiny261}, @code{attiny261a}, @code{attiny4313}, @code{attiny43u}, @code{attiny44}, @code{attiny44a}, @code{attiny45}, @code{attiny461}, @code{attiny461a}, @code{attiny48}, @code{attiny84}, @code{attiny84a}, @code{attiny85}, @code{attiny861}, @code{attiny861a}, @code{attiny87}, @code{attiny88}.
@item avr3
``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
@@ -25,23 +25,23 @@
@item avr31
``Classic'' devices with 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega103}, @code{at43usb320}.
+@*@var{mcu}@tie{}= @code{at43usb320}, @code{atmega103}.
@item avr35
``Classic'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory and with the @code{MOVW} instruction.
-@*@var{mcu}@tie{}= @code{at90usb82}, @code{at90usb162}, @code{atmega8u2}, @code{atmega16u2}, @code{atmega32u2}, @code{attiny167}.
+@*@var{mcu}@tie{}= @code{at90usb162}, @code{at90usb82}, @code{atmega16u2}, @code{atmega32u2}, @code{atmega8u2}, @code{attiny167}.
@item avr4
``Enhanced'' devices with up to 8@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega8}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{atmega8515}, @code{atmega8535}, @code{atmega8hva}, @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}.
+@*@var{mcu}@tie{}= @code{at90pwm1}, @code{at90pwm2}, @code{at90pwm2b}, @code{at90pwm3}, @code{at90pwm3b}, @code{at90pwm81}, @code{atmega48}, @code{atmega48a}, @code{atmega48p}, @code{atmega8}, @code{atmega8515}, @code{atmega8535}, @code{atmega88}, @code{atmega88a}, @code{atmega88p}, @code{atmega88pa}, @code{atmega8hva}.
@item avr5
``Enhanced'' devices with 16@tie{}KiB up to 64@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega16}, @code{atmega16a}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega32}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega325a}, @code{atmega325p}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega406}, @code{atmega64}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega645a}, @code{atmega645p}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega649}, @code{atmega649a}, @code{atmega649p}, @code{atmega6490}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega32hvb}, @code{atmega64hve}, @code{at90can32}, @code{at90can64}, @code{at90pwm216}, @code{at90pwm316}, @code{atmega32c1}, @code{atmega64c1}, @code{atmega16m1}, @code{atmega32m1}, @code{atmega64m1}, @code{atmega16u4}, @code{atmega32u4}, @code{atmega32u6}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{m3000}.
+@*@var{mcu}@tie{}= @code{at90can32}, @code{at90can64}, @code{at90pwm216}, @code{at90pwm316}, @code{at90scr100}, @code{at90usb646}, @code{at90usb647}, @code{at94k}, @code{atmega16}, @code{atmega161}, @code{atmega162}, @code{atmega163}, @code{atmega164a}, @code{atmega164p}, @code{atmega165}, @code{atmega165a}, @code{atmega165p}, @code{atmega168}, @code{atmega168a}, @code{atmega168p}, @code{atmega169}, @code{atmega169a}, @code{atmega169p}, @code{atmega169pa}, @code{atmega16a}, @code{atmega16hva}, @code{atmega16hva2}, @code{atmega16hvb}, @code{atmega16m1}, @code{atmega16u4}, @code{atmega32}, @code{atmega323}, @code{atmega324a}, @code{atmega324p}, @code{atmega324pa}, @code{atmega325}, @code{atmega3250}, @code{atmega3250a}, @code{atmega3250p}, @code{atmega325a}, @code{atmega325p}, @code{atmega328}, @code{atmega328p}, @code{atmega329}, @code{atmega3290}, @code{atmega3290a}, @code{atmega3290p}, @code{atmega329a}, @code{atmega329p}, @code{atmega329pa}, @code{atmega32c1}, @code{atmega32hvb}, @code{atmega32m1}, @code{atmega32u4}, @code{atmega32u6}, @code{atmega406}, @code{atmega64}, @code{atmega640}, @code{atmega644}, @code{atmega644a}, @code{atmega644p}, @code{atmega644pa}, @code{atmega645}, @code{atmega6450}, @code{atmega6450a}, @code{atmega6450p}, @code{atmega645a}, @code{atmega645p}, @code{atmega649}, @code{atmega6490}, @code{atmega649a}, @code{atmega649p}, @code{atmega64c1}, @code{atmega64hve}, @code{atmega64m1}, @code{m3000}.
@item avr51
``Enhanced'' devices with 128@tie{}KiB of program memory.
-@*@var{mcu}@tie{}= @code{atmega128}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284p}, @code{atmega128rfa1}, @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}.
+@*@var{mcu}@tie{}= @code{at90can128}, @code{at90usb1286}, @code{at90usb1287}, @code{atmega128}, @code{atmega1280}, @code{atmega1281}, @code{atmega1284p}, @code{atmega128rfa1}.
@item avr6
``Enhanced'' devices with 3-byte PC, i.e.@: with more than 128@tie{}KiB of program memory.
diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index d3fc2d8c2db..a60d6da0c20 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -3736,7 +3736,7 @@ the PowerPC V2.05 architecture.
@cindex @code{target("dlmzb")} attribute
Generate code that uses (does not use) the string-search @samp{dlmzb}
instruction on the IBM 405, 440, 464 and 476 processors. This instruction is
-generated by default when targetting those processors.
+generated by default when targeting those processors.
@item fprnd
@itemx no-fprnd
@@ -3775,7 +3775,7 @@ other processors that support the extended PowerPC V2.05 architecture.
@cindex @code{target("mulhw")} attribute
Generate code that uses (does not use) the half-word multiply and
multiply-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
-These instructions are generated by default when targetting those
+These instructions are generated by default when targeting those
processors.
@item multiple
@@ -9558,7 +9558,7 @@ else
@end deftypefn
@deftypefn {Built-in Function} int __builtin_cpu_supports (const char *@var{feature})
-This function returns a postive integer if the runtime cpu supports @var{feature}
+This function returns a positive integer if the runtime cpu supports @var{feature}
and returns @code{0} otherwise. The following features can be detected:
@table @samp
diff --git a/gcc/doc/include/texinfo.tex b/gcc/doc/include/texinfo.tex
index e4f38dd4964..0f3a0960c03 100644
--- a/gcc/doc/include/texinfo.tex
+++ b/gcc/doc/include/texinfo.tex
@@ -1,13 +1,13 @@
% texinfo.tex -- TeX macros to handle Texinfo files.
-%
+%
% Load plain if necessary, i.e., if running under initex.
\expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
%
-\def\texinfoversion{2008-03-17.10}
+\def\texinfoversion{2012-05-16.16}
%
-% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
%
% This texinfo.tex file is free software: you can redistribute it and/or
% modify it under the terms of the GNU General Public License as
@@ -28,9 +28,9 @@
%
% Please try the latest version of texinfo.tex before submitting bug
% reports; you can get the latest version from:
-% http://www.gnu.org/software/texinfo/ (the Texinfo home page), or
-% ftp://tug.org/tex/texinfo.tex
-% (and all CTAN mirrors, see http://www.ctan.org).
+% http://ftp.gnu.org/gnu/texinfo/ (the Texinfo release area), or
+% http://ftpmirror.gnu.org/texinfo/ (same, via a mirror), or
+% http://www.gnu.org/software/texinfo/ (the Texinfo home page)
% The texinfo.tex in any given distribution could well be out
% of date, so if that's what you're using, please check.
%
@@ -65,7 +65,6 @@
\everyjob{\message{[Texinfo version \texinfoversion]}%
\catcode`+=\active \catcode`\_=\active}
-
\chardef\other=12
% We never want plain's \outer definition of \+ in Texinfo.
@@ -93,11 +92,13 @@
\let\ptexnewwrite\newwrite
\let\ptexnoindent=\noindent
\let\ptexplus=+
+\let\ptexraggedright=\raggedright
\let\ptexrbrace=\}
\let\ptexslash=\/
\let\ptexstar=\*
\let\ptext=\t
\let\ptextop=\top
+{\catcode`\'=\active \global\let\ptexquoteright'}% active in plain's math mode
% If this character appears in an error message or help string, it
% starts a new line in the output.
@@ -115,10 +116,11 @@
% Set up fixed words for English if not already set.
\ifx\putwordAppendix\undefined \gdef\putwordAppendix{Appendix}\fi
\ifx\putwordChapter\undefined \gdef\putwordChapter{Chapter}\fi
+\ifx\putworderror\undefined \gdef\putworderror{error}\fi
\ifx\putwordfile\undefined \gdef\putwordfile{file}\fi
\ifx\putwordin\undefined \gdef\putwordin{in}\fi
-\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
-\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
+\ifx\putwordIndexIsEmpty\undefined \gdef\putwordIndexIsEmpty{(Index is empty)}\fi
+\ifx\putwordIndexNonexistent\undefined \gdef\putwordIndexNonexistent{(Index is nonexistent)}\fi
\ifx\putwordInfo\undefined \gdef\putwordInfo{Info}\fi
\ifx\putwordInstanceVariableof\undefined \gdef\putwordInstanceVariableof{Instance Variable of}\fi
\ifx\putwordMethodon\undefined \gdef\putwordMethodon{Method on}\fi
@@ -157,15 +159,18 @@
\def\spaceisspace{\catcode`\ =\spacecat}
% sometimes characters are active, so we need control sequences.
+\chardef\ampChar = `\&
\chardef\colonChar = `\:
\chardef\commaChar = `\,
\chardef\dashChar = `\-
\chardef\dotChar = `\.
\chardef\exclamChar= `\!
+\chardef\hashChar = `\#
\chardef\lquoteChar= `\`
\chardef\questChar = `\?
\chardef\rquoteChar= `\'
\chardef\semiChar = `\;
+\chardef\slashChar = `\/
\chardef\underChar = `\_
% Ignore a token.
@@ -196,36 +201,7 @@
% that mark overfull boxes (in case you have decided
% that the text looks ok even though it passes the margin).
%
-\def\finalout{\overfullrule=0pt}
-
-% @| inserts a changebar to the left of the current line. It should
-% surround any changed text. This approach does *not* work if the
-% change spans more than two lines of output. To handle that, we would
-% have adopt a much more difficult approach (putting marks into the main
-% vertical list for the beginning and end of each change).
-%
-\def\|{%
- % \vadjust can only be used in horizontal mode.
- \leavevmode
- %
- % Append this vertical mode material after the current line in the output.
- \vadjust{%
- % We want to insert a rule with the height and depth of the current
- % leading; that is exactly what \strutbox is supposed to record.
- \vskip-\baselineskip
- %
- % \vadjust-items are inserted at the left edge of the type. So
- % the \llap here moves out into the left-hand margin.
- \llap{%
- %
- % For a thicker or thinner bar, change the `1pt'.
- \vrule height\baselineskip width1pt
- %
- % This is the space between the bar and the text.
- \hskip 12pt
- }%
- }%
-}
+\def\finalout{\overfullrule=0pt }
% Sometimes it is convenient to have everything in the transcript file
% and nothing on the terminal. We don't just call \tracingall here,
@@ -243,7 +219,7 @@
\tracingmacros2
\tracingrestores1
\showboxbreadth\maxdimen \showboxdepth\maxdimen
- \ifx\eTeXversion\undefined\else % etex gives us more logging
+ \ifx\eTeXversion\thisisundefined\else % etex gives us more logging
\tracingscantokens1
\tracingifs1
\tracinggroups1
@@ -254,6 +230,13 @@
\errorcontextlines16
}%
+% @errormsg{MSG}. Do the index-like expansions on MSG, but if things
+% aren't perfect, it's not the end of the world, being an error message,
+% after all.
+%
+\def\errormsg{\begingroup \indexnofonts \doerrormsg}
+\def\doerrormsg#1{\errmessage{#1}}
+
% add check for \lastpenalty to plain's definitions. If the last thing
% we did was a \nobreak, we don't want to insert more space.
%
@@ -264,7 +247,6 @@
\def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
\removelastskip\penalty-200\bigskip\fi\fi}
-% For @cropmarks command.
% Do @cropmarks to get crop marks.
%
\newif\ifcropmarks
@@ -355,7 +337,7 @@
% We don't want .vr (or whatever) entries like this:
% \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
% "\acronym" won't work when it's read back in;
- % it needs to be
+ % it needs to be
% {\code {{\tt \backslashcurfont }acronym}
\shipout\vbox{%
% Do this early so pdf references go to the beginning of the page.
@@ -461,7 +443,7 @@
\def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
-% Each occurence of `\^^M' or `<space>\^^M' is replaced by a single space.
+% Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
%
% \argremovec might leave us with trailing space, e.g.,
% @end itemize @c foo
@@ -486,7 +468,7 @@
% to get _exactly_ the rest of the line, we had to prevent such situation.
% We prepended an \empty token at the very beginning and we expand it now,
% just before passing the control to \argtorun.
-% (Similarily, we have to think about #3 of \argcheckspacesY above: it is
+% (Similarly, we have to think about #3 of \argcheckspacesY above: it is
% either the null string, or it ends with \^^M---thus there is no danger
% that a pair of braces would be stripped.
%
@@ -543,12 +525,12 @@
% used to check whether the current environment is the one expected.
%
% Non-false conditionals (@iftex, @ifset) don't fit into this, so they
-% are not treated as enviroments; they don't open a group. (The
+% are not treated as environments; they don't open a group. (The
% implementation of @end takes care not to call \endgroup in this
% special case.)
-% At runtime, environments start with this:
+% At run-time, environments start with this:
\def\startenvironment#1{\begingroup\def\thisenv{#1}}
% initialize
\let\thisenv\empty
@@ -566,7 +548,7 @@
\fi
}
-% Evironment mismatch, #1 expected:
+% Environment mismatch, #1 expected:
\def\badenverr{%
\errhelp = \EMsimple
\errmessage{This command can appear only \inenvironment\temp,
@@ -574,7 +556,7 @@
}
\def\inenvironment#1{%
\ifx#1\empty
- out of any environment%
+ outside of any environment%
\else
in environment \expandafter\string#1%
\fi
@@ -586,7 +568,7 @@
\parseargdef\end{%
\if 1\csname iscond.#1\endcsname
\else
- % The general wording of \badenverr may not be ideal, but... --kasal, 06nov03
+ % The general wording of \badenverr may not be ideal.
\expandafter\checkenv\csname#1\endcsname
\csname E#1\endcsname
\endgroup
@@ -596,85 +578,6 @@
\newhelp\EMsimple{Press RETURN to continue.}
-%% Simple single-character @ commands
-
-% @@ prints an @
-% Kludge this until the fonts are right (grr).
-\def\@{{\tt\char64}}
-
-% This is turned off because it was never documented
-% and you can use @w{...} around a quote to suppress ligatures.
-%% Define @` and @' to be the same as ` and '
-%% but suppressing ligatures.
-%\def\`{{`}}
-%\def\'{{'}}
-
-% Used to generate quoted braces.
-\def\mylbrace {{\tt\char123}}
-\def\myrbrace {{\tt\char125}}
-\let\{=\mylbrace
-\let\}=\myrbrace
-\begingroup
- % Definitions to produce \{ and \} commands for indices,
- % and @{ and @} for the aux/toc files.
- \catcode`\{ = \other \catcode`\} = \other
- \catcode`\[ = 1 \catcode`\] = 2
- \catcode`\! = 0 \catcode`\\ = \other
- !gdef!lbracecmd[\{]%
- !gdef!rbracecmd[\}]%
- !gdef!lbraceatcmd[@{]%
- !gdef!rbraceatcmd[@}]%
-!endgroup
-
-% @comma{} to avoid , parsing problems.
-\let\comma = ,
-
-% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
-% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
-\let\, = \c
-\let\dotaccent = \.
-\def\ringaccent#1{{\accent23 #1}}
-\let\tieaccent = \t
-\let\ubaraccent = \b
-\let\udotaccent = \d
-
-% Other special characters: @questiondown @exclamdown @ordf @ordm
-% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
-\def\questiondown{?`}
-\def\exclamdown{!`}
-\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
-\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
-
-% Dotless i and dotless j, used for accents.
-\def\imacro{i}
-\def\jmacro{j}
-\def\dotless#1{%
- \def\temp{#1}%
- \ifx\temp\imacro \ptexi
- \else\ifx\temp\jmacro \j
- \else \errmessage{@dotless can be used only with i or j}%
- \fi\fi
-}
-
-% The \TeX{} logo, as in plain, but resetting the spacing so that a
-% period following counts as ending a sentence. (Idea found in latex.)
-%
-\edef\TeX{\TeX \spacefactor=1000 }
-
-% @LaTeX{} logo. Not quite the same results as the definition in
-% latex.ltx, since we use a different font for the raised A; it's most
-% convenient for us to use an explicitly smaller font, rather than using
-% the \scriptstyle font (since we don't reset \scriptstyle and
-% \scriptscriptstyle).
-%
-\def\LaTeX{%
- L\kern-.36em
- {\setbox0=\hbox{T}%
- \vbox to \ht0{\hbox{\selectfonts\lllsize A}\vss}}%
- \kern-.15em
- \TeX
-}
-
% Be sure we're in horizontal mode when doing a tie, since we make space
% equivalent to this in @example-like environments. Otherwise, a space
% at the beginning of a line will start with \penalty -- and
@@ -706,7 +609,7 @@
\def\?{?\spacefactor=\endofsentencespacefactor\space}
% @frenchspacing on|off says whether to put extra space after punctuation.
-%
+%
\def\onword{on}
\def\offword{off}
%
@@ -716,7 +619,7 @@
\else\ifx\temp\offword \plainnonfrenchspacing
\else
\errhelp = \EMsimple
- \errmessage{Unknown @frenchspacing option `\temp', must be on/off}%
+ \errmessage{Unknown @frenchspacing option `\temp', must be on|off}%
\fi\fi
}
@@ -798,15 +701,6 @@ where each line of input produces a line of output.}
\newdimen\mil \mil=0.001in
-% Old definition--didn't work.
-%\parseargdef\need{\par %
-%% This method tries to make TeX break the page naturally
-%% if the depth of the box does not fit.
-%{\baselineskip=0pt%
-%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
-%\prevdepth=-1000pt
-%}}
-
\parseargdef\need{%
% Ensure vertical mode, so we don't make a big box in the middle of a
% paragraph.
@@ -870,7 +764,7 @@ where each line of input produces a line of output.}
% @inmargin{WHICH}{TEXT} puts TEXT in the WHICH margin next to the current
% paragraph. For more general purposes, use the \margin insertion
-% class. WHICH is `l' or `r'.
+% class. WHICH is `l' or `r'. Not documented, written for gawk manual.
%
\newskip\inmarginspacing \inmarginspacing=1cm
\def\strutdepth{\dp\strutbox}
@@ -917,6 +811,36 @@ where each line of input produces a line of output.}
\temp
}
+% @| inserts a changebar to the left of the current line. It should
+% surround any changed text. This approach does *not* work if the
+% change spans more than two lines of output. To handle that, we would
+% have adopt a much more difficult approach (putting marks into the main
+% vertical list for the beginning and end of each change). This command
+% is not documented, not supported, and doesn't work.
+%
+\def\|{%
+ % \vadjust can only be used in horizontal mode.
+ \leavevmode
+ %
+ % Append this vertical mode material after the current line in the output.
+ \vadjust{%
+ % We want to insert a rule with the height and depth of the current
+ % leading; that is exactly what \strutbox is supposed to record.
+ \vskip-\baselineskip
+ %
+ % \vadjust-items are inserted at the left edge of the type. So
+ % the \llap here moves out into the left-hand margin.
+ \llap{%
+ %
+ % For a thicker or thinner bar, change the `1pt'.
+ \vrule height\baselineskip width1pt
+ %
+ % This is the space between the bar and the text.
+ \hskip 12pt
+ }%
+ }%
+}
+
% @include FILE -- \input text of FILE.
%
\def\include{\parseargusing\filenamecatcodes\includezzz}
@@ -924,8 +848,10 @@ where each line of input produces a line of output.}
\pushthisfilestack
\def\thisfile{#1}%
{%
- \makevalueexpandable % we want to expand any @value in FILE.
+ \makevalueexpandable % we want to expand any @value in FILE.
\turnoffactive % and allow special characters in the expansion
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @include of #1^^J}%
\edef\temp{\noexpand\input #1 }%
%
% This trickery is to read FILE outside of a group, in case it makes
@@ -944,6 +870,8 @@ where each line of input produces a line of output.}
\catcode`>=\other
\catcode`+=\other
\catcode`-=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
}
\def\pushthisfilestack{%
@@ -959,7 +887,7 @@ where each line of input produces a line of output.}
\def\popthisfilestack{\errthisfilestackempty}
\def\errthisfilestackempty{\errmessage{Internal error:
the stack of filenames is empty.}}
-
+%
\def\thisfile{}
% @center line
@@ -967,36 +895,46 @@ where each line of input produces a line of output.}
%
\parseargdef\center{%
\ifhmode
- \let\next\centerH
+ \let\centersub\centerH
\else
- \let\next\centerV
+ \let\centersub\centerV
\fi
- \next{\hfil \ignorespaces#1\unskip \hfil}%
+ \centersub{\hfil \ignorespaces#1\unskip \hfil}%
+ \let\centersub\relax % don't let the definition persist, just in case
}
-\def\centerH#1{%
- {%
- \hfil\break
- \advance\hsize by -\leftskip
- \advance\hsize by -\rightskip
- \line{#1}%
- \break
- }%
+\def\centerH#1{{%
+ \hfil\break
+ \advance\hsize by -\leftskip
+ \advance\hsize by -\rightskip
+ \line{#1}%
+ \break
+}}
+%
+\newcount\centerpenalty
+\def\centerV#1{%
+ % The idea here is the same as in \startdefun, \cartouche, etc.: if
+ % @center is the first thing after a section heading, we need to wipe
+ % out the negative parskip inserted by \sectionheading, but still
+ % prevent a page break here.
+ \centerpenalty = \lastpenalty
+ \ifnum\centerpenalty>10000 \vskip\parskip \fi
+ \ifnum\centerpenalty>9999 \penalty\centerpenalty \fi
+ \line{\kern\leftskip #1\kern\rightskip}%
}
-\def\centerV#1{\line{\kern\leftskip #1\kern\rightskip}}
% @sp n outputs n lines of vertical space
-
+%
\parseargdef\sp{\vskip #1\baselineskip}
% @comment ...line which is ignored...
% @c is the same as @comment
% @ignore ... @end ignore is another way to write a comment
-
+%
\def\comment{\begingroup \catcode`\^^M=\other%
\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
\commentxxx}
{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-
+%
\let\c=\comment
% @paragraphindent NCHARS
@@ -1089,95 +1027,6 @@ where each line of input produces a line of output.}
}
-% @asis just yields its argument. Used with @table, for example.
-%
-\def\asis#1{#1}
-
-% @math outputs its argument in math mode.
-%
-% One complication: _ usually means subscripts, but it could also mean
-% an actual _ character, as in @math{@var{some_variable} + 1}. So make
-% _ active, and distinguish by seeing if the current family is \slfam,
-% which is what @var uses.
-{
- \catcode`\_ = \active
- \gdef\mathunderscore{%
- \catcode`\_=\active
- \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
- }
-}
-% Another complication: we want \\ (and @\) to output a \ character.
-% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
-% this is not advertised and we don't care. Texinfo does not
-% otherwise define @\.
-%
-% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
-\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
-%
-\def\math{%
- \tex
- \mathunderscore
- \let\\ = \mathbackslash
- \mathactive
- $\finishmath
-}
-\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
-
-% Some active characters (such as <) are spaced differently in math.
-% We have to reset their definitions in case the @math was an argument
-% to a command which sets the catcodes (such as @item or @section).
-%
-{
- \catcode`^ = \active
- \catcode`< = \active
- \catcode`> = \active
- \catcode`+ = \active
- \gdef\mathactive{%
- \let^ = \ptexhat
- \let< = \ptexless
- \let> = \ptexgtr
- \let+ = \ptexplus
- }
-}
-
-% @bullet and @minus need the same treatment as @math, just above.
-\def\bullet{$\ptexbullet$}
-\def\minus{$-$}
-
-% @dots{} outputs an ellipsis using the current font.
-% We do .5em per period so that it has the same spacing in the cm
-% typewriter fonts as three actual period characters; on the other hand,
-% in other typewriter fonts three periods are wider than 1.5em. So do
-% whichever is larger.
-%
-\def\dots{%
- \leavevmode
- \setbox0=\hbox{...}% get width of three periods
- \ifdim\wd0 > 1.5em
- \dimen0 = \wd0
- \else
- \dimen0 = 1.5em
- \fi
- \hbox to \dimen0{%
- \hskip 0pt plus.25fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus1fil
- .\hskip 0pt plus.5fil
- }%
-}
-
-% @enddots{} is an end-of-sentence ellipsis.
-%
-\def\enddots{%
- \dots
- \spacefactor=\endofsentencespacefactor
-}
-
-% @comma{} is so commas can be inserted into text without messing up
-% Texinfo's parsing.
-%
-\let\comma = ,
-
% @refill is a no-op.
\let\refill=\relax
@@ -1242,9 +1091,8 @@ where each line of input produces a line of output.}
\newif\ifpdfmakepagedest
% when pdftex is run in dvi mode, \pdfoutput is defined (so \pdfoutput=1
-% can be set). So we test for \relax and 0 as well as \undefined,
-% borrowed from ifpdf.sty.
-\ifx\pdfoutput\undefined
+% can be set). So we test for \relax and 0 as well as being undefined.
+\ifx\pdfoutput\thisisundefined
\else
\ifx\pdfoutput\relax
\else
@@ -1259,50 +1107,24 @@ where each line of input produces a line of output.}
% for display in the outlines, and in other places. Thus, we have to
% double any backslashes. Otherwise, a name like "\node" will be
% interpreted as a newline (\n), followed by o, d, e. Not good.
-% http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html
-% (and related messages, the final outcome is that it is up to the TeX
-% user to double the backslashes and otherwise make the string valid, so
-% that's what we do).
-
-% double active backslashes.
%
-{\catcode`\@=0 \catcode`\\=\active
- @gdef@activebackslashdouble{%
- @catcode`@\=@active
- @let\=@doublebackslash}
-}
-
-% To handle parens, we must adopt a different approach, since parens are
-% not active characters. hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens, with minor
-% changes for Texinfo. It is included here under the GPL by permission
-% from the author, Heiko Oberdiek.
-%
-% #1 is the tokens to replace.
-% #2 is the replacement.
-% #3 is the control sequence with the string.
-%
-\def\HyPsdSubst#1#2#3{%
- \def\HyPsdReplace##1#1##2\END{%
- ##1%
- \ifx\\##2\\%
- \else
- #2%
- \HyReturnAfterFi{%
- \HyPsdReplace##2\END
- }%
- \fi
- }%
- \xdef#3{\expandafter\HyPsdReplace#3#1\END}%
-}
-\long\def\HyReturnAfterFi#1\fi{\fi#1}
-
-% #1 is a control sequence in which to do the replacements.
-\def\backslashparens#1{%
- \xdef#1{#1}% redefine it as its expansion; the definition is simply
- % \lastnode when called from \setref -> \pdfmkdest.
- \HyPsdSubst{(}{\realbackslash(}{#1}%
- \HyPsdSubst{)}{\realbackslash)}{#1}%
+% See http://www.ntg.nl/pipermail/ntg-pdftex/2004-July/000654.html and
+% related messages. The final outcome is that it is up to the TeX user
+% to double the backslashes and otherwise make the string valid, so
+% that's what we do. pdftex 1.30.0 (ca.2005) introduced a primitive to
+% do this reliably, so we use it.
+
+% #1 is a control sequence in which to do the replacements,
+% which we \xdef.
+\def\txiescapepdf#1{%
+ \ifx\pdfescapestring\relax
+ % No primitive available; should we give a warning or log?
+ % Many times it won't matter.
+ \else
+ % The expandable \pdfescapestring primitive escapes parentheses,
+ % backslashes, and other special chars.
+ \xdef#1{\pdfescapestring{#1}}%
+ \fi
}
\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
@@ -1312,11 +1134,17 @@ output) for that.)}
\ifpdf
%
- % Color manipulation macros based on pdfcolor.tex.
- \def\cmykDarkRed{0.28 1 1 0.35}
- \def\cmykBlack{0 0 0 1}
+ % Color manipulation macros based on pdfcolor.tex,
+ % except using rgb instead of cmyk; the latter is said to render as a
+ % very dark gray on-screen and a very dark halftone in print, instead
+ % of actual black.
+ \def\rgbDarkRed{0.50 0.09 0.12}
+ \def\rgbBlack{0 0 0}
+ %
+ % k sets the color for filling (usual text, etc.);
+ % K sets the color for stroking (thin rules, e.g., normal _'s).
+ \def\pdfsetcolor#1{\pdfliteral{#1 rg #1 RG}}
%
- \def\pdfsetcolor#1{\pdfliteral{#1 k}}
% Set color, and create a mark which defines \thiscolor accordingly,
% so that \makeheadline knows which color to restore.
\def\setcolor#1{%
@@ -1325,7 +1153,7 @@ output) for that.)}
\pdfsetcolor{#1}%
}
%
- \def\maincolor{\cmykBlack}
+ \def\maincolor{\rgbBlack}
\pdfsetcolor{\maincolor}
\edef\thiscolor{\maincolor}
\def\lastcolordefs{}
@@ -1355,42 +1183,47 @@ output) for that.)}
%
% #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
\def\dopdfimage#1#2#3{%
- \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
- \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+ \def\pdfimagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
+ \def\pdfimageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
%
- % pdftex (and the PDF format) support .png, .jpg, .pdf (among
- % others). Let's try in that order.
+ % pdftex (and the PDF format) support .pdf, .png, .jpg (among
+ % others). Let's try in that order, PDF first since if
+ % someone has a scalable image, presumably better to use that than a
+ % bitmap.
\let\pdfimgext=\empty
\begingroup
- \openin 1 #1.png \ifeof 1
- \openin 1 #1.jpg \ifeof 1
- \openin 1 #1.jpeg \ifeof 1
- \openin 1 #1.JPG \ifeof 1
- \openin 1 #1.pdf \ifeof 1
- \errhelp = \nopdfimagehelp
- \errmessage{Could not find image file #1 for pdf}%
- \else \gdef\pdfimgext{pdf}%
+ \openin 1 #1.pdf \ifeof 1
+ \openin 1 #1.PDF \ifeof 1
+ \openin 1 #1.png \ifeof 1
+ \openin 1 #1.jpg \ifeof 1
+ \openin 1 #1.jpeg \ifeof 1
+ \openin 1 #1.JPG \ifeof 1
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \else \gdef\pdfimgext{JPG}%
+ \fi
+ \else \gdef\pdfimgext{jpeg}%
\fi
- \else \gdef\pdfimgext{JPG}%
+ \else \gdef\pdfimgext{jpg}%
\fi
- \else \gdef\pdfimgext{jpeg}%
+ \else \gdef\pdfimgext{png}%
\fi
- \else \gdef\pdfimgext{jpg}%
+ \else \gdef\pdfimgext{PDF}%
\fi
- \else \gdef\pdfimgext{png}%
+ \else \gdef\pdfimgext{pdf}%
\fi
\closein 1
\endgroup
%
- % without \immediate, pdftex seg faults when the same image is
+ % without \immediate, ancient pdftex seg faults when the same image is
% included twice. (Version 3.14159-pre-1.0-unofficial-20010704.)
\ifnum\pdftexversion < 14
\immediate\pdfimage
\else
\immediate\pdfximage
\fi
- \ifdim \wd0 >0pt width \imagewidth \fi
- \ifdim \wd2 >0pt height \imageheight \fi
+ \ifdim \wd0 >0pt width \pdfimagewidth \fi
+ \ifdim \wd2 >0pt height \pdfimageheight \fi
\ifnum\pdftexversion<13
#1.\pdfimgext
\else
@@ -1405,10 +1238,9 @@ output) for that.)}
% such as \, aren't expanded when present in a section title.
\indexnofonts
\turnoffactive
- \activebackslashdouble
\makevalueexpandable
\def\pdfdestname{#1}%
- \backslashparens\pdfdestname
+ \txiescapepdf\pdfdestname
\safewhatsit{\pdfdest name{\pdfdestname} xyz}%
}}
%
@@ -1417,8 +1249,8 @@ output) for that.)}
%
% by default, use a color that is dark enough to print on paper as
% nearly black, but still distinguishable for online viewing.
- \def\urlcolor{\cmykDarkRed}
- \def\linkcolor{\cmykDarkRed}
+ \def\urlcolor{\rgbDarkRed}
+ \def\linkcolor{\rgbDarkRed}
\def\endlink{\setcolor{\maincolor}\pdfendlink}
%
% Adding outlines to PDF; macros for calculating structure of outlines
@@ -1440,29 +1272,24 @@ output) for that.)}
% page number. We could generate a destination for the section
% text in the case where a section has no node, but it doesn't
% seem worth the trouble, since most documents are normally structured.
- \def\pdfoutlinedest{#3}%
+ \edef\pdfoutlinedest{#3}%
\ifx\pdfoutlinedest\empty
\def\pdfoutlinedest{#4}%
\else
- % Doubled backslashes in the name.
- {\activebackslashdouble \xdef\pdfoutlinedest{#3}%
- \backslashparens\pdfoutlinedest}%
+ \txiescapepdf\pdfoutlinedest
\fi
%
- % Also double the backslashes in the display string.
- {\activebackslashdouble \xdef\pdfoutlinetext{#1}%
- \backslashparens\pdfoutlinetext}%
+ % Also escape PDF chars in the display string.
+ \edef\pdfoutlinetext{#1}%
+ \txiescapepdf\pdfoutlinetext
%
\pdfoutline goto name{\pdfmkpgn{\pdfoutlinedest}}#2{\pdfoutlinetext}%
}
%
\def\pdfmakeoutlines{%
\begingroup
- % Thanh's hack / proper braces in bookmarks
- \edef\mylbrace{\iftrue \string{\else}\fi}\let\{=\mylbrace
- \edef\myrbrace{\iffalse{\else\string}\fi}\let\}=\myrbrace
- %
% Read toc silently, to get counts of subentries for \pdfoutline.
+ \def\partentry##1##2##3##4{}% ignore parts in the outlines
\def\numchapentry##1##2##3##4{%
\def\thischapnum{##2}%
\def\thissecnum{0}%
@@ -1516,25 +1343,41 @@ output) for that.)}
% Latin 2 (0xea) gets translated to a | character. Info from
% Staszek Wawrykiewicz, 19 Jan 2004 04:09:24 +0100.
%
- % xx to do this right, we have to translate 8-bit characters to
- % their "best" equivalent, based on the @documentencoding. Right
- % now, I guess we'll just let the pdf reader have its way.
+ % TODO this right, we have to translate 8-bit characters to
+ % their "best" equivalent, based on the @documentencoding. Too
+ % much work for too little return. Just use the ASCII equivalents
+ % we use for the index sort strings.
+ %
\indexnofonts
\setupdatafile
+ % We can have normal brace characters in the PDF outlines, unlike
+ % Texinfo index files. So set that up.
+ \def\{{\lbracecharliteral}%
+ \def\}{\rbracecharliteral}%
\catcode`\\=\active \otherbackslash
\input \tocreadfilename
\endgroup
}
+ {\catcode`[=1 \catcode`]=2
+ \catcode`{=\other \catcode`}=\other
+ \gdef\lbracecharliteral[{]%
+ \gdef\rbracecharliteral[}]%
+ ]
%
\def\skipspaces#1{\def\PP{#1}\def\D{|}%
\ifx\PP\D\let\nextsp\relax
\else\let\nextsp\skipspaces
- \ifx\p\space\else\addtokens{\filename}{\PP}%
- \advance\filenamelength by 1
- \fi
+ \addtokens{\filename}{\PP}%
+ \advance\filenamelength by 1
\fi
\nextsp}
- \def\getfilename#1{\filenamelength=0\expandafter\skipspaces#1|\relax}
+ \def\getfilename#1{%
+ \filenamelength=0
+ % If we don't expand the argument now, \skipspaces will get
+ % snagged on things like "@value{foo}".
+ \edef\temp{#1}%
+ \expandafter\skipspaces\temp|\relax
+ }
\ifnum\pdftexversion < 14
\let \startlink \pdfannotlink
\else
@@ -1547,11 +1390,15 @@ output) for that.)}
% tried to figure out what each command should do in the context
% of @url. for now, just make @/ a no-op, that's the only one
% people have actually reported a problem with.
- %
+ %
\normalturnoffactive
\def\@{@}%
\let\/=\empty
\makevalueexpandable
+ % do we want to go so far as to use \indexnofonts instead of just
+ % special-casing \var here?
+ \def\var##1{##1}%
+ %
\leavevmode\setcolor{\urlcolor}%
\startlink attr{/Border [0 0 0]}%
user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
@@ -1582,6 +1429,7 @@ output) for that.)}
\setcolor{\linkcolor}#1\endlink}
\def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
\else
+ % non-pdf mode
\let\pdfmkdest = \gobble
\let\pdfurl = \gobble
\let\endlink = \relax
@@ -1612,6 +1460,10 @@ output) for that.)}
\def\bf{\fam=\bffam \setfontstyle{bf}}\def\bfstylename{bf}
\def\tt{\fam=\ttfam \setfontstyle{tt}}
+% Unfortunately, we have to override this for titles and the like, since
+% in those cases "rm" is bold. Sigh.
+\def\rmisbold{\rm\def\curfontstyle{bf}}
+
% Texinfo sort of supports the sans serif font style, which plain TeX does not.
% So we set up a \sf.
\newfam\sffam
@@ -1622,9 +1474,6 @@ output) for that.)}
\def\ttsl{\setfontstyle{ttsl}}
-% Default leading.
-\newdimen\textleading \textleading = 13.2pt
-
% Set the baselineskip to #1, and the lineskip and strut size
% correspondingly. There is no deep meaning behind these magic numbers
% used as factors; they just match (closely enough) what Knuth defined.
@@ -1636,6 +1485,7 @@ output) for that.)}
% can get a sort of poor man's double spacing by redefining this.
\def\baselinefactor{1}
%
+\newdimen\textleading
\def\setleading#1{%
\dimen0 = #1\relax
\normalbaselineskip = \baselinefactor\dimen0
@@ -1657,7 +1507,7 @@ output) for that.)}
% if we are producing pdf, and we have \pdffontattr, then define cmaps.
% (\pdffontattr was introduced many years ago, but people still run
% older pdftex's; it's easy to conditionalize, so we do.)
-\ifpdf \ifx\pdffontattr\undefined \else
+\ifpdf \ifx\pdffontattr\thisisundefined \else
\begingroup
\catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
\catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
@@ -1908,28 +1758,34 @@ end
\fi\fi
-% Set the font macro #1 to the font named #2, adding on the
-% specified font prefix (normally `cm').
+% Set the font macro #1 to the font named \fontprefix#2.
% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
-% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
-% empty to omit).
+% encoding (only OT1, OT1IT and OT1TT are allowed, or empty to omit).
+% Example:
+% #1 = \textrm
+% #2 = \rmshape
+% #3 = 10
+% #4 = \mainmagstep
+% #5 = OT1
+%
\def\setfont#1#2#3#4#5{%
\font#1=\fontprefix#2#3 scaled #4
\csname cmap#5\endcsname#1%
}
% This is what gets called when #5 of \setfont is empty.
\let\cmap\gobble
-% emacs-page end of cmaps
+%
+% (end of cmaps)
% Use cm as the default font prefix.
% To specify the font prefix, you must define \fontprefix
% before you read in texinfo.tex.
-\ifx\fontprefix\undefined
+\ifx\fontprefix\thisisundefined
\def\fontprefix{cm}
\fi
% Support font families that don't use the same naming scheme as CM.
\def\rmshape{r}
-\def\rmbshape{bx} %where the normal face is bold
+\def\rmbshape{bx} % where the normal face is bold
\def\bfshape{b}
\def\bxshape{bx}
\def\ttshape{tt}
@@ -1944,9 +1800,8 @@ end
\def\scshape{csc}
\def\scbshape{csc}
-% Definitions for a main text size of 11pt. This is the default in
-% Texinfo.
-%
+% Definitions for a main text size of 11pt. (The default in Texinfo.)
+%
\def\definetextfontsizexi{%
% Text fonts (11.2pt, magstep1).
\def\textnominalsize{11pt}
@@ -2009,8 +1864,6 @@ end
\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
\def\titleecsize{2074}
% Chapter (and unnumbered) fonts (17.28pt).
@@ -2069,17 +1922,17 @@ end
\font\reducedsy=cmsy10
\def\reducedecsize{1000}
-% reset the current fonts
-\textfonts
+\textleading = 13.2pt % line spacing for 11pt CM
+\textfonts % reset the current fonts
\rm
-} % end of 11pt text font size definitions
+} % end of 11pt text font size definitions, \definetextfontsizexi
% Definitions to make the main text be 10pt Computer Modern, with
% section, chapter, etc., sizes following suit. This is for the GNU
% Press printing of the Emacs 22 manual. Maybe other manuals in the
% future. Used with @smallbook, which sets the leading to 12pt.
-%
+%
\def\definetextfontsizex{%
% Text fonts (10pt).
\def\textnominalsize{10pt}
@@ -2142,8 +1995,6 @@ end
\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
\font\titlei=cmmi12 scaled \magstep3
\font\titlesy=cmsy10 scaled \magstep4
-\def\authorrm{\secrm}
-\def\authortt{\sectt}
\def\titleecsize{2074}
% Chapter fonts (14.4pt).
@@ -2170,7 +2021,7 @@ end
\setfont\secsf\sfbshape{12}{1000}{OT1}
\let\secbf\secrm
\setfont\secsc\scbshape{10}{\magstep1}{OT1}
-\font\seci=cmmi12
+\font\seci=cmmi12
\font\secsy=cmsy10 scaled \magstep1
\def\sececsize{1200}
@@ -2202,29 +2053,28 @@ end
\font\reducedsy=cmsy9
\def\reducedecsize{0900}
-% reduce space between paragraphs
-\divide\parskip by 2
-
-% reset the current fonts
-\textfonts
+\divide\parskip by 2 % reduce space between paragraphs
+\textleading = 12pt % line spacing for 10pt CM
+\textfonts % reset the current fonts
\rm
-} % end of 10pt text font size definitions
+} % end of 10pt text font size definitions, \definetextfontsizex
% We provide the user-level command
% @fonttextsize 10
% (or 11) to redefine the text font size. pt is assumed.
-%
-\def\xword{10}
+%
\def\xiword{11}
+\def\xword{10}
+\def\xwordpt{10pt}
%
\parseargdef\fonttextsize{%
\def\textsizearg{#1}%
- \wlog{doing @fonttextsize \textsizearg}%
+ %\wlog{doing @fonttextsize \textsizearg}%
%
% Set \globaldefs so that documents can use this inside @tex, since
% makeinfo 4.8 does not support it, but we need it nonetheless.
- %
+ %
\begingroup \globaldefs=1
\ifx\textsizearg\xword \definetextfontsizex
\else \ifx\textsizearg\xiword \definetextfontsizexi
@@ -2274,8 +2124,8 @@ end
\let\tenttsl=\titlettsl
\def\curfontsize{title}%
\def\lsize{chap}\def\lllsize{subsec}%
- \resetmathfonts \setleading{25pt}}
-\def\titlefont#1{{\titlefonts\rm #1}}
+ \resetmathfonts \setleading{27pt}}
+\def\titlefont#1{{\titlefonts\rmisbold #1}}
\def\chapfonts{%
\let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl
\let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc
@@ -2326,6 +2176,16 @@ end
\def\lsize{smaller}\def\lllsize{smaller}%
\resetmathfonts \setleading{9.5pt}}
+% Fonts for short table of contents.
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+
+% Define these just so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
% Set the fonts to use with the @small... environments.
\let\smallexamplefonts = \smallfonts
@@ -2339,53 +2199,215 @@ end
%
% By the way, for comparison, here's what fits with @example (10pt):
% 8.5x11=71 smallbook=60 a4=75 a5=58
-%
-% I wish the USA used A4 paper.
% --karl, 24jan03.
-
% Set up the default fonts, so we can use them for creating boxes.
%
\definetextfontsizexi
-% Define these so they can be easily changed for other fonts.
-\def\angleleft{$\langle$}
-\def\angleright{$\rangle$}
+
+\message{markup,}
+
+% Check if we are currently using a typewriter font. Since all the
+% Computer Modern typewriter fonts have zero interword stretch (and
+% shrink), and it is reasonable to expect all typewriter fonts to have
+% this property, we can check that font parameter.
+%
+\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+
+% Markup style infrastructure. \defmarkupstylesetup\INITMACRO will
+% define and register \INITMACRO to be called on markup style changes.
+% \INITMACRO can check \currentmarkupstyle for the innermost
+% style and the set of \ifmarkupSTYLE switches for all styles
+% currently in effect.
+\newif\ifmarkupvar
+\newif\ifmarkupsamp
+\newif\ifmarkupkey
+%\newif\ifmarkupfile % @file == @samp.
+%\newif\ifmarkupoption % @option == @samp.
+\newif\ifmarkupcode
+\newif\ifmarkupkbd
+%\newif\ifmarkupenv % @env == @code.
+%\newif\ifmarkupcommand % @command == @code.
+\newif\ifmarkuptex % @tex (and part of @math, for now).
+\newif\ifmarkupexample
+\newif\ifmarkupverb
+\newif\ifmarkupverbatim
+
+\let\currentmarkupstyle\empty
+
+\def\setupmarkupstyle#1{%
+ \csname markup#1true\endcsname
+ \def\currentmarkupstyle{#1}%
+ \markupstylesetup
+}
+
+\let\markupstylesetup\empty
+
+\def\defmarkupstylesetup#1{%
+ \expandafter\def\expandafter\markupstylesetup
+ \expandafter{\markupstylesetup #1}%
+ \def#1%
+}
+
+% Markup style setup for left and right quotes.
+\defmarkupstylesetup\markupsetuplq{%
+ \expandafter\let\expandafter \temp
+ \csname markupsetuplq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuplqdefault \else \temp \fi
+}
+
+\defmarkupstylesetup\markupsetuprq{%
+ \expandafter\let\expandafter \temp
+ \csname markupsetuprq\currentmarkupstyle\endcsname
+ \ifx\temp\relax \markupsetuprqdefault \else \temp \fi
+}
+
+{
+\catcode`\'=\active
+\catcode`\`=\active
+
+\gdef\markupsetuplqdefault{\let`\lq}
+\gdef\markupsetuprqdefault{\let'\rq}
+
+\gdef\markupsetcodequoteleft{\let`\codequoteleft}
+\gdef\markupsetcodequoteright{\let'\codequoteright}
+
+\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
+}
+
+\let\markupsetuplqcode \markupsetcodequoteleft
+\let\markupsetuprqcode \markupsetcodequoteright
+%
+\let\markupsetuplqexample \markupsetcodequoteleft
+\let\markupsetuprqexample \markupsetcodequoteright
+%
+\let\markupsetuplqsamp \markupsetcodequoteleft
+\let\markupsetuprqsamp \markupsetcodequoteright
+%
+\let\markupsetuplqverb \markupsetcodequoteleft
+\let\markupsetuprqverb \markupsetcodequoteright
+%
+\let\markupsetuplqverbatim \markupsetcodequoteleft
+\let\markupsetuprqverbatim \markupsetcodequoteright
+
+\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
+
+% Allow an option to not use regular directed right quote/apostrophe
+% (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
+% The undirected quote is ugly, so don't make it the default, but it
+% works for pasting with more pdf viewers (at least evince), the
+% lilypond developers report. xpdf does work with the regular 0x27.
+%
+\def\codequoteright{%
+ \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+ \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+ '%
+ \else \char'15 \fi
+ \else \char'15 \fi
+}
+%
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
+%
+\def\codequoteleft{%
+ \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+ \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+ % [Knuth] pp. 380,381,391
+ % \relax disables Spanish ligatures ?` and !` of \tt font.
+ \relax`%
+ \else \char'22 \fi
+ \else \char'22 \fi
+}
+
+% Commands to set the quote options.
+%
+\parseargdef\codequoteundirected{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequoteundirected\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequoteundirected value `\temp', must be on|off}%
+ \fi\fi
+}
+%
+\parseargdef\codequotebacktick{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = t%
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxicodequotebacktick\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @codequotebacktick value `\temp', must be on|off}%
+ \fi\fi
+}
+
+% [Knuth] pp. 380,381,391, disable Spanish ligatures ?` and !` of \tt font.
+\def\noligaturesquoteleft{\relax\lq}
% Count depth in font-changes, for error checks
\newcount\fontdepth \fontdepth=0
-% Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}{OT1}
-\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1} % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}{OT1}
-\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
+% Font commands.
-%% Add scribe-like font environments, plus @l for inline lisp (usually sans
-%% serif) and @ii for TeX italic
+% #1 is the font command (\sl or \it), #2 is the text to slant.
+% If we are in a monospaced environment, however, 1) always use \ttsl,
+% and 2) do not add an italic correction.
+\def\dosmartslant#1#2{%
+ \ifusingtt
+ {{\ttsl #2}\let\next=\relax}%
+ {\def\next{{#1#2}\futurelet\next\smartitaliccorrection}}%
+ \next
+}
+\def\smartslanted{\dosmartslant\sl}
+\def\smartitalic{\dosmartslant\it}
-% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
-% unless the following character is such as not to need one.
-\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
- \ptexslash\fi\fi\fi}
-\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
-\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+% Output an italic correction unless \next (presumed to be the following
+% character) is such as not to need one.
+\def\smartitaliccorrection{%
+ \ifx\next,%
+ \else\ifx\next-%
+ \else\ifx\next.%
+ \else\ptexslash
+ \fi\fi\fi
+ \aftersmartic
+}
-% like \smartslanted except unconditionally uses \ttsl.
+% like \smartslanted except unconditionally uses \ttsl, and no ic.
% @var is set to this for defun arguments.
-\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+\def\ttslanted#1{{\ttsl #1}}
-% like \smartslanted except unconditionally use \sl. We never want
+% @cite is like \smartslanted except unconditionally use \sl. We never want
% ttsl for book titles, do we?
-\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+\def\cite#1{{\sl #1}\futurelet\next\smartitaliccorrection}
+
+\def\aftersmartic{}
+\def\var#1{%
+ \let\saveaftersmartic = \aftersmartic
+ \def\aftersmartic{\null\let\aftersmartic=\saveaftersmartic}%
+ \smartslanted{#1}%
+}
\let\i=\smartitalic
\let\slanted=\smartslanted
-\let\var=\smartslanted
\let\dfn=\smartslanted
\let\emph=\smartitalic
-% @b, explicit bold.
+% Explicit font changes: @r, @sc, undocumented @ii.
+\def\r#1{{\rm #1}} % roman font
+\def\sc#1{{\smallcaps#1}} % smallcaps font
+\def\ii#1{{\it #1}} % italic font
+
+% @b, explicit bold. Also @strong.
\def\b#1{{\bf #1}}
\let\strong=\b
@@ -2417,22 +2439,35 @@ end
\catcode`@=\other
\def\endofsentencespacefactor{3000}% default
+% @t, explicit typewriter.
\def\t#1{%
{\tt \rawbackslash \plainfrenchspacing #1}%
\null
}
-\def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}{OT1}
-\font\keysy=cmsy9
-\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
- \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
- \vbox{\hrule\kern-0.4pt
- \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
- \kern-0.4pt\hrule}%
- \kern-.06em\raise0.4pt\hbox{\angleright}}}}
-\def\key #1{{\nohyphenation \uppercase{#1}}\null}
-% The old definition, with no lozenge:
-%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+
+% @samp.
+\def\samp#1{{\setupmarkupstyle{samp}\lq\tclose{#1}\rq\null}}
+
+% definition of @key that produces a lozenge. Doesn't adjust to text size.
+%\setfont\keyrm\rmshape{8}{1000}{OT1}
+%\font\keysy=cmsy9
+%\def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
+% \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
+% \vbox{\hrule\kern-0.4pt
+% \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
+% \kern-0.4pt\hrule}%
+% \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+
+% definition of @key with no lozenge. If the current font is already
+% monospace, don't change it; that way, we respect @kbdinputstyle. But
+% if it isn't monospace, then use \tt.
+%
+\def\key#1{{\setupmarkupstyle{key}%
+ \nohyphenation
+ \ifmonospace\else\tt\fi
+ #1}\null}
+
+% ctrl is no longer a Texinfo command.
\def\ctrl #1{{\tt \rawbackslash \hat}#1}
% @file, @option are the same as @samp.
@@ -2459,7 +2494,7 @@ end
\plainfrenchspacing
#1%
}%
- \null
+ \null % reset spacefactor to 1000
}
% We *must* turn on hyphenation at `-' and `_' in @code.
@@ -2474,11 +2509,11 @@ end
{
\catcode`\-=\active \catcode`\_=\active
\catcode`\'=\active \catcode`\`=\active
+ \global\let'=\rq \global\let`=\lq % default definitions
%
\global\def\code{\begingroup
- \catcode\rquoteChar=\active \catcode\lquoteChar=\active
- \let'\codequoteright \let`\codequoteleft
- %
+ \setupmarkupstyle{code}%
+ % The following should really be moved into \setupmarkupstyle handlers.
\catcode\dashChar=\active \catcode\underChar=\active
\ifallowcodebreaks
\let-\codedash
@@ -2491,6 +2526,8 @@ end
}
}
+\def\codex #1{\tclose{#1}\endgroup}
+
\def\realdash{-}
\def\codedash{-\discretionary{}{}{}}
\def\codeunder{%
@@ -2504,13 +2541,12 @@ end
\discretionary{}{}{}}%
{\_}%
}
-\def\codex #1{\tclose{#1}\endgroup}
% An additional complication: the above will allow breaks after, e.g.,
% each of the four underscores in __typeof__. This is undesirable in
% some manuals, especially if they don't have long identifiers in
% general. @allowcodebreaks provides a way to control this.
-%
+%
\newif\ifallowcodebreaks \allowcodebreakstrue
\def\keywordtrue{true}
@@ -2524,62 +2560,18 @@ end
\allowcodebreaksfalse
\else
\errhelp = \EMsimple
- \errmessage{Unknown @allowcodebreaks option `\txiarg'}%
+ \errmessage{Unknown @allowcodebreaks option `\txiarg', must be true|false}%
\fi\fi
}
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-
-% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
-% `example' (@kbd uses ttsl only inside of @example and friends),
-% or `code' (@kbd uses normal tty font always).
-\parseargdef\kbdinputstyle{%
- \def\txiarg{#1}%
- \ifx\txiarg\worddistinct
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
- \else\ifx\txiarg\wordexample
- \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
- \else\ifx\txiarg\wordcode
- \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
- \else
- \errhelp = \EMsimple
- \errmessage{Unknown @kbdinputstyle option `\txiarg'}%
- \fi\fi\fi
-}
-\def\worddistinct{distinct}
-\def\wordexample{example}
-\def\wordcode{code}
-
-% Default is `distinct.'
-\kbdinputstyle distinct
-
-\def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\look}}\fi
-\else{\tclose{\kbdfont\look}}\fi}
-
-% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
-\let\indicateurl=\code
-\let\env=\code
-\let\command=\code
-
-% @clicksequence{File @click{} Open ...}
-\def\clicksequence#1{\begingroup #1\endgroup}
-
-% @clickstyle @arrow (by default)
-\parseargdef\clickstyle{\def\click{#1}}
-\def\click{\arrow}
-
% @uref (abbreviation for `urlref') takes an optional (comma-separated)
% second argument specifying the text to display and an optional third
% arg as text to display instead of (rather than in addition to) the url
-% itself. First (mandatory) arg is the url. Perhaps eventually put in
-% a hypertex \special here.
-%
-\def\uref#1{\douref #1,,,\finish}
-\def\douref#1,#2,#3,#4\finish{\begingroup
+% itself. First (mandatory) arg is the url.
+% (This \urefnobreak definition isn't used now, leaving it for a while
+% for comparison.)
+\def\urefnobreak#1{\dourefnobreak #1,,,\finish}
+\def\dourefnobreak#1,#2,#3,#4\finish{\begingroup
\unsepspaces
\pdfurl{#1}%
\setbox0 = \hbox{\ignorespaces #3}%
@@ -2600,6 +2592,103 @@ end
\endlink
\endgroup}
+% This \urefbreak definition is the active one.
+\def\urefbreak{\begingroup \urefcatcodes \dourefbreak}
+\let\uref=\urefbreak
+\def\dourefbreak#1{\urefbreakfinish #1,,,\finish}
+\def\urefbreakfinish#1,#2,#3,#4\finish{% doesn't work in @example
+ \unsepspaces
+ \pdfurl{#1}%
+ \setbox0 = \hbox{\ignorespaces #3}%
+ \ifdim\wd0 > 0pt
+ \unhbox0 % third arg given, show only that
+ \else
+ \setbox0 = \hbox{\ignorespaces #2}%
+ \ifdim\wd0 > 0pt
+ \ifpdf
+ \unhbox0 % PDF: 2nd arg given, show only it
+ \else
+ \unhbox0\ (\urefcode{#1})% DVI: 2nd arg given, show both it and url
+ \fi
+ \else
+ \urefcode{#1}% only url given, so show it
+ \fi
+ \fi
+ \endlink
+\endgroup}
+
+% Allow line breaks around only a few characters (only).
+\def\urefcatcodes{%
+ \catcode\ampChar=\active \catcode\dotChar=\active
+ \catcode\hashChar=\active \catcode\questChar=\active
+ \catcode\slashChar=\active
+}
+{
+ \urefcatcodes
+ %
+ \global\def\urefcode{\begingroup
+ \setupmarkupstyle{code}%
+ \urefcatcodes
+ \let&\urefcodeamp
+ \let.\urefcodedot
+ \let#\urefcodehash
+ \let?\urefcodequest
+ \let/\urefcodeslash
+ \codex
+ }
+ %
+ % By default, they are just regular characters.
+ \global\def&{\normalamp}
+ \global\def.{\normaldot}
+ \global\def#{\normalhash}
+ \global\def?{\normalquest}
+ \global\def/{\normalslash}
+}
+
+% we put a little stretch before and after the breakable chars, to help
+% line breaking of long url's. The unequal skips make look better in
+% cmtt at least, especially for dots.
+\def\urefprestretch{\urefprebreak \hskip0pt plus.13em }
+\def\urefpoststretch{\urefpostbreak \hskip0pt plus.1em }
+%
+\def\urefcodeamp{\urefprestretch \&\urefpoststretch}
+\def\urefcodedot{\urefprestretch .\urefpoststretch}
+\def\urefcodehash{\urefprestretch \#\urefpoststretch}
+\def\urefcodequest{\urefprestretch ?\urefpoststretch}
+\def\urefcodeslash{\futurelet\next\urefcodeslashfinish}
+{
+ \catcode`\/=\active
+ \global\def\urefcodeslashfinish{%
+ \urefprestretch \slashChar
+ % Allow line break only after the final / in a sequence of
+ % slashes, to avoid line break between the slashes in http://.
+ \ifx\next/\else \urefpoststretch \fi
+ }
+}
+
+% One more complication: by default we'll break after the special
+% characters, but some people like to break before the special chars, so
+% allow that. Also allow no breaking at all, for manual control.
+%
+\parseargdef\urefbreakstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\wordnone
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordbefore
+ \def\urefprebreak{\allowbreak}\def\urefpostbreak{\nobreak}
+ \else\ifx\txiarg\wordafter
+ \def\urefprebreak{\nobreak}\def\urefpostbreak{\allowbreak}
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @urefbreakstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\wordafter{after}
+\def\wordbefore{before}
+\def\wordnone{none}
+
+\urefbreakstyle after
+
% @url synonym for @uref, since that's how everyone uses it.
%
\let\url=\uref
@@ -2621,34 +2710,65 @@ end
\let\email=\uref
\fi
-% Check if we are currently using a typewriter font. Since all the
-% Computer Modern typewriter fonts have zero interword stretch (and
-% shrink), and it is reasonable to expect all typewriter fonts to have
-% this property, we can check that font parameter.
-%
-\def\ifmonospace{\ifdim\fontdimen3\font=0pt }
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
+
+% @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
+% `example' (@kbd uses ttsl only inside of @example and friends),
+% or `code' (@kbd uses normal tty font always).
+\parseargdef\kbdinputstyle{%
+ \def\txiarg{#1}%
+ \ifx\txiarg\worddistinct
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\ttsl}%
+ \else\ifx\txiarg\wordexample
+ \gdef\kbdexamplefont{\ttsl}\gdef\kbdfont{\tt}%
+ \else\ifx\txiarg\wordcode
+ \gdef\kbdexamplefont{\tt}\gdef\kbdfont{\tt}%
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @kbdinputstyle setting `\txiarg'}%
+ \fi\fi\fi
+}
+\def\worddistinct{distinct}
+\def\wordexample{example}
+\def\wordcode{code}
+
+% Default is `distinct'.
+\kbdinputstyle distinct
+
+\def\xkey{\key}
+\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
+\ifx\one\xkey\ifx\threex\three \key{#2}%
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @clicksequence{File @click{} Open ...}
+\def\clicksequence#1{\begingroup #1\endgroup}
+
+% @clickstyle @arrow (by default)
+\parseargdef\clickstyle{\def\click{#1}}
+\def\click{\arrow}
% Typeset a dimension, e.g., `in' or `pt'. The only reason for the
% argument is to make the input look right: @dmn{pt} instead of @dmn{}pt.
%
\def\dmn#1{\thinspace #1}
-\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
-
% @l was never documented to mean ``switch to the Lisp font'',
% and it is not used as such in any manual I can find. We need it for
% Polish suppressed-l. --karl, 22sep96.
%\def\l#1{{\li #1}\null}
-% Explicit font changes: @r, @sc, undocumented @ii.
-\def\r#1{{\rm #1}} % roman font
-\def\sc#1{{\smallcaps#1}} % smallcaps font
-\def\ii#1{{\it #1}} % italic font
-
% @acronym for "FBI", "NATO", and the like.
% We print this one point size smaller, since it's intended for
% all-uppercase.
-%
+%
\def\acronym#1{\doacronym #1,,\finish}
\def\doacronym#1,#2,#3\finish{%
{\selectfonts\lsize #1}%
@@ -2656,11 +2776,12 @@ end
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
}
% @abbr for "Comput. J." and the like.
% No font change, but don't do end-of-sentence spacing.
-%
+%
\def\abbr#1{\doabbr #1,,\finish}
\def\doabbr#1,#2,#3\finish{%
{\plainfrenchspacing #1}%
@@ -2668,7 +2789,254 @@ end
\ifx\temp\empty \else
\space ({\unsepspaces \ignorespaces \temp \unskip})%
\fi
+ \null % reset \spacefactor=1000
+}
+
+% @asis just yields its argument. Used with @table, for example.
+%
+\def\asis#1{#1}
+
+% @math outputs its argument in math mode.
+%
+% One complication: _ usually means subscripts, but it could also mean
+% an actual _ character, as in @math{@var{some_variable} + 1}. So make
+% _ active, and distinguish by seeing if the current family is \slfam,
+% which is what @var uses.
+{
+ \catcode`\_ = \active
+ \gdef\mathunderscore{%
+ \catcode`\_=\active
+ \def_{\ifnum\fam=\slfam \_\else\sb\fi}%
+ }
+}
+% Another complication: we want \\ (and @\) to output a math (or tt) \.
+% FYI, plain.tex uses \\ as a temporary control sequence (for no
+% particular reason), but this is not advertised and we don't care.
+%
+% The \mathchar is class=0=ordinary, family=7=ttfam, position=5C=\.
+\def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
+%
+\def\math{%
+ \tex
+ \mathunderscore
+ \let\\ = \mathbackslash
+ \mathactive
+ % make the texinfo accent commands work in math mode
+ \let\"=\ddot
+ \let\'=\acute
+ \let\==\bar
+ \let\^=\hat
+ \let\`=\grave
+ \let\u=\breve
+ \let\v=\check
+ \let\~=\tilde
+ \let\dotaccent=\dot
+ $\finishmath
}
+\def\finishmath#1{#1$\endgroup} % Close the group opened by \tex.
+
+% Some active characters (such as <) are spaced differently in math.
+% We have to reset their definitions in case the @math was an argument
+% to a command which sets the catcodes (such as @item or @section).
+%
+{
+ \catcode`^ = \active
+ \catcode`< = \active
+ \catcode`> = \active
+ \catcode`+ = \active
+ \catcode`' = \active
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ \let' = \ptexquoteright
+ }
+}
+
+% @inlinefmt{FMTNAME,PROCESSED-TEXT} and @inlineraw{FMTNAME,RAW-TEXT}.
+% Ignore unless FMTNAME == tex; then it is like @iftex and @tex,
+% except specified as a normal braced arg, so no newlines to worry about.
+%
+\def\outfmtnametex{tex}
+%
+\long\def\inlinefmt#1{\doinlinefmt #1,\finish}
+\long\def\doinlinefmt#1,#2,\finish{%
+ \def\inlinefmtname{#1}%
+ \ifx\inlinefmtname\outfmtnametex \ignorespaces #2\fi
+}
+% For raw, must switch into @tex before parsing the argument, to avoid
+% setting catcodes prematurely. Doing it this way means that, for
+% example, @inlineraw{html, foo{bar} gets a parse error instead of being
+% ignored. But this isn't important because if people want a literal
+% *right* brace they would have to use a command anyway, so they may as
+% well use a command to get a left brace too. We could re-use the
+% delimiter character idea from \verb, but it seems like overkill.
+%
+\long\def\inlineraw{\tex \doinlineraw}
+\long\def\doinlineraw#1{\doinlinerawtwo #1,\finish}
+\def\doinlinerawtwo#1,#2,\finish{%
+ \def\inlinerawname{#1}%
+ \ifx\inlinerawname\outfmtnametex \ignorespaces #2\fi
+ \endgroup % close group opened by \tex.
+}
+
+
+\message{glyphs,}
+% and logos.
+
+% @@ prints an @, as does @atchar{}.
+\def\@{\char64 }
+\let\atchar=\@
+
+% @{ @} @lbracechar{} @rbracechar{} all generate brace characters.
+% Unless we're in typewriter, use \ecfont because the CM text fonts do
+% not have braces, and we don't want to switch into math.
+\def\mylbrace{{\ifmonospace\else\ecfont\fi \char123}}
+\def\myrbrace{{\ifmonospace\else\ecfont\fi \char125}}
+\let\{=\mylbrace \let\lbracechar=\{
+\let\}=\myrbrace \let\rbracechar=\}
+\begingroup
+ % Definitions to produce \{ and \} commands for indices,
+ % and @{ and @} for the aux/toc files.
+ \catcode`\{ = \other \catcode`\} = \other
+ \catcode`\[ = 1 \catcode`\] = 2
+ \catcode`\! = 0 \catcode`\\ = \other
+ !gdef!lbracecmd[\{]%
+ !gdef!rbracecmd[\}]%
+ !gdef!lbraceatcmd[@{]%
+ !gdef!rbraceatcmd[@}]%
+!endgroup
+
+% @comma{} to avoid , parsing problems.
+\let\comma = ,
+
+% Accents: @, @dotaccent @ringaccent @ubaraccent @udotaccent
+% Others are defined by plain TeX: @` @' @" @^ @~ @= @u @v @H.
+\let\, = \ptexc
+\let\dotaccent = \ptexdot
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \ptext
+\let\ubaraccent = \ptexb
+\let\udotaccent = \d
+
+% Other special characters: @questiondown @exclamdown @ordf @ordm
+% Plain TeX defines: @AA @AE @O @OE @L (plus lowercase versions) @ss.
+\def\questiondown{?`}
+\def\exclamdown{!`}
+\def\ordf{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{a}}}
+\def\ordm{\leavevmode\raise1ex\hbox{\selectfonts\lllsize \underbar{o}}}
+
+% Dotless i and dotless j, used for accents.
+\def\imacro{i}
+\def\jmacro{j}
+\def\dotless#1{%
+ \def\temp{#1}%
+ \ifx\temp\imacro \ifmmode\imath \else\ptexi \fi
+ \else\ifx\temp\jmacro \ifmmode\jmath \else\j \fi
+ \else \errmessage{@dotless can be used only with i or j}%
+ \fi\fi
+}
+
+% The \TeX{} logo, as in plain, but resetting the spacing so that a
+% period following counts as ending a sentence. (Idea found in latex.)
+%
+\edef\TeX{\TeX \spacefactor=1000 }
+
+% @LaTeX{} logo. Not quite the same results as the definition in
+% latex.ltx, since we use a different font for the raised A; it's most
+% convenient for us to use an explicitly smaller font, rather than using
+% the \scriptstyle font (since we don't reset \scriptstyle and
+% \scriptscriptstyle).
+%
+\def\LaTeX{%
+ L\kern-.36em
+ {\setbox0=\hbox{T}%
+ \vbox to \ht0{\hbox{%
+ \ifx\textnominalsize\xwordpt
+ % for 10pt running text, \lllsize (8pt) is too small for the A in LaTeX.
+ % Revert to plain's \scriptsize, which is 7pt.
+ \count255=\the\fam $\fam\count255 \scriptstyle A$%
+ \else
+ % For 11pt, we can use our lllsize.
+ \selectfonts\lllsize A%
+ \fi
+ }%
+ \vss
+ }}%
+ \kern-.15em
+ \TeX
+}
+
+% Some math mode symbols.
+\def\bullet{$\ptexbullet$}
+\def\geq{\ifmmode \ge\else $\ge$\fi}
+\def\leq{\ifmmode \le\else $\le$\fi}
+\def\minus{\ifmmode -\else $-$\fi}
+
+% @dots{} outputs an ellipsis using the current font.
+% We do .5em per period so that it has the same spacing in the cm
+% typewriter fonts as three actual period characters; on the other hand,
+% in other typewriter fonts three periods are wider than 1.5em. So do
+% whichever is larger.
+%
+\def\dots{%
+ \leavevmode
+ \setbox0=\hbox{...}% get width of three periods
+ \ifdim\wd0 > 1.5em
+ \dimen0 = \wd0
+ \else
+ \dimen0 = 1.5em
+ \fi
+ \hbox to \dimen0{%
+ \hskip 0pt plus.25fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus1fil
+ .\hskip 0pt plus.5fil
+ }%
+}
+
+% @enddots{} is an end-of-sentence ellipsis.
+%
+\def\enddots{%
+ \dots
+ \spacefactor=\endofsentencespacefactor
+}
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, they should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
+\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
+
+% The @error{} command.
+% Adapted from the TeXbook's \boxit.
+%
+\newbox\errorbox
+%
+{\tentt \global\dimen0 = 3em}% Width of the box.
+\dimen2 = .55pt % Thickness of rules
+% The text. (`r' is open on the right, `e' somewhat less so on the left.)
+\setbox0 = \hbox{\kern-.75pt \reducedsf \putworderror\kern-1.5pt}
+%
+\setbox\errorbox=\hbox to \dimen0{\hfil
+ \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
+ \advance\hsize by -2\dimen2 % Rules.
+ \vbox{%
+ \hrule height\dimen2
+ \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
+ \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
+ \kern3pt\vrule width\dimen2}% Space to right.
+ \hrule height\dimen2}
+ \hfil}
+%
+\def\error{\leavevmode\lower.7ex\copy\errorbox}
% @pounds{} is a sterling sign, which Knuth put in the CM italic font.
%
@@ -2679,52 +3047,59 @@ end
% Theiling, which support regular, slanted, bold and bold slanted (and
% "outlined" (blackboard board, sort of) versions, which we don't need).
% It is available from http://www.ctan.org/tex-archive/fonts/eurosym.
-%
+%
% Although only regular is the truly official Euro symbol, we ignore
% that. The Euro is designed to be slightly taller than the regular
% font height.
-%
+%
% feymr - regular
% feymo - slanted
% feybr - bold
% feybo - bold slanted
-%
+%
% There is no good (free) typewriter version, to my knowledge.
% A feymr10 euro is ~7.3pt wide, while a normal cmtt10 char is ~5.25pt wide.
% Hmm.
-%
+%
% Also doesn't work in math. Do we need to do math with euro symbols?
% Hope not.
-%
-%
+%
+%
\def\euro{{\eurofont e}}
\def\eurofont{%
% We set the font at each command, rather than predefining it in
% \textfonts and the other font-switching commands, so that
% installations which never need the symbol don't have to have the
% font installed.
- %
+ %
% There is only one designed size (nominal 10pt), so we always scale
% that to the current nominal size.
- %
+ %
% By the way, simply using "at 1em" works for cmr10 and the like, but
% does not work for cmbx10 and other extended/shrunken fonts.
- %
+ %
\def\eurosize{\csname\curfontsize nominalsize\endcsname}%
%
- \ifx\curfontstyle\bfstylename
+ \ifx\curfontstyle\bfstylename
% bold:
\font\thiseurofont = \ifusingit{feybo10}{feybr10} at \eurosize
- \else
+ \else
% regular:
\font\thiseurofont = \ifusingit{feymo10}{feymr10} at \eurosize
\fi
\thiseurofont
}
-% Hacks for glyphs from the EC fonts similar to \euro. We don't
-% use \let for the aliases, because sometimes we redefine the original
-% macro, and the alias should reflect the redefinition.
+% Glyphs from the EC fonts. We don't use \let for the aliases, because
+% sometimes we redefine the original macro, and the alias should reflect
+% the redefinition.
+%
+% Use LaTeX names for the Icelandic letters.
+\def\DH{{\ecfont \char"D0}} % Eth
+\def\dh{{\ecfont \char"F0}} % eth
+\def\TH{{\ecfont \char"DE}} % Thorn
+\def\th{{\ecfont \char"FE}} % thorn
+%
\def\guillemetleft{{\ecfont \char"13}}
\def\guillemotleft{\guillemetleft}
\def\guillemetright{{\ecfont \char"14}}
@@ -2734,8 +3109,36 @@ end
\def\quotedblbase{{\ecfont \char"12}}
\def\quotesinglbase{{\ecfont \char"0D}}
%
+% This positioning is not perfect (see the ogonek LaTeX package), but
+% we have the precomposed glyphs for the most common cases. We put the
+% tests to use those glyphs in the single \ogonek macro so we have fewer
+% dummy definitions to worry about for index entries, etc.
+%
+% ogonek is also used with other letters in Lithuanian (IOU), but using
+% the precomposed glyphs for those is not so easy since they aren't in
+% the same EC font.
+\def\ogonek#1{{%
+ \def\temp{#1}%
+ \ifx\temp\macrocharA\Aogonek
+ \else\ifx\temp\macrochara\aogonek
+ \else\ifx\temp\macrocharE\Eogonek
+ \else\ifx\temp\macrochare\eogonek
+ \else
+ \ecfont \setbox0=\hbox{#1}%
+ \ifdim\ht0=1ex\accent"0C #1%
+ \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
+ \fi
+ \fi\fi\fi\fi
+ }%
+}
+\def\Aogonek{{\ecfont \char"81}}\def\macrocharA{A}
+\def\aogonek{{\ecfont \char"A1}}\def\macrochara{a}
+\def\Eogonek{{\ecfont \char"86}}\def\macrocharE{E}
+\def\eogonek{{\ecfont \char"A6}}\def\macrochare{e}
+%
+% Use the ec* fonts (cm-super in outline format) for non-CM glyphs.
\def\ecfont{%
- % We can't distinguish serif/sanserif and italic/slanted, but this
+ % We can't distinguish serif/sans and italic/slanted, but this
% is used for crude hacks anyway (like adding French and German
% quotes to documents typeset with CM, where we lose kerning), so
% hopefully nobody will notice/care.
@@ -2768,8 +3171,8 @@ end
% Laurent Siebenmann reports \Orb undefined with:
% Textures 1.7.7 (preloaded format=plain 93.10.14) (68K) 16 APR 2004 02:38
% so we'll define it if necessary.
-%
-\ifx\Orb\undefined
+%
+\ifx\Orb\thisisundefined
\def\Orb{\mathhexbox20D}
\fi
@@ -2797,8 +3200,9 @@ end
\newif\ifsetshortcontentsaftertitlepage
\let\setshortcontentsaftertitlepage = \setshortcontentsaftertitlepagetrue
-\parseargdef\shorttitlepage{\begingroup\hbox{}\vskip 1.5in \chaprm \centerline{#1}%
- \endgroup\page\hbox{}\page}
+\parseargdef\shorttitlepage{%
+ \begingroup \hbox{}\vskip 1.5in \chaprm \centerline{#1}%
+ \endgroup\page\hbox{}\page}
\envdef\titlepage{%
% Open one extra group, as we want to close it in the middle of \Etitlepage.
@@ -2858,17 +3262,14 @@ end
\finishedtitlepagetrue
}
-%%% Macros to be used within @titlepage:
+% Macros to be used within @titlepage:
\let\subtitlerm=\tenrm
\def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}
-\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
- \let\tt=\authortt}
-
\parseargdef\title{%
\checkenv\titlepage
- \leftline{\titlefonts\rm #1}
+ \leftline{\titlefonts\rmisbold #1}
% print a rule at the page bottom also.
\finishedtitlepagefalse
\vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -2889,12 +3290,12 @@ end
\else
\checkenv\titlepage
\ifseenauthor\else \vskip 0pt plus 1filll \seenauthortrue \fi
- {\authorfont \leftline{#1}}%
+ {\secfonts\rmisbold \leftline{#1}}%
\fi
}
-%%% Set up page headings and footings.
+% Set up page headings and footings.
\let\thispage=\folio
@@ -2988,10 +3389,14 @@ end
\def\headings #1 {\csname HEADINGS#1\endcsname}
-\def\HEADINGSoff{%
-\global\evenheadline={\hfil} \global\evenfootline={\hfil}
-\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
-\HEADINGSoff
+\def\headingsoff{% non-global headings elimination
+ \evenheadline={\hfil}\evenfootline={\hfil}%
+ \oddheadline={\hfil}\oddfootline={\hfil}%
+}
+
+\def\HEADINGSoff{{\globaldefs=1 \headingsoff}} % global setting
+\HEADINGSoff % it's the default
+
% When we turn headings on, set the page number to 1.
% For double-sided printing, put current file name in lower left corner,
% chapter name on inside top of right hand pages, document
@@ -3042,7 +3447,7 @@ end
% This produces Day Month Year style of output.
% Only define if not already defined, in case a txi-??.tex file has set
% up a different format (e.g., txi-cs.tex does this).
-\ifx\today\undefined
+\ifx\today\thisisundefined
\def\today{%
\number\day\space
\ifcase\month
@@ -3103,7 +3508,7 @@ end
\begingroup
\advance\leftskip by-\tableindent
\advance\hsize by\tableindent
- \advance\rightskip by0pt plus1fil
+ \advance\rightskip by0pt plus1fil\relax
\leavevmode\unhbox0\par
\endgroup
%
@@ -3117,7 +3522,7 @@ end
% cause the example and the item to crash together. So we use this
% bizarre value of 10001 as a signal to \aboveenvbreak to insert
% \parskip glue after all. Section titles are handled this way also.
- %
+ %
\penalty 10001
\endgroup
\itemxneedsnegativevskipfalse
@@ -3211,9 +3616,18 @@ end
\parindent=0pt
\parskip=\smallskipamount
\ifdim\parskip=0pt \parskip=2pt \fi
+ %
+ % Try typesetting the item mark that if the document erroneously says
+ % something like @itemize @samp (intending @table), there's an error
+ % right away at the @itemize. It's not the best error message in the
+ % world, but it's better than leaving it to the @item. This means if
+ % the user wants an empty mark, they have to say @w{} not just @w.
\def\itemcontents{#1}%
+ \setbox0 = \hbox{\itemcontents}%
+ %
% @itemize with no arg is equivalent to @itemize @bullet.
\ifx\itemcontents\empty\def\itemcontents{\bullet}\fi
+ %
\let\item=\itemizeitem
}
@@ -3234,6 +3648,7 @@ end
\ifnum\lastpenalty<10000 \parskip=0in \fi
\noindent
\hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
+ %
\vadjust{\penalty 1200}}% not good to break after first line of item.
\flushcr
}
@@ -3455,12 +3870,19 @@ end
%
% @headitem starts a heading row, which we typeset in bold.
% Assignments have to be global since we are inside the implicit group
-% of an alignment entry. Note that \everycr resets \everytab.
-\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+% of an alignment entry. \everycr resets \everytab so we don't have to
+% undo it ourselves.
+\def\headitemfont{\b}% for people to use in the template row; not changeable
+\def\headitem{%
+ \checkenv\multitable
+ \crcr
+ \global\everytab={\bf}% can't use \headitemfont since the parsing differs
+ \the\everytab % for the first item
+}%
%
% A \tab used to include \hskip1sp. But then the space in a template
% line is not enough. That is bad. So let's go back to just `&' until
-% we encounter the problem it was intended to solve again.
+% we again encounter the problem the 1sp was intended to solve.
% --karl, nathan@acm.org, 20apr99.
\def\tab{\checkenv\multitable &\the\everytab}%
@@ -3572,18 +3994,18 @@ end
\setbox0=\vbox{X}\global\multitablelinespace=\the\baselineskip
\global\advance\multitablelinespace by-\ht0
\fi
-%% Test to see if parskip is larger than space between lines of
-%% table. If not, do nothing.
-%% If so, set to same dimension as multitablelinespace.
+% Test to see if parskip is larger than space between lines of
+% table. If not, do nothing.
+% If so, set to same dimension as multitablelinespace.
\ifdim\multitableparskip>\multitablelinespace
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi%
\ifdim\multitableparskip=0pt
\global\multitableparskip=\multitablelinespace
-\global\advance\multitableparskip-7pt %% to keep parskip somewhat smaller
- %% than skip between lines in the table.
+\global\advance\multitableparskip-7pt % to keep parskip somewhat smaller
+ % than skip between lines in the table.
\fi}
@@ -3859,11 +4281,11 @@ end
\def\dosynindex#1#2#3{%
% Only do \closeout if we haven't already done it, else we'll end up
% closing the target index.
- \expandafter \ifx\csname donesynindex#2\endcsname \undefined
+ \expandafter \ifx\csname donesynindex#2\endcsname \relax
% The \closeout helps reduce unnecessary open files; the limit on the
% Acorn RISC OS is a mere 16 files.
\expandafter\closeout\csname#2indfile\endcsname
- \expandafter\let\csname\donesynindex#2\endcsname = 1
+ \expandafter\let\csname donesynindex#2\endcsname = 1
\fi
% redefine \fooindfile:
\expandafter\let\expandafter\temp\expandafter=\csname#3indfile\endcsname
@@ -3898,11 +4320,14 @@ end
\def\@{@}% change to @@ when we switch to @ as escape char in index files.
\def\ {\realbackslash\space }%
%
- % Need these in case \tex is in effect and \{ is a \delimiter again.
- % But can't use \lbracecmd and \rbracecmd because texindex assumes
- % braces and backslashes are used only as delimiters.
- \let\{ = \mylbrace
- \let\} = \myrbrace
+ % Need these unexpandable (because we define \tt as a dummy)
+ % definitions when @{ or @} appear in index entry text. Also, more
+ % complicated, when \tex is in effect and \{ is a \delimiter again.
+ % We can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters. Perhaps we
+ % should define @lbrace and @rbrace commands a la @comma.
+ \def\{{{\tt\char123}}%
+ \def\}{{\tt\char125}}%
%
% I don't entirely understand this, but when an index entry is
% generated from a macro call, the \endinput which \scanmacro inserts
@@ -3913,7 +4338,7 @@ end
% processing continues to some further point. On the other hand, it
% seems \endinput does not hurt in the printed index arg, since that
% is still getting written without apparent harm.
- %
+ %
% Sample source (mac-idx3.tex, reported by Graham Percival to
% help-texinfo, 22may06):
% @macro funindex {WORD}
@@ -3921,12 +4346,12 @@ end
% @end macro
% ...
% @funindex commtest
- %
+ %
% The above is not enough to reproduce the bug, but it gives the flavor.
- %
+ %
% Sample whatsit resulting:
% .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
- %
+ %
% So:
\let\endinput = \empty
%
@@ -3955,7 +4380,7 @@ end
\def\commondummies{%
%
% \definedummyword defines \#1 as \string\#1\space, thus effectively
- % preventing its expansion. This is used only for control% words,
+ % preventing its expansion. This is used only for control words,
% not control letters, because the \space would be incorrect for
% control characters, but is needed to separate the control word
% from whatever follows.
@@ -3974,23 +4399,28 @@ end
\commondummiesnofonts
%
\definedummyletter\_%
+ \definedummyletter\-%
%
% Non-English letters.
\definedummyword\AA
\definedummyword\AE
+ \definedummyword\DH
\definedummyword\L
- \definedummyword\OE
\definedummyword\O
+ \definedummyword\OE
+ \definedummyword\TH
\definedummyword\aa
\definedummyword\ae
+ \definedummyword\dh
+ \definedummyword\exclamdown
\definedummyword\l
- \definedummyword\oe
\definedummyword\o
- \definedummyword\ss
- \definedummyword\exclamdown
- \definedummyword\questiondown
+ \definedummyword\oe
\definedummyword\ordf
\definedummyword\ordm
+ \definedummyword\questiondown
+ \definedummyword\ss
+ \definedummyword\th
%
% Although these internal commands shouldn't show up, sometimes they do.
\definedummyword\bf
@@ -4006,21 +4436,27 @@ end
\definedummyword\TeX
%
% Assorted special characters.
+ \definedummyword\arrow
\definedummyword\bullet
\definedummyword\comma
\definedummyword\copyright
\definedummyword\registeredsymbol
\definedummyword\dots
\definedummyword\enddots
+ \definedummyword\entrybreak
\definedummyword\equiv
\definedummyword\error
\definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\geq
\definedummyword\guillemetleft
\definedummyword\guillemetright
\definedummyword\guilsinglleft
\definedummyword\guilsinglright
- \definedummyword\expansion
+ \definedummyword\lbracechar
+ \definedummyword\leq
\definedummyword\minus
+ \definedummyword\ogonek
\definedummyword\pounds
\definedummyword\point
\definedummyword\print
@@ -4030,6 +4466,7 @@ end
\definedummyword\quoteleft
\definedummyword\quoteright
\definedummyword\quotesinglbase
+ \definedummyword\rbracechar
\definedummyword\result
\definedummyword\textdegree
%
@@ -4064,6 +4501,7 @@ end
\definedummyword\v
\definedummyword\H
\definedummyword\dotaccent
+ \definedummyword\ogonek
\definedummyword\ringaccent
\definedummyword\tieaccent
\definedummyword\ubaraccent
@@ -4074,18 +4512,27 @@ end
\definedummyword\b
\definedummyword\i
\definedummyword\r
+ \definedummyword\sansserif
\definedummyword\sc
+ \definedummyword\slanted
\definedummyword\t
%
% Commands that take arguments.
+ \definedummyword\abbr
\definedummyword\acronym
+ \definedummyword\anchor
\definedummyword\cite
\definedummyword\code
\definedummyword\command
\definedummyword\dfn
+ \definedummyword\dmn
+ \definedummyword\email
\definedummyword\emph
\definedummyword\env
\definedummyword\file
+ \definedummyword\image
+ \definedummyword\indicateurl
+ \definedummyword\inforef
\definedummyword\kbd
\definedummyword\key
\definedummyword\math
@@ -4113,7 +4560,7 @@ end
\def\definedummyaccent##1{\let##1\asis}%
% We can just ignore other control letters.
\def\definedummyletter##1{\let##1\empty}%
- % Hopefully, all control words can become @asis.
+ % All control words become @asis by default; overrides below.
\let\definedummyword\definedummyaccent
%
\commondummiesnofonts
@@ -4125,48 +4572,63 @@ end
%
\def\ { }%
\def\@{@}%
- % how to handle braces?
\def\_{\normalunderscore}%
+ \def\-{}% @- shouldn't affect sorting
+ %
+ % Unfortunately, texindex is not prepared to handle braces in the
+ % content at all. So for index sorting, we map @{ and @} to strings
+ % starting with |, since that ASCII character is between ASCII { and }.
+ \def\{{|a}%
+ \def\lbracechar{|a}%
+ %
+ \def\}{|b}%
+ \def\rbracechar{|b}%
%
% Non-English letters.
\def\AA{AA}%
\def\AE{AE}%
+ \def\DH{DZZ}%
\def\L{L}%
\def\OE{OE}%
\def\O{O}%
+ \def\TH{ZZZ}%
\def\aa{aa}%
\def\ae{ae}%
+ \def\dh{dzz}%
+ \def\exclamdown{!}%
\def\l{l}%
\def\oe{oe}%
- \def\o{o}%
- \def\ss{ss}%
- \def\exclamdown{!}%
- \def\questiondown{?}%
\def\ordf{a}%
\def\ordm{o}%
+ \def\o{o}%
+ \def\questiondown{?}%
+ \def\ss{ss}%
+ \def\th{zzz}%
%
\def\LaTeX{LaTeX}%
\def\TeX{TeX}%
%
% Assorted special characters.
% (The following {} will end up in the sort string, but that's ok.)
+ \def\arrow{->}%
\def\bullet{bullet}%
\def\comma{,}%
\def\copyright{copyright}%
- \def\registeredsymbol{R}%
\def\dots{...}%
\def\enddots{...}%
\def\equiv{==}%
\def\error{error}%
\def\euro{euro}%
+ \def\expansion{==>}%
+ \def\geq{>=}%
\def\guillemetleft{<<}%
\def\guillemetright{>>}%
\def\guilsinglleft{<}%
\def\guilsinglright{>}%
- \def\expansion{==>}%
+ \def\leq{<=}%
\def\minus{-}%
- \def\pounds{pounds}%
\def\point{.}%
+ \def\pounds{pounds}%
\def\print{-|}%
\def\quotedblbase{"}%
\def\quotedblleft{"}%
@@ -4174,22 +4636,31 @@ end
\def\quoteleft{`}%
\def\quoteright{'}%
\def\quotesinglbase{,}%
+ \def\registeredsymbol{R}%
\def\result{=>}%
- \def\textdegree{degrees}%
+ \def\textdegree{o}%
+ %
+ \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
+ \else \indexlquoteignore \fi
%
% We need to get rid of all macros, leaving only the arguments (if present).
% Of course this is not nearly correct, but it is the best we can do for now.
% makeinfo does not expand macros in the argument to @deffn, which ends up
% writing an index entry, and texindex isn't prepared for an index sort entry
% that starts with \.
- %
+ %
% Since macro invocations are followed by braces, we can just redefine them
% to take a single TeX argument. The case of a macro invocation that
% goes to end-of-line is not handled.
- %
+ %
\macrolist
}
+% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
+% ignore left quotes in the sort term.
+{\catcode`\`=\active
+ \gdef\indexlquoteignore{\let`=\empty}}
+
\let\indexbackslash=0 %overridden during \printindex.
\let\SETmarginindex=\relax % put index entries in margin (undocumented)?
@@ -4287,10 +4758,9 @@ end
%
% ..., ready, GO:
%
-\def\safewhatsit#1{%
-\ifhmode
+\def\safewhatsit#1{\ifhmode
#1%
-\else
+ \else
% \lastskip and \lastpenalty cannot both be nonzero simultaneously.
\whatsitskip = \lastskip
\edef\lastskipmacro{\the\lastskip}%
@@ -4314,7 +4784,6 @@ end
% to re-insert the same penalty (values >10000 are used for various
% signals); since we just inserted a non-discardable item, any
% following glue (such as a \parskip) would be a breakpoint. For example:
- %
% @deffn deffn-whatever
% @vindex index-whatever
% Description.
@@ -4327,8 +4796,7 @@ end
% (the whatsit from the \write), so we must insert a \nobreak.
\nobreak\vskip\whatsitskip
\fi
-\fi
-}
+\fi}
% The index entry written in the file actually looks like
% \entry {sortstring}{page}{topic}
@@ -4444,10 +4912,9 @@ end
%
% A straightforward implementation would start like this:
% \def\entry#1#2{...
-% But this frozes the catcodes in the argument, and can cause problems to
+% But this freezes the catcodes in the argument, and can cause problems to
% @code, which sets - active. This problem was fixed by a kludge---
% ``-'' was active throughout whole index, but this isn't really right.
-%
% The right solution is to prevent \entry from swallowing the whole text.
% --kasal, 21nov03
\def\entry{%
@@ -4484,10 +4951,17 @@ end
% columns.
\vskip 0pt plus1pt
%
+ % When reading the text of entry, convert explicit line breaks
+ % from @* into spaces. The user might give these in long section
+ % titles, for instance.
+ \def\*{\unskip\space\ignorespaces}%
+ \def\entrybreak{\hfil\break}%
+ %
% Swallow the left brace of the text (first parameter):
\afterassignment\doentry
\let\temp =
}
+\def\entrybreak{\unskip\space\ignorespaces}%
\def\doentry{%
\bgroup % Instead of the swallowed brace.
\noindent
@@ -4720,7 +5194,22 @@ end
\message{sectioning,}
% Chapters, sections, etc.
-% \unnumberedno is an oxymoron, of course. But we count the unnumbered
+% Let's start with @part.
+\outer\parseargdef\part{\partzzz{#1}}
+\def\partzzz#1{%
+ \chapoddpage
+ \null
+ \vskip.3\vsize % move it down on the page a bit
+ \begingroup
+ \noindent \titlefonts\rmisbold #1\par % the text
+ \let\lastnode=\empty % no node to associate with
+ \writetocentry{part}{#1}{}% but put it in the toc
+ \headingsoff % no headline or footline on the part page
+ \chapoddpage
+ \endgroup
+}
+
+% \unnumberedno is an oxymoron. But we count the unnumbered
% sections so that we can refer to them unambiguously in the pdf
% outlines by their "section number". We avoid collisions with chapter
% numbers by starting them at 10000. (If a document ever has 10000
@@ -4799,8 +5288,8 @@ end
\chardef\maxseclevel = 3
%
% A numbered section within an unnumbered changes to unnumbered too.
-% To achive this, remember the "biggest" unnum. sec. we are currently in:
-\chardef\unmlevel = \maxseclevel
+% To achieve this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unnlevel = \maxseclevel
%
% Trace whether the current chapter is an appendix or not:
% \chapheadtype is "N" or "A", unnumbered chapters are ignored.
@@ -4825,8 +5314,8 @@ end
% The heading type:
\def\headtype{#1}%
\if \headtype U%
- \ifnum \absseclevel < \unmlevel
- \chardef\unmlevel = \absseclevel
+ \ifnum \absseclevel < \unnlevel
+ \chardef\unnlevel = \absseclevel
\fi
\else
% Check for appendix sections:
@@ -4838,10 +5327,10 @@ end
\fi\fi
\fi
% Check for numbered within unnumbered:
- \ifnum \absseclevel > \unmlevel
+ \ifnum \absseclevel > \unnlevel
\def\headtype{U}%
\else
- \chardef\unmlevel = 3
+ \chardef\unnlevel = 3
\fi
\fi
% Now print the heading:
@@ -4895,7 +5384,9 @@ end
\gdef\chaplevelprefix{\the\chapno.}%
\resetallfloatnos
%
- \message{\putwordChapter\space \the\chapno}%
+ % \putwordChapter can contain complex things in translations.
+ \toks0=\expandafter{\putwordChapter}%
+ \message{\the\toks0 \space \the\chapno}%
%
% Write the actual heading.
\chapmacro{#1}{Ynumbered}{\the\chapno}%
@@ -4906,15 +5397,17 @@ end
\global\let\subsubsection = \numberedsubsubsec
}
-\outer\parseargdef\appendix{\apphead0{#1}} % normally apphead0 calls appendixzzz
+\outer\parseargdef\appendix{\apphead0{#1}} % normally calls appendixzzz
+%
\def\appendixzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\appendixno by 1
\gdef\chaplevelprefix{\appendixletter.}%
\resetallfloatnos
%
- \def\appendixnum{\putwordAppendix\space \appendixletter}%
- \message{\appendixnum}%
+ % \putwordAppendix can contain complex things in translations.
+ \toks0=\expandafter{\putwordAppendix}%
+ \message{\the\toks0 \space \appendixletter}%
%
\chapmacro{#1}{Yappendix}{\appendixletter}%
%
@@ -4923,7 +5416,8 @@ end
\global\let\subsubsection = \appendixsubsubsec
}
-\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+% normally unnmhead0 calls unnumberedzzz:
+\outer\parseargdef\unnumbered{\unnmhead0{#1}}
\def\unnumberedzzz#1{%
\global\secno=0 \global\subsecno=0 \global\subsubsecno=0
\global\advance\unnumberedno by 1
@@ -4967,40 +5461,47 @@ end
\let\top\unnumbered
% Sections.
+%
\outer\parseargdef\numberedsec{\numhead1{#1}} % normally calls seczzz
\def\seczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynumbered}{\the\chapno.\the\secno}%
}
-\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+% normally calls appendixsectionzzz:
+\outer\parseargdef\appendixsection{\apphead1{#1}}
\def\appendixsectionzzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
}
\let\appendixsec\appendixsection
-\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+% normally calls unnumberedseczzz:
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}}
\def\unnumberedseczzz#1{%
\global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
\sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
}
% Subsections.
-\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+%
+% normally calls numberedsubseczzz:
+\outer\parseargdef\numberedsubsec{\numhead2{#1}}
\def\numberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+% normally calls appendixsubseczzz:
+\outer\parseargdef\appendixsubsec{\apphead2{#1}}
\def\appendixsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno}%
}
-\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+% normally calls unnumberedsubseczzz:
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}}
\def\unnumberedsubseczzz#1{%
\global\subsubsecno=0 \global\advance\subsecno by 1
\sectionheading{#1}{subsec}{Ynothing}%
@@ -5008,21 +5509,25 @@ end
}
% Subsubsections.
-\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+%
+% normally numberedsubsubseczzz:
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}}
\def\numberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynumbered}%
{\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+% normally appendixsubsubseczzz:
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}}
\def\appendixsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Yappendix}%
{\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
}
-\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+% normally unnumberedsubsubseczzz:
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}}
\def\unnumberedsubsubseczzz#1{%
\global\advance\subsubsecno by 1
\sectionheading{#1}{subsubsec}{Ynothing}%
@@ -5046,7 +5551,6 @@ end
% 3) Likewise, headings look best if no \parindent is used, and
% if justification is not attempted. Hence \raggedright.
-
\def\majorheading{%
{\advance\chapheadingskip by 10pt \chapbreak }%
\parsearg\chapheadingzzz
@@ -5055,8 +5559,8 @@ end
\def\chapheading{\chapbreak \parsearg\chapheadingzzz}
\def\chapheadingzzz#1{%
{\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}%
+ \parindent=0pt\ptexraggedright
+ \rmisbold #1\hfill}}%
\bigskip \par\penalty 200\relax
\suppressfirstparagraphindent
}
@@ -5073,14 +5577,13 @@ end
% (including whitespace, linebreaking, etc. around it),
% given all the information in convenient, parsed form.
-%%% Args are the skip and penalty (usually negative)
+% Args are the skip and penalty (usually negative)
\def\dobreak#1#2{\par\ifdim\lastskip<#1\removelastskip\penalty#2\vskip#1\fi}
-%%% Define plain chapter starts, and page on/off switching for it
% Parameter controlling skip before chapter headings (if needed)
-
\newskip\chapheadingskip
+% Define plain chapter starts, and page on/off switching for it.
\def\chapbreak{\dobreak \chapheadingskip {-4000}}
\def\chappager{\par\vfill\supereject}
% Because \domark is called before \chapoddpage, the filler page will
@@ -5090,9 +5593,8 @@ end
\chappager
\ifodd\pageno \else
\begingroup
- \evenheadline={\hfil}\evenfootline={\hfil}%
- \oddheadline={\hfil}\oddfootline={\hfil}%
- \hbox to 0pt{}%
+ \headingsoff
+ \null
\chappager
\endgroup
\fi
@@ -5148,7 +5650,10 @@ end
\xdef\lastchapterdefs{%
\gdef\noexpand\thischaptername{\the\toks0}%
\gdef\noexpand\thischapternum{\appendixletter}%
- \gdef\noexpand\thischapter{\putwordAppendix{} \noexpand\thischapternum:
+ % \noexpand\putwordAppendix avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordAppendix{}
+ \noexpand\thischapternum:
\noexpand\thischaptername}%
}%
\else
@@ -5156,7 +5661,10 @@ end
\xdef\lastchapterdefs{%
\gdef\noexpand\thischaptername{\the\toks0}%
\gdef\noexpand\thischapternum{\the\chapno}%
- \gdef\noexpand\thischapter{\putwordChapter{} \noexpand\thischapternum:
+ % \noexpand\putwordChapter avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thischapter{\noexpand\putwordChapter{}
+ \noexpand\thischapternum:
\noexpand\thischaptername}%
}%
\fi\fi\fi
@@ -5175,7 +5683,7 @@ end
\domark
%
{%
- \chapfonts \rm
+ \chapfonts \rmisbold
%
% Have to define \lastsection before calling \donoderef, because the
% xref code eventually uses it. On the other hand, it has to be called
@@ -5212,7 +5720,7 @@ end
%
% Typeset the actual heading.
\nobreak % Avoid page breaks at the interline glue.
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
\hangindent=\wd0 \centerparametersmaybe
\unhbox0 #1\par}%
}%
@@ -5236,8 +5744,8 @@ end
%
\def\unnchfopen #1{%
\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
- \parindent=0pt\raggedright
- \rm #1\hfill}}\bigskip \par\nobreak
+ \parindent=0pt\ptexraggedright
+ \rmisbold #1\hfill}}\bigskip \par\nobreak
}
\def\chfopen #1#2{\chapoddpage {\chapfonts
\vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
@@ -5246,7 +5754,7 @@ end
\def\centerchfopen #1{%
\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
\parindent=0pt
- \hfill {\rm #1}\hfill}}\bigskip \par\nobreak
+ \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
}
\def\CHAPFopen{%
\global\let\chapmacro=\chfopen
@@ -5278,8 +5786,10 @@ end
%
\def\sectionheading#1#2#3#4{%
{%
+ \checkenv{}% should not be in an environment.
+ %
% Switch to the right set of fonts.
- \csname #2fonts\endcsname \rm
+ \csname #2fonts\endcsname \rmisbold
%
\def\sectionlevel{#2}%
\def\temptype{#3}%
@@ -5299,7 +5809,10 @@ end
\xdef\lastsectiondefs{%
\gdef\noexpand\thissectionname{\the\toks0}%
\gdef\noexpand\thissectionnum{#4}%
- \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
\noexpand\thissectionname}%
}%
\fi
@@ -5309,12 +5822,20 @@ end
\xdef\lastsectiondefs{%
\gdef\noexpand\thissectionname{\the\toks0}%
\gdef\noexpand\thissectionnum{#4}%
- \gdef\noexpand\thissection{\putwordSection{} \noexpand\thissectionnum:
+ % \noexpand\putwordSection avoids expanding indigestible
+ % commands in some of the translations.
+ \gdef\noexpand\thissection{\noexpand\putwordSection{}
+ \noexpand\thissectionnum:
\noexpand\thissectionname}%
}%
\fi
\fi\fi\fi
%
+ % Go into vertical mode. Usually we'll already be there, but we
+ % don't want the following whatsit to end up in a preceding paragraph
+ % if the document didn't happen to have a blank line.
+ \par
+ %
% Output the mark. Pass it through \safewhatsit, to take care of
% the preceding space.
\safewhatsit\domark
@@ -5364,7 +5885,7 @@ end
\nobreak
%
% Output the actual section heading.
- \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
\hangindent=\wd0 % zero if no section number
\unhbox0 #1}%
}%
@@ -5378,15 +5899,15 @@ end
%
% We'll almost certainly start a paragraph next, so don't let that
% glue accumulate. (Not a breakpoint because it's preceded by a
- % discardable item.)
+ % discardable item.) However, when a paragraph is not started next
+ % (\startdefun, \cartouche, \center, etc.), this needs to be wiped out
+ % or the negative glue will cause weirdly wrong output, typically
+ % obscuring the section heading with something else.
\vskip-\parskip
- %
- % This is purely so the last item on the list is a known \penalty >
- % 10000. This is so \startdefun can avoid allowing breakpoints after
- % section headings. Otherwise, it would insert a valid breakpoint between:
- %
- % @section sec-whatever
- % @deffn def-whatever
+ %
+ % This is so the last item on the main vertical list is a known
+ % \penalty > 10000, so \startdefun, etc., can recognize the situation
+ % and do the needful.
\penalty 10001
}
@@ -5442,7 +5963,7 @@ end
% These characters do not print properly in the Computer Modern roman
% fonts, so we must take special care. This is more or less redundant
% with the Texinfo input format setup at the end of this file.
-%
+%
\def\activecatcodes{%
\catcode`\"=\active
\catcode`\$=\active
@@ -5492,7 +6013,7 @@ end
% redefined for the two-volume lispref. We always output on
% \jobname.toc even if this is redefined.
-%
+%
\def\tocreadfilename{\jobname.toc}
% Normal (long) toc.
@@ -5518,6 +6039,7 @@ end
\def\summarycontents{%
\startcontents{\putwordShortTOC}%
%
+ \let\partentry = \shortpartentry
\let\numchapentry = \shortchapentry
\let\appentry = \shortchapentry
\let\unnchapentry = \shortunnchapentry
@@ -5573,6 +6095,19 @@ end
% The last argument is the page number.
% The arguments in between are the chapter number, section number, ...
+% Parts, in the main contents. Replace the part number, which doesn't
+% exist, with an empty box. Let's hope all the numbers have the same width.
+% Also ignore the page number, which is conventionally not printed.
+\def\numeralbox{\setbox0=\hbox{8}\hbox to \wd0{\hfil}}
+\def\partentry#1#2#3#4{\dochapentry{\numeralbox\labelspace#1}{}}
+%
+% Parts, in the short toc.
+\def\shortpartentry#1#2#3#4{%
+ \penalty-300
+ \vskip.5\baselineskip plus.15\baselineskip minus.1\baselineskip
+ \shortchapentry{{\bf #1}}{\numeralbox}{}{}%
+}
+
% Chapters, in the main contents.
\def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
%
@@ -5662,46 +6197,12 @@ end
\message{environments,}
% @foo ... @end foo.
-% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
-%
-% Since these characters are used in examples, they should be an even number of
-% \tt widths. Each \tt character is 1en, so two makes it 1em.
-%
-\def\point{$\star$}
-\def\arrow{\leavevmode\raise.05ex\hbox to 1em{\hfil$\rightarrow$\hfil}}
-\def\result{\leavevmode\raise.05ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
-\def\expansion{\leavevmode\hbox to 1em{\hfil$\mapsto$\hfil}}
-\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
-\def\equiv{\leavevmode\hbox to 1em{\hfil$\ptexequiv$\hfil}}
-
-% The @error{} command.
-% Adapted from the TeXbook's \boxit.
-%
-\newbox\errorbox
-%
-{\tentt \global\dimen0 = 3em}% Width of the box.
-\dimen2 = .55pt % Thickness of rules
-% The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
-%
-\setbox\errorbox=\hbox to \dimen0{\hfil
- \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
- \advance\hsize by -2\dimen2 % Rules.
- \vbox{%
- \hrule height\dimen2
- \hbox{\vrule width\dimen2 \kern3pt % Space to left of text.
- \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
- \kern3pt\vrule width\dimen2}% Space to right.
- \hrule height\dimen2}
- \hfil}
-%
-\def\error{\leavevmode\lower.7ex\copy\errorbox}
-
-% @tex ... @end tex escapes into raw Tex temporarily.
+% @tex ... @end tex escapes into raw TeX temporarily.
% One exception: @ is still an escape character, so that @end tex works.
-% But \@ or @@ will get a plain tex @ character.
+% But \@ or @@ will get a plain @ character.
\envdef\tex{%
+ \setupmarkupstyle{tex}%
\catcode `\\=0 \catcode `\{=1 \catcode `\}=2
\catcode `\$=3 \catcode `\&=4 \catcode `\#=6
\catcode `\^=7 \catcode `\_=8 \catcode `\~=\active \let~=\tie
@@ -5711,8 +6212,14 @@ end
\catcode `\|=\other
\catcode `\<=\other
\catcode `\>=\other
+ \catcode`\`=\other
+ \catcode`\'=\other
\escapechar=`\\
%
+ % ' is active in math mode (mathcode"8000). So reset it, and all our
+ % other math active characters (just in case), to plain's definitions.
+ \mathactive
+ %
\let\b=\ptexb
\let\bullet=\ptexbullet
\let\c=\ptexc
@@ -5816,6 +6323,12 @@ end
\normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
% Flag to tell @lisp, etc., not to narrow margin.
\let\nonarrowing = t%
+ %
+ % If this cartouche directly follows a sectioning command, we need the
+ % \parskip glue (backspaced over by default) or the cartouche can
+ % collide with the section heading.
+ \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
+ %
\vbox\bgroup
\baselineskip=0pt\parskip=0pt\lineskip=0pt
\carttop
@@ -5829,7 +6342,7 @@ end
\lineskip=\normlskip
\parskip=\normpskip
\vskip -\parskip
- \comment % For explanation, see the end of \def\group.
+ \comment % For explanation, see the end of def\group.
}
\def\Ecartouche{%
\ifhmode\par\fi
@@ -5846,6 +6359,7 @@ end
% This macro is called at the beginning of all the @example variants,
% inside a group.
+\newdimen\nonfillparindent
\def\nonfillstart{%
\aboveenvbreak
\hfuzz = 12pt % Don't be fussy
@@ -5853,7 +6367,12 @@ end
\let\par = \lisppar % don't ignore blank lines
\obeylines % each line of input is a line of output
\parskip = 0pt
+ % Turn off paragraph indentation but redefine \indent to emulate
+ % the normal \indent.
+ \nonfillparindent=\parindent
\parindent = 0pt
+ \let\indent\nonfillindent
+ %
\emergencystretch = 0pt % don't try to avoid overfull boxes
\ifx\nonarrowing\relax
\advance \leftskip by \lispnarrowing
@@ -5864,6 +6383,24 @@ end
\let\exdent=\nofillexdent
}
+\begingroup
+\obeyspaces
+% We want to swallow spaces (but not other tokens) after the fake
+% @indent in our nonfill-environments, where spaces are normally
+% active and set to @tie, resulting in them not being ignored after
+% @indent.
+\gdef\nonfillindent{\futurelet\temp\nonfillindentcheck}%
+\gdef\nonfillindentcheck{%
+\ifx\temp %
+\expandafter\nonfillindentgobble%
+\else%
+\leavevmode\nonfillindentbox%
+\fi%
+}%
+\endgroup
+\def\nonfillindentgobble#1{\nonfillindent}
+\def\nonfillindentbox{\hbox to \nonfillparindent{\hss}}
+
% If you want all examples etc. small: @set dispenvsize small.
% If you want even small examples the full size: @set dispenvsize nosmall.
% This affects the following displayed environments:
@@ -5891,41 +6428,42 @@ end
}
% We often define two environments, @foo and @smallfoo.
-% Let's do it by one command:
-\def\makedispenv #1#2{
- \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}
- \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}
+% Let's do it in one command. #1 is the env name, #2 the definition.
+\def\makedispenvdef#1#2{%
+ \expandafter\envdef\csname#1\endcsname {\setnormaldispenv #2}%
+ \expandafter\envdef\csname small#1\endcsname {\setsmalldispenv #2}%
\expandafter\let\csname E#1\endcsname \afterenvbreak
\expandafter\let\csname Esmall#1\endcsname \afterenvbreak
}
-% Define two synonyms:
-\def\maketwodispenvs #1#2#3{
- \makedispenv{#1}{#3}
- \makedispenv{#2}{#3}
+% Define two environment synonyms (#1 and #2) for an environment.
+\def\maketwodispenvdef#1#2#3{%
+ \makedispenvdef{#1}{#3}%
+ \makedispenvdef{#2}{#3}%
}
-
-% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @lisp: indented, narrowed, typewriter font;
+% @example: same as @lisp.
%
% @smallexample and @smalllisp: use smaller fonts.
% Originally contributed by Pavel@xerox.
%
-\maketwodispenvs {lisp}{example}{%
+\maketwodispenvdef{lisp}{example}{%
\nonfillstart
- \tt\quoteexpand
+ \tt\setupmarkupstyle{example}%
\let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
- \gobble % eat return
+ \gobble % eat return
}
% @display/@smalldisplay: same as @lisp except keep current font.
%
-\makedispenv {display}{%
+\makedispenvdef{display}{%
\nonfillstart
\gobble
}
% @format/@smallformat: same as @display except don't narrow margins.
%
-\makedispenv{format}{%
+\makedispenvdef{format}{%
\let\nonarrowing = t%
\nonfillstart
\gobble
@@ -5944,18 +6482,44 @@ end
\envdef\flushright{%
\let\nonarrowing = t%
\nonfillstart
- \advance\leftskip by 0pt plus 1fill
+ \advance\leftskip by 0pt plus 1fill\relax
\gobble
}
\let\Eflushright = \afterenvbreak
+% @raggedright does more-or-less normal line breaking but no right
+% justification. From plain.tex.
+\envdef\raggedright{%
+ \rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax
+}
+\let\Eraggedright\par
+
+\envdef\raggedleft{%
+ \parindent=0pt \leftskip0pt plus2em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedleft\par
+
+\envdef\raggedcenter{%
+ \parindent=0pt \rightskip0pt plus1em \leftskip0pt plus1em
+ \spaceskip.3333em \xspaceskip.5em \parfillskip=0pt
+ \hbadness=10000 % Last line will usually be underfull, so turn off
+ % badness reporting.
+}
+\let\Eraggedcenter\par
+
+
% @quotation does normal linebreaking (hence we can't use \nonfillstart)
% and narrows the margins. We keep \parskip nonzero in general, since
% we're doing normal filling. So, when using \aboveenvbreak and
% \afterenvbreak, temporarily make \parskip 0.
%
-\envdef\quotation{%
+\makedispenvdef{quotation}{\quotationstart}
+%
+\def\quotationstart{%
{\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
\parindent=0pt
%
@@ -5975,12 +6539,13 @@ end
%
\def\Equotation{%
\par
- \ifx\quotationauthor\undefined\else
+ \ifx\quotationauthor\thisisundefined\else
% indent a bit.
\leftline{\kern 2\leftskip \sl ---\quotationauthor}%
\fi
{\parskip=0pt \afterenvbreak}%
}
+\def\Esmallquotation{\Equotation}
% If we're given an argument, typeset it in bold with a colon after.
\def\quotationlabel#1{%
@@ -6005,18 +6570,16 @@ end
\do\ \do\\\do\{\do\}\do\$\do\&%
\do\#\do\^\do\^^K\do\_\do\^^A\do\%\do\~%
\do\<\do\>\do\|\do\@\do+\do\"%
+ % Don't do the quotes -- if we do, @set txicodequoteundirected and
+ % @set txicodequotebacktick will not have effect on @verb and
+ % @verbatim, and ?` and !` ligatures won't get disabled.
+ %\do\`\do\'%
}
%
% [Knuth] p. 380
\def\uncatcodespecials{%
\def\do##1{\catcode`##1=\other}\dospecials}
%
-% [Knuth] pp. 380,381,391
-% Disable Spanish ligatures ?` and !` of \tt font
-\begingroup
- \catcode`\`=\active\gdef`{\relax\lq}
-\endgroup
-%
% Setup for the @verb command.
%
% Eight spaces for a tab
@@ -6028,7 +6591,7 @@ end
\def\setupverb{%
\tt % easiest (and conventionally used) font for verbatim
\def\par{\leavevmode\endgraf}%
- \catcode`\`=\active
+ \setupmarkupstyle{verb}%
\tabeightspaces
% Respect line breaks,
% print special symbols as themselves, and
@@ -6039,73 +6602,46 @@ end
% Setup for the @verbatim environment
%
-% Real tab expansion
+% Real tab expansion.
\newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
%
-\def\starttabbox{\setbox0=\hbox\bgroup}
-
-% Allow an option to not replace quotes with a regular directed right
-% quote/apostrophe (char 0x27), but instead use the undirected quote
-% from cmtt (char 0x0d). The undirected quote is ugly, so don't make it
-% the default, but it works for pasting with more pdf viewers (at least
-% evince), the lilypond developers report. xpdf does work with the
-% regular 0x27.
-%
-\def\codequoteright{%
- \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
- \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
- '%
- \else \char'15 \fi
- \else \char'15 \fi
-}
-%
-% and a similar option for the left quote char vs. a grave accent.
-% Modern fonts display ASCII 0x60 as a grave accent, so some people like
-% the code environments to do likewise.
-%
-\def\codequoteleft{%
- \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
- \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
- `%
- \else \char'22 \fi
- \else \char'22 \fi
-}
+% We typeset each line of the verbatim in an \hbox, so we can handle
+% tabs. The \global is in case the verbatim line starts with an accent,
+% or some other command that starts with a begin-group. Otherwise, the
+% entire \verbbox would disappear at the corresponding end-group, before
+% it is typeset. Meanwhile, we can't have nested verbatim commands
+% (can we?), so the \global won't be overwriting itself.
+\newbox\verbbox
+\def\starttabbox{\global\setbox\verbbox=\hbox\bgroup}
%
\begingroup
\catcode`\^^I=\active
\gdef\tabexpand{%
\catcode`\^^I=\active
\def^^I{\leavevmode\egroup
- \dimen0=\wd0 % the width so far, or since the previous tab
- \divide\dimen0 by\tabw
- \multiply\dimen0 by\tabw % compute previous multiple of \tabw
- \advance\dimen0 by\tabw % advance to next multiple of \tabw
- \wd0=\dimen0 \box0 \starttabbox
+ \dimen\verbbox=\wd\verbbox % the width so far, or since the previous tab
+ \divide\dimen\verbbox by\tabw
+ \multiply\dimen\verbbox by\tabw % compute previous multiple of \tabw
+ \advance\dimen\verbbox by\tabw % advance to next multiple of \tabw
+ \wd\verbbox=\dimen\verbbox \box\verbbox \starttabbox
}%
}
- \catcode`\'=\active
- \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
- %
- \catcode`\`=\active
- \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
- %
- \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
\endgroup
% start the verbatim environment.
\def\setupverbatim{%
\let\nonarrowing = t%
\nonfillstart
- % Easiest (and conventionally used) font for verbatim
- \tt
- \def\par{\leavevmode\egroup\box0\endgraf}%
- \catcode`\`=\active
+ \tt % easiest (and conventionally used) font for verbatim
+ % The \leavevmode here is for blank lines. Otherwise, we would
+ % never \starttabox and the \egroup would end verbatim mode.
+ \def\par{\leavevmode\egroup\box\verbbox\endgraf}%
\tabexpand
- \quoteexpand
+ \setupmarkupstyle{verbatim}%
% Respect line breaks,
% print special symbols as themselves, and
- % make each space count
- % must do in this order:
+ % make each space count.
+ % Must do in this order:
\obeylines \uncatcodespecials \sepspaces
\everypar{\starttabbox}%
}
@@ -6161,6 +6697,8 @@ end
{%
\makevalueexpandable
\setupverbatim
+ \indexnofonts % Allow `@@' and other weird things in file names.
+ \wlog{texinfo.tex: doing @verbatiminclude of #1^^J}%
\input #1
\afterenvbreak
}%
@@ -6210,7 +6748,7 @@ end
% commands also insert a nobreak penalty, and we don't want to allow
% a break between a section heading and a defun.
%
- % As a minor refinement, we avoid "club" headers by signalling
+ % As a further refinement, we avoid "club" headers by signalling
% with penalty of 10003 after the very first @deffn in the
% sequence (see above), and penalty of 10002 after any following
% @def command.
@@ -6247,7 +6785,7 @@ end
#1#2 \endheader
% common ending:
\interlinepenalty = 10000
- \advance\rightskip by 0pt plus 1fil
+ \advance\rightskip by 0pt plus 1fil\relax
\endgraf
\nobreak\vskip -\parskip
\penalty\defunpenalty % signal to \startdefun and \dodefunx
@@ -6260,7 +6798,7 @@ end
\def\Edefun{\endgraf\medbreak}
% \makedefun{deffn} creates \deffn, \deffnx and \Edeffn;
-% the only thing remainnig is to define \deffnheader.
+% the only thing remaining is to define \deffnheader.
%
\def\makedefun#1{%
\expandafter\let\csname E#1\endcsname = \Edefun
@@ -6277,13 +6815,36 @@ end
\def\domakedefun#1#2#3{%
\envdef#1{%
\startdefun
+ \doingtypefnfalse % distinguish typed functions from all else
\parseargusing\activeparens{\printdefunline#3}%
}%
\def#2{\dodefunx#1}%
\def#3%
}
-%%% Untyped functions:
+\newif\ifdoingtypefn % doing typed function?
+\newif\ifrettypeownline % typeset return type on its own line?
+
+% @deftypefnnewline on|off says whether the return type of typed functions
+% are printed on their own line. This affects @deftypefn, @deftypefun,
+% @deftypeop, and @deftypemethod.
+%
+\parseargdef\deftypefnnewline{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETtxideftypefnnl\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @txideftypefnnl value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+% Untyped functions:
% @deffn category name args
\makedefun{deffn}{\deffngeneral{}}
@@ -6302,7 +6863,7 @@ end
\defname{#2}{}{#3}\magicamp\defunargs{#4\unskip}%
}
-%%% Typed functions:
+% Typed functions:
% @deftypefn category type name args
\makedefun{deftypefn}{\deftypefngeneral{}}
@@ -6317,10 +6878,11 @@ end
%
\def\deftypefngeneral#1#2 #3 #4 #5\endheader{%
\dosubind{fn}{\code{#4}}{#1}%
+ \doingtypefntrue
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Typed variables:
+% Typed variables:
% @deftypevr category type var args
\makedefun{deftypevr}{\deftypecvgeneral{}}
@@ -6338,7 +6900,7 @@ end
\defname{#2}{#3}{#4}\defunargs{#5\unskip}%
}
-%%% Untyped variables:
+% Untyped variables:
% @defvr category var args
\makedefun{defvr}#1 {\deftypevrheader{#1} {} }
@@ -6349,7 +6911,8 @@ end
% \defcvof {category of}class var args
\def\defcvof#1#2 {\deftypecvof{#1}#2 {} }
-%%% Type:
+% Types:
+
% @deftp category name args
\makedefun{deftp}#1 #2 #3\endheader{%
\doind{tp}{\code{#2}}%
@@ -6377,25 +6940,49 @@ end
% We are followed by (but not passed) the arguments, if any.
%
\def\defname#1#2#3{%
+ \par
% Get the values of \leftskip and \rightskip as they were outside the @def...
\advance\leftskip by -\defbodyindent
%
- % How we'll format the type name. Putting it in brackets helps
+ % Determine if we are typesetting the return type of a typed function
+ % on a line by itself.
+ \rettypeownlinefalse
+ \ifdoingtypefn % doing a typed function specifically?
+ % then check user option for putting return type on its own line:
+ \expandafter\ifx\csname SETtxideftypefnnl\endcsname\relax \else
+ \rettypeownlinetrue
+ \fi
+ \fi
+ %
+ % How we'll format the category name. Putting it in brackets helps
% distinguish it from the body text that may end up on the next line
% just below it.
\def\temp{#1}%
\setbox0=\hbox{\kern\deflastargmargin \ifx\temp\empty\else [\rm\temp]\fi}
%
- % Figure out line sizes for the paragraph shape.
+ % Figure out line sizes for the paragraph shape. We'll always have at
+ % least two.
+ \tempnum = 2
+ %
% The first line needs space for \box0; but if \rightskip is nonzero,
% we need only space for the part of \box0 which exceeds it:
\dimen0=\hsize \advance\dimen0 by -\wd0 \advance\dimen0 by \rightskip
+ %
+ % If doing a return type on its own line, we'll have another line.
+ \ifrettypeownline
+ \advance\tempnum by 1
+ \def\maybeshapeline{0in \hsize}%
+ \else
+ \def\maybeshapeline{}%
+ \fi
+ %
% The continuations:
\dimen2=\hsize \advance\dimen2 by -\defargsindent
- % (plain.tex says that \dimen1 should be used only as global.)
- \parshape 2 0in \dimen0 \defargsindent \dimen2
%
- % Put the type name to the right margin.
+ % The final paragraph shape:
+ \parshape \tempnum 0in \dimen0 \maybeshapeline \defargsindent \dimen2
+ %
+ % Put the category name at the right margin.
\noindent
\hbox to 0pt{%
\hfil\box0 \kern-\hsize
@@ -6417,8 +7004,16 @@ end
% . this still does not fix the ?` and !` ligatures, but so far no
% one has made identifiers using them :).
\df \tt
- \def\temp{#2}% return value type
- \ifx\temp\empty\else \tclose{\temp} \fi
+ \def\temp{#2}% text of the return type
+ \ifx\temp\empty\else
+ \tclose{\temp}% typeset the return type
+ \ifrettypeownline
+ % put return type on its own line; prohibit line break following:
+ \hfil\vadjust{\nobreak}\break
+ \else
+ \space % type on same line, so just followed by a space
+ \fi
+ \fi % no return type
#3% output function name
}%
{\rm\enskip}% hskip 0.5 em of \tenrm
@@ -6439,7 +7034,7 @@ end
%
% On the other hand, if an argument has two dashes (for instance), we
% want a way to get ttsl. Let's try @var for that.
- \let\var=\ttslanted
+ \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
#1%
\sl\hyphenchar\font=45
}
@@ -6536,7 +7131,7 @@ end
% To do this right we need a feature of e-TeX, \scantokens,
% which we arrange to emulate with a temporary file in ordinary TeX.
-\ifx\eTeXversion\undefined
+\ifx\eTeXversion\thisisundefined
\newwrite\macscribble
\def\scantokens#1{%
\toks0={#1}%
@@ -6547,25 +7142,30 @@ end
}
\fi
-\def\scanmacro#1{%
- \begingroup
- \newlinechar`\^^M
- \let\xeatspaces\eatspaces
- % Undo catcode changes of \startcontents and \doprintindex
- % When called from @insertcopying or (short)caption, we need active
- % backslash to get it printed correctly. Previously, we had
- % \catcode`\\=\other instead. We'll see whether a problem appears
- % with macro expansion. --kasal, 19aug04
- \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
- % ... and \example
- \spaceisspace
- %
- % Append \endinput to make sure that TeX does not see the ending newline.
- % I've verified that it is necessary both for e-TeX and for ordinary TeX
- % --kasal, 29nov03
- \scantokens{#1\endinput}%
- \endgroup
-}
+\def\scanmacro#1{\begingroup
+ \newlinechar`\^^M
+ \let\xeatspaces\eatspaces
+ %
+ % Undo catcode changes of \startcontents and \doprintindex
+ % When called from @insertcopying or (short)caption, we need active
+ % backslash to get it printed correctly. Previously, we had
+ % \catcode`\\=\other instead. We'll see whether a problem appears
+ % with macro expansion. --kasal, 19aug04
+ \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+ %
+ % ... and for \example:
+ \spaceisspace
+ %
+ % The \empty here causes a following catcode 5 newline to be eaten as
+ % part of reading whitespace after a control sequence. It does not
+ % eat a catcode 13 newline. There's no good way to handle the two
+ % cases (untried: maybe e-TeX's \everyeof could help, though plain TeX
+ % would then have different behavior). See the Macro Details node in
+ % the manual for the workaround we recommend for macros and
+ % line-oriented commands.
+ %
+ \scantokens{#1\empty}%
+\endgroup}
\def\scanexp#1{%
\edef\temp{\noexpand\scanmacro{#1}}%
@@ -6593,7 +7193,7 @@ end
% This does \let #1 = #2, with \csnames; that is,
% \let \csname#1\endcsname = \csname#2\endcsname
% (except of course we have to play expansion games).
-%
+%
\def\cslet#1#2{%
\expandafter\let
\csname#1\expandafter\endcsname
@@ -6619,17 +7219,18 @@ end
% Macro bodies are absorbed as an argument in a context where
% all characters are catcode 10, 11 or 12, except \ which is active
-% (as in normal texinfo). It is necessary to change the definition of \.
-
+% (as in normal texinfo). It is necessary to change the definition of \
+% to recognize macro arguments; this is the job of \mbodybackslash.
+%
% Non-ASCII encodings make 8-bit characters active, so un-activate
% them to avoid their expansion. Must do this non-globally, to
% confine the change to the current group.
-
+%
% It's necessary to have hard CRs when the macro is executed. This is
-% done by making ^^M (\endlinechar) catcode 12 when reading the macro
+% done by making ^^M (\endlinechar) catcode 12 when reading the macro
% body, and then making it the \newlinechar in \scanmacro.
-
-\def\scanctxt{%
+%
+\def\scanctxt{% used as subroutine
\catcode`\"=\other
\catcode`\+=\other
\catcode`\<=\other
@@ -6642,13 +7243,13 @@ end
\ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
}
-\def\scanargctxt{%
+\def\scanargctxt{% used for copying and captions, not macros.
\scanctxt
\catcode`\\=\other
\catcode`\^^M=\other
}
-\def\macrobodyctxt{%
+\def\macrobodyctxt{% used for @macro definitions
\scanctxt
\catcode`\{=\other
\catcode`\}=\other
@@ -6656,32 +7257,56 @@ end
\usembodybackslash
}
-\def\macroargctxt{%
+\def\macroargctxt{% used when scanning invocations
\scanctxt
- \catcode`\\=\other
+ \catcode`\\=0
}
+% why catcode 0 for \ in the above? To recognize \\ \{ \} as "escapes"
+% for the single characters \ { }. Thus, we end up with the "commands"
+% that would be written @\ @{ @} in a Texinfo document.
+%
+% We already have @{ and @}. For @\, we define it here, and only for
+% this purpose, to produce a typewriter backslash (so, the @\ that we
+% define for @math can't be used with @macro calls):
+%
+\def\\{\normalbackslash}%
+%
+% We would like to do this for \, too, since that is what makeinfo does.
+% But it is not possible, because Texinfo already has a command @, for a
+% cedilla accent. Documents must use @comma{} instead.
+%
+% \anythingelse will almost certainly be an error of some kind.
+
% \mbodybackslash is the definition of \ in @macro bodies.
% It maps \foo\ => \csname macarg.foo\endcsname => #N
% where N is the macro parameter number.
% We define \csname macarg.\endcsname to be \realbackslash, so
% \\ in macro replacement text gets you a backslash.
-
+%
{\catcode`@=0 @catcode`@\=@active
@gdef@usembodybackslash{@let\=@mbodybackslash}
@gdef@mbodybackslash#1\{@csname macarg.#1@endcsname}
}
\expandafter\def\csname macarg.\endcsname{\realbackslash}
+\def\margbackslash#1{\char`\#1 }
+
\def\macro{\recursivefalse\parsearg\macroxxx}
\def\rmacro{\recursivetrue\parsearg\macroxxx}
\def\macroxxx#1{%
- \getargs{#1}% now \macname is the macname and \argl the arglist
+ \getargs{#1}% now \macname is the macname and \argl the arglist
\ifx\argl\empty % no arguments
- \paramno=0%
+ \paramno=0\relax
\else
\expandafter\parsemargdef \argl;%
+ \if\paramno>256\relax
+ \ifx\eTeXversion\thisisundefined
+ \errhelp = \EMsimple
+ \errmessage{You need eTeX to compile a file with macros with more than 256 arguments}
+ \fi
+ \fi
\fi
\if1\csname ismacro.\the\macname\endcsname
\message{Warning: redefining \the\macname}%
@@ -6728,46 +7353,269 @@ end
% an opening brace, and that opening brace is not consumed.
\def\getargs#1{\getargsxxx#1{}}
\def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
-\def\getmacname #1 #2\relax{\macname={#1}}
+\def\getmacname#1 #2\relax{\macname={#1}}
\def\getmacargs#1{\def\argl{#1}}
+% For macro processing make @ a letter so that we can make Texinfo private macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
% Parse the optional {params} list. Set up \paramno and \paramlist
-% so \defmacro knows what to do. Define \macarg.blah for each blah
-% in the params list, to be ##N where N is the position in that list.
+% so \defmacro knows what to do. Define \macarg.BLAH for each BLAH
+% in the params list to some hook where the argument si to be expanded. If
+% there are less than 10 arguments that hook is to be replaced by ##N where N
+% is the position in that list, that is to say the macro arguments are to be
+% defined `a la TeX in the macro body.
+%
% That gets used by \mbodybackslash (above).
-
+%
% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
+% The technique used is stolen from LaTeX: let \hash be something
% unexpandable, insert that wherever you need a #, and then redefine
% it to # just before using the token list produced.
%
% The same technique is used to protect \eatspaces till just before
% the macro is used.
-
-\def\parsemargdef#1;{\paramno=0\def\paramlist{}%
- \let\hash\relax\let\xeatspaces\relax\parsemargdefxxx#1,;,}
+%
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime underwhich the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, you need that no macro has more than 256 arguments, otherwise an
+% error is produced.
+\def\parsemargdef#1;{%
+ \paramno=0\def\paramlist{}%
+ \let\hash\relax
+ \let\xeatspaces\relax
+ \parsemargdefxxx#1,;,%
+ % In case that there are 10 or more arguments we parse again the arguments
+ % list to set new definitions for the \macarg.BLAH macros corresponding to
+ % each BLAH argument. It was anyhow needed to parse already once this list
+ % in order to count the arguments, and as macros with at most 9 arguments
+ % are by far more frequent than macro with 10 or more arguments, defining
+ % twice the \macarg.BLAH macros does not cost too much processing power.
+ \ifnum\paramno<10\relax\else
+ \paramno0\relax
+ \parsemmanyargdef@@#1,;,% 10 or more arguments
+ \fi
+}
\def\parsemargdefxxx#1,{%
\if#1;\let\next=\relax
\else \let\next=\parsemargdefxxx
- \advance\paramno by 1%
+ \advance\paramno by 1
\expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
{\xeatspaces{\hash\the\paramno}}%
\edef\paramlist{\paramlist\hash\the\paramno,}%
\fi\next}
+\def\parsemmanyargdef@@#1,{%
+ \if#1;\let\next=\relax
+ \else
+ \let\next=\parsemmanyargdef@@
+ \edef\tempb{\eatspaces{#1}}%
+ \expandafter\def\expandafter\tempa
+ \expandafter{\csname macarg.\tempb\endcsname}%
+ % Note that we need some extra \noexpand\noexpand, this is because we
+ % don't want \the to be expanded in the \parsermacbody as it uses an
+ % \xdef .
+ \expandafter\edef\tempa
+ {\noexpand\noexpand\noexpand\the\toks\the\paramno}%
+ \advance\paramno by 1\relax
+ \fi\next}
+
% These two commands read recursive and nonrecursive macro bodies.
% (They're different since rec and nonrec macros end differently.)
+%
+\catcode `\@\texiatcatcode
\long\def\parsemacbody#1@end macro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
\long\def\parsermacbody#1@end rmacro%
{\xdef\temp{\eatcr{#1}}\endgroup\defmacro}%
+\catcode `\@=11\relax
+
+\let\endargs@\relax
+\let\nil@\relax
+\def\nilm@{\nil@}%
+\long\def\nillm@{\nil@}%
+
+% This macro is expanded during the Texinfo macro expansion, not during its
+% definition. It gets all the arguments values and assigns them to macros
+% macarg.ARGNAME
+%
+% #1 is the macro name
+% #2 is the list of argument names
+% #3 is the list of argument values
+\def\getargvals@#1#2#3{%
+ \def\macargdeflist@{}%
+ \def\saveparamlist@{#2}% Need to keep a copy for parameter expansion.
+ \def\paramlist{#2,\nil@}%
+ \def\macroname{#1}%
+ \begingroup
+ \macroargctxt
+ \def\argvaluelist{#3,\nil@}%
+ \def\@tempa{#3}%
+ \ifx\@tempa\empty
+ \setemptyargvalues@
+ \else
+ \getargvals@@
+ \fi
+}
+
+%
+\def\getargvals@@{%
+ \ifx\paramlist\nilm@
+ % Some sanity check needed here that \argvaluelist is also empty.
+ \ifx\argvaluelist\nillm@
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Too many arguments in macro `\macroname'!}%
+ \fi
+ \let\next\macargexpandinbody@
+ \else
+ \ifx\argvaluelist\nillm@
+ % No more arguments values passed to macro. Set remaining named-arg
+ % macros to empty.
+ \let\next\setemptyargvalues@
+ \else
+ % pop current arg name into \@tempb
+ \def\@tempa##1{\pop@{\@tempb}{\paramlist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\paramlist}%
+ % pop current argument value into \@tempc
+ \def\@tempa##1{\longpop@{\@tempc}{\argvaluelist}##1\endargs@}%
+ \expandafter\@tempa\expandafter{\argvaluelist}%
+ % Here \@tempb is the current arg name and \@tempc is the current arg value.
+ % First place the new argument macro definition into \@tempd
+ \expandafter\macname\expandafter{\@tempc}%
+ \expandafter\let\csname macarg.\@tempb\endcsname\relax
+ \expandafter\def\expandafter\@tempe\expandafter{%
+ \csname macarg.\@tempb\endcsname}%
+ \edef\@tempd{\long\def\@tempe{\the\macname}}%
+ \push@\@tempd\macargdeflist@
+ \let\next\getargvals@@
+ \fi
+ \fi
+ \next
+}
+
+\def\push@#1#2{%
+ \expandafter\expandafter\expandafter\def
+ \expandafter\expandafter\expandafter#2%
+ \expandafter\expandafter\expandafter{%
+ \expandafter#1#2}%
+}
+
+% Replace arguments by their values in the macro body, and place the result
+% in macro \@tempa
+\def\macvalstoargs@{%
+ % To do this we use the property that token registers that are \the'ed
+ % within an \edef expand only once. So we are going to place all argument
+ % values into respective token registers.
+ %
+ % First we save the token context, and initialize argument numbering.
+ \begingroup
+ \paramno0\relax
+ % Then, for each argument number #N, we place the corresponding argument
+ % value into a new token list register \toks#N
+ \expandafter\putargsintokens@\saveparamlist@,;,%
+ % Then, we expand the body so that argument are replaced by their
+ % values. The trick for values not to be expanded themselves is that they
+ % are within tokens and that tokens expand only once in an \edef .
+ \edef\@tempc{\csname mac.\macroname .body\endcsname}%
+ % Now we restore the token stack pointer to free the token list registers
+ % which we have used, but we make sure that expanded body is saved after
+ % group.
+ \expandafter
+ \endgroup
+ \expandafter\def\expandafter\@tempa\expandafter{\@tempc}%
+ }
-% This defines the macro itself. There are six cases: recursive and
-% nonrecursive macros of zero, one, and many arguments.
+\def\macargexpandinbody@{%
+ %% Define the named-macro outside of this group and then close this group.
+ \expandafter
+ \endgroup
+ \macargdeflist@
+ % First the replace in body the macro arguments by their values, the result
+ % is in \@tempa .
+ \macvalstoargs@
+ % Then we point at the \norecurse or \gobble (for recursive) macro value
+ % with \@tempb .
+ \expandafter\let\expandafter\@tempb\csname mac.\macroname .recurse\endcsname
+ % Depending on whether it is recursive or not, we need some tailing
+ % \egroup .
+ \ifx\@tempb\gobble
+ \let\@tempc\relax
+ \else
+ \let\@tempc\egroup
+ \fi
+ % And now we do the real job:
+ \edef\@tempd{\noexpand\@tempb{\macroname}\noexpand\scanmacro{\@tempa}\@tempc}%
+ \@tempd
+}
+
+\def\putargsintokens@#1,{%
+ \if#1;\let\next\relax
+ \else
+ \let\next\putargsintokens@
+ % First we allocate the new token list register, and give it a temporary
+ % alias \@tempb .
+ \toksdef\@tempb\the\paramno
+ % Then we place the argument value into that token list register.
+ \expandafter\let\expandafter\@tempa\csname macarg.#1\endcsname
+ \expandafter\@tempb\expandafter{\@tempa}%
+ \advance\paramno by 1\relax
+ \fi
+ \next
+}
+
+% Save the token stack pointer into macro #1
+\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
+% Restore the token stack pointer from number in macro #1
+\def\texirestoretoksstackpoint#1{\expandafter\mathchardef\expandafter\@cclvi#1\relax}
+% newtoks that can be used non \outer .
+\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
+
+% Tailing missing arguments are set to empty
+\def\setemptyargvalues@{%
+ \ifx\paramlist\nilm@
+ \let\next\macargexpandinbody@
+ \else
+ \expandafter\setemptyargvaluesparser@\paramlist\endargs@
+ \let\next\setemptyargvalues@
+ \fi
+ \next
+}
+
+\def\setemptyargvaluesparser@#1,#2\endargs@{%
+ \expandafter\def\expandafter\@tempa\expandafter{%
+ \expandafter\def\csname macarg.#1\endcsname{}}%
+ \push@\@tempa\macargdeflist@
+ \def\paramlist{#2}%
+}
+
+% #1 is the element target macro
+% #2 is the list macro
+% #3,#4\endargs@ is the list value
+\def\pop@#1#2#3,#4\endargs@{%
+ \def#1{#3}%
+ \def#2{#4}%
+}
+\long\def\longpop@#1#2#3,#4\endargs@{%
+ \long\def#1{#3}%
+ \long\def#2{#4}%
+}
+
+% This defines a Texinfo @macro. There are eight cases: recursive and
+% nonrecursive macros of zero, one, up to nine, and many arguments.
% Much magic with \expandafter here.
% \xdef is used so that macro definitions will survive the file
% they're defined in; @include reads the file inside a group.
+%
\def\defmacro{%
\let\hash=##% convert placeholders to macro parameter chars
\ifrecursive
@@ -6782,17 +7630,25 @@ end
\expandafter\noexpand\csname\the\macname xxx\endcsname}%
\expandafter\xdef\csname\the\macname xxx\endcsname##1{%
\egroup\noexpand\scanmacro{\temp}}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else
+ \ifnum\paramno<10\relax % at most 9
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+ \else % 10 or more
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
+ \fi
\fi
\else
\ifcase\paramno
@@ -6809,29 +7665,40 @@ end
\egroup
\noexpand\norecurse{\the\macname}%
\noexpand\scanmacro{\temp}\egroup}%
- \else % many
- \expandafter\xdef\csname\the\macname\endcsname{%
- \bgroup\noexpand\macroargctxt
- \expandafter\noexpand\csname\the\macname xx\endcsname}%
- \expandafter\xdef\csname\the\macname xx\endcsname##1{%
- \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
- \expandafter\expandafter
- \expandafter\xdef
- \expandafter\expandafter
- \csname\the\macname xxx\endcsname
- \paramlist{%
- \egroup
- \noexpand\norecurse{\the\macname}%
- \noexpand\scanmacro{\temp}\egroup}%
+ \else % at most 9
+ \ifnum\paramno<10\relax
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \bgroup\noexpand\macroargctxt
+ \expandafter\noexpand\csname\the\macname xx\endcsname}%
+ \expandafter\xdef\csname\the\macname xx\endcsname##1{%
+ \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+ \expandafter\expandafter
+ \expandafter\xdef
+ \expandafter\expandafter
+ \csname\the\macname xxx\endcsname
+ \paramlist{%
+ \egroup
+ \noexpand\norecurse{\the\macname}%
+ \noexpand\scanmacro{\temp}\egroup}%
+ \else % 10 or more:
+ \expandafter\xdef\csname\the\macname\endcsname{%
+ \noexpand\getargvals@{\the\macname}{\argl}%
+ }%
+ \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+ \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
+ \fi
\fi
\fi}
+\catcode `\@\texiatcatcode\relax
+
\def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
% \braceorline decides whether the next nonwhitespace character is a
% {. If so it reads up to the closing }, if not, it reads the whole
% line. Whatever was read is then fed to the next control sequence
-% as an argument (by \parsebrace or \parsearg)
+% as an argument (by \parsebrace or \parsearg).
+%
\def\braceorline#1{\let\macnamexxx=#1\futurelet\nchar\braceorlinexxx}
\def\braceorlinexxx{%
\ifx\nchar\bgroup\else
@@ -6841,7 +7708,8 @@ end
% @alias.
% We need some trickery to remove the optional spaces around the equal
-% sign. Just make them active and then expand them all to nothing.
+% sign. Make them active and then expand them all to nothing.
+%
\def\alias{\parseargusing\obeyspaces\aliasxxx}
\def\aliasxxx #1{\aliasyyy#1\relax}
\def\aliasyyy #1=#2\relax{%
@@ -6862,7 +7730,8 @@ end
% @inforef is relatively simple.
\def\inforef #1{\inforefzzz #1,,,,**}
-\def\inforefzzz #1,#2,#3,#4**{\putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
+\def\inforefzzz #1,#2,#3,#4**{%
+ \putwordSee{} \putwordInfo{} \putwordfile{} \file{\ignorespaces #3{}},
node \samp{\ignorespaces#1{}}}
% @node's only job in TeX is to define \lastnode, which is used in
@@ -6923,11 +7792,32 @@ end
\toks0 = \expandafter{\lastsection}%
\immediate \writexrdef{title}{\the\toks0 }%
\immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
- \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, at \shipout
}%
\fi
}
+% @xrefautosectiontitle on|off says whether @section(ing) names are used
+% automatically in xrefs, if the third arg is not explicitly specified.
+% This was provided as a "secret" @set xref-automatic-section-title
+% variable, now it's official.
+%
+\parseargdef\xrefautomaticsectiontitle{%
+ \def\temp{#1}%
+ \ifx\temp\onword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \empty
+ \else\ifx\temp\offword
+ \expandafter\let\csname SETxref-automatic-section-title\endcsname
+ = \relax
+ \else
+ \errhelp = \EMsimple
+ \errmessage{Unknown @xrefautomaticsectiontitle value `\temp',
+ must be on|off}%
+ \fi\fi
+}
+
+%
% @xref, @pxref, and @ref generate cross-references. For \xrefX, #1 is
% the node name, #2 the name of the Info cross-reference, #3 the printed
% node name, #4 the name of the Info file, #5 the name of the printed
@@ -6936,26 +7826,41 @@ end
\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
\def\ref#1{\xrefX[#1,,,,,,,]}
+%
+\newbox\toprefbox
+\newbox\printedrefnamebox
+\newbox\infofilenamebox
+\newbox\printedmanualbox
+%
\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup
\unsepspaces
- \def\printedmanual{\ignorespaces #5}%
+ %
+ % Get args without leading/trailing spaces.
\def\printedrefname{\ignorespaces #3}%
- \setbox1=\hbox{\printedmanual\unskip}%
- \setbox0=\hbox{\printedrefname\unskip}%
- \ifdim \wd0 = 0pt
+ \setbox\printedrefnamebox = \hbox{\printedrefname\unskip}%
+ %
+ \def\infofilename{\ignorespaces #4}%
+ \setbox\infofilenamebox = \hbox{\infofilename\unskip}%
+ %
+ \def\printedmanual{\ignorespaces #5}%
+ \setbox\printedmanualbox = \hbox{\printedmanual\unskip}%
+ %
+ % If the printed reference name (arg #3) was not explicitly given in
+ % the @xref, figure out what we want to use.
+ \ifdim \wd\printedrefnamebox = 0pt
% No printed node name was explicitly given.
- \expandafter\ifx\csname SETxref-automatic-section-title\endcsname\relax
- % Use the node name inside the square brackets.
+ \expandafter\ifx\csname SETxref-automatic-section-title\endcsname \relax
+ % Not auto section-title: use node name inside the square brackets.
\def\printedrefname{\ignorespaces #1}%
\else
- % Use the actual chapter/section title appear inside
- % the square brackets. Use the real section title if we have it.
- \ifdim \wd1 > 0pt
- % It is in another manual, so we don't have it.
+ % Auto section-title: use chapter/section title inside
+ % the square brackets if we have it.
+ \ifdim \wd\printedmanualbox > 0pt
+ % It is in another manual, so we don't have it; use node name.
\def\printedrefname{\ignorespaces #1}%
\else
\ifhavexrefs
- % We know the real title if we have the xref values.
+ % We (should) know the real title if we have the xref values.
\def\printedrefname{\refx{#1-title}{}}%
\else
% Otherwise just copy the Info node name.
@@ -6969,13 +7874,20 @@ end
\ifpdf
{\indexnofonts
\turnoffactive
+ \makevalueexpandable
% This expands tokens, so do it after making catcode changes, so _
- % etc. don't get their TeX definitions.
+ % etc. don't get their TeX definitions. This ignores all spaces in
+ % #4, including (wrongly) those in the middle of the filename.
\getfilename{#4}%
%
- % See comments at \activebackslashdouble.
- {\activebackslashdouble \xdef\pdfxrefdest{#1}%
- \backslashparens\pdfxrefdest}%
+ % This (wrongly) does not take account of leading or trailing
+ % spaces in #1, which should be ignored.
+ \edef\pdfxrefdest{#1}%
+ \ifx\pdfxrefdest\empty
+ \def\pdfxrefdest{Top}% no empty targets
+ \else
+ \txiescapepdf\pdfxrefdest % escape PDF special chars
+ \fi
%
\leavevmode
\startlink attr{/Border [0 0 0]}%
@@ -7002,29 +7914,42 @@ end
\iffloat\Xthisreftitle
% If the user specified the print name (third arg) to the ref,
% print it instead of our usual "Figure 1.2".
- \ifdim\wd0 = 0pt
+ \ifdim\wd\printedrefnamebox = 0pt
\refx{#1-snt}{}%
\else
\printedrefname
\fi
%
- % if the user also gave the printed manual name (fifth arg), append
+ % If the user also gave the printed manual name (fifth arg), append
% "in MANUALNAME".
- \ifdim \wd1 > 0pt
+ \ifdim \wd\printedmanualbox > 0pt
\space \putwordin{} \cite{\printedmanual}%
\fi
\else
% node/anchor (non-float) references.
+ %
+ % If we use \unhbox to print the node names, TeX does not insert
+ % empty discretionaries after hyphens, which means that it will not
+ % find a line break at a hyphen in a node names. Since some manuals
+ % are best written with fairly long node names, containing hyphens,
+ % this is a loss. Therefore, we give the text of the node name
+ % again, so it is as if TeX is seeing it for the first time.
+ %
+ \ifdim \wd\printedmanualbox > 0pt
+ % Cross-manual reference with a printed manual name.
+ %
+ \crossmanualxref{\cite{\printedmanual\unskip}}%
+ %
+ \else\ifdim \wd\infofilenamebox > 0pt
+ % Cross-manual reference with only an info filename (arg 4), no
+ % printed manual name (arg 5). This is essentially the same as
+ % the case above; we output the filename, since we have nothing else.
+ %
+ \crossmanualxref{\code{\infofilename\unskip}}%
%
- % If we use \unhbox0 and \unhbox1 to print the node names, TeX does not
- % insert empty discretionaries after hyphens, which means that it will
- % not find a line break at a hyphen in a node names. Since some manuals
- % are best written with fairly long node names, containing hyphens, this
- % is a loss. Therefore, we give the text of the node name again, so it
- % is as if TeX is seeing it for the first time.
- \ifdim \wd1 > 0pt
- \putwordSection{} ``\printedrefname'' \putwordin{} \cite{\printedmanual}%
\else
+ % Reference within this manual.
+ %
% _ (for example) has to be the character _ for the purposes of the
% control sequence corresponding to the node, but it has to expand
% into the usual \leavevmode...\vrule stuff for purposes of
@@ -7036,7 +7961,7 @@ end
\setbox2 = \hbox{\ignorespaces \refx{#1-snt}{}}%
\ifdim \wd2 > 0pt \refx{#1-snt}\space\fi
}%
- % output the `[mynode]' via a macro so it can be overridden.
+ % output the `[mynode]' via the macro below so it can be overridden.
\xrefprintnodename\printedrefname
%
% But we always want a comma and a space:
@@ -7044,11 +7969,37 @@ end
%
% output the `page 3'.
\turnoffactive \putwordpage\tie\refx{#1-pg}{}%
- \fi
+ \fi\fi
\fi
\endlink
\endgroup}
+% Output a cross-manual xref to #1. Used just above (twice).
+%
+% Only include the text "Section ``foo'' in" if the foo is neither
+% missing or Top. Thus, @xref{,,,foo,The Foo Manual} outputs simply
+% "see The Foo Manual", the idea being to refer to the whole manual.
+%
+% But, this being TeX, we can't easily compare our node name against the
+% string "Top" while ignoring the possible spaces before and after in
+% the input. By adding the arbitrary 7sp below, we make it much less
+% likely that a real node name would have the same width as "Top" (e.g.,
+% in a monospaced font). Hopefully it will never happen in practice.
+%
+% For the same basic reason, we retypeset the "Top" at every
+% reference, since the current font is indeterminate.
+%
+\def\crossmanualxref#1{%
+ \setbox\toprefbox = \hbox{Top\kern7sp}%
+ \setbox2 = \hbox{\ignorespaces \printedrefname \unskip \kern7sp}%
+ \ifdim \wd2 > 7sp % nonempty?
+ \ifdim \wd2 = \wd\toprefbox \else % same as Top?
+ \putwordSection{} ``\printedrefname'' \putwordin{}\space
+ \fi
+ \fi
+ #1%
+}
+
% This macro is called from \xrefX for the `[nodename]' part of xref
% output. It's a separate macro only so it can be changed more easily,
% since square brackets don't work well in some documents. Particularly
@@ -7099,7 +8050,8 @@ end
\angleleft un\-de\-fined\angleright
\iflinks
\ifhavexrefs
- \message{\linenumber Undefined cross reference `#1'.}%
+ {\toks0 = {#1}% avoid expansion of possibly-complex value
+ \message{\linenumber Undefined cross reference `\the\toks0'.}}%
\else
\ifwarnedxrefs\else
\global\warnedxrefstrue
@@ -7263,7 +8215,7 @@ end
% space to prevent strange expansion errors.)
\def\supereject{\par\penalty -20000\footnoteno =0 }
-% @footnotestyle is meaningful for info output only.
+% @footnotestyle is meaningful for Info output only.
\let\footnotestyle=\comment
{\catcode `\@=11
@@ -7326,6 +8278,8 @@ end
% expands into a box, it must come within the paragraph, lest it
% provide a place where TeX can split the footnote.
\footstrut
+ %
+ % Invoke rest of plain TeX footnote routine.
\futurelet\next\fo@t
}
}%end \catcode `\@=11
@@ -7333,7 +8287,7 @@ end
% In case a @footnote appears in a vbox, save the footnote text and create
% the real \insert just after the vbox finished. Otherwise, the insertion
% would be lost.
-% Similarily, if a @footnote appears inside an alignment, save the footnote
+% Similarly, if a @footnote appears inside an alignment, save the footnote
% text to a box and make the \insert when a row of the table is finished.
% And the same can be done for other insert classes. --kasal, 16nov03.
@@ -7413,7 +8367,7 @@ end
it from ftp://tug.org/tex/epsf.tex.}
%
\def\image#1{%
- \ifx\epsfbox\undefined
+ \ifx\epsfbox\thisisundefined
\ifwarnednoepsf \else
\errhelp = \noepsfhelp
\errmessage{epsf.tex not found, images will be ignored}%
@@ -7429,7 +8383,7 @@ end
% #2 is (optional) width, #3 is (optional) height.
% #4 is (ignored optional) html alt text.
% #5 is (ignored optional) extension.
-% #6 is just the usual extra ignored arg for parsing this stuff.
+% #6 is just the usual extra ignored arg for parsing stuff.
\newif\ifimagevmode
\def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
\catcode`\^^M = 5 % in case we're inside an example
@@ -7437,15 +8391,30 @@ end
% If the image is by itself, center it.
\ifvmode
\imagevmodetrue
- \nobreak\bigskip
+ \else \ifx\centersub\centerV
+ % for @center @image, we need a vbox so we can have our vertical space
+ \imagevmodetrue
+ \vbox\bgroup % vbox has better behavior than vtop herev
+ \fi\fi
+ %
+ \ifimagevmode
+ \nobreak\medskip
% Usually we'll have text after the image which will insert
% \parskip glue, so insert it here too to equalize the space
% above and below.
\nobreak\vskip\parskip
\nobreak
- \line\bgroup
\fi
%
+ % Leave vertical mode so that indentation from an enclosing
+ % environment such as @quotation is respected.
+ % However, if we're at the top level, we don't want the
+ % normal paragraph indentation.
+ % On the other hand, if we are in the case of @center @image, we don't
+ % want to start a paragraph, which will create a hsize-width box and
+ % eradicate the centering.
+ \ifx\centersub\centerV\else \noindent \fi
+ %
% Output the image.
\ifpdf
\dopdfimage{#1}{#2}{#3}%
@@ -7456,7 +8425,10 @@ end
\epsfbox{#1.eps}%
\fi
%
- \ifimagevmode \egroup \bigbreak \fi % space after the image
+ \ifimagevmode
+ \medskip % space after a standalone image
+ \fi
+ \ifx\centersub\centerV \egroup \fi
\endgroup}
@@ -7728,10 +8700,9 @@ end
\message{localization,}
-% @documentlanguage is usually given very early, just after
-% @setfilename. If done too late, it may not override everything
-% properly. Single argument is the language (de) or locale (de_DE)
-% abbreviation. It would be nice if we could set up a hyphenation file.
+% For single-language documents, @documentlanguage is usually given very
+% early, just after @documentencoding. Single argument is the language
+% (de) or locale (de_DE) abbreviation.
%
{
\catcode`\_ = \active
@@ -7744,31 +8715,60 @@ end
\ifeof 1
\documentlanguagetrywithoutunderscore{#1_\finish}%
\else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
\input txi-#1.tex
\fi
\closein 1
- \endgroup
+ \endgroup % end raw TeX
\endgroup}
-}
%
% If they passed de_DE, and txi-de_DE.tex doesn't exist,
% try txi-de.tex.
-%
-\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+%
+\gdef\documentlanguagetrywithoutunderscore#1_#2\finish{%
\openin 1 txi-#1.tex
\ifeof 1
\errhelp = \nolanghelp
\errmessage{Cannot read language file txi-#1.tex}%
\else
+ \globaldefs = 1 % everything in the txi-LL files needs to persist
\input txi-#1.tex
\fi
\closein 1
}
+}% end of special _ catcode
%
\newhelp\nolanghelp{The given language definition file cannot be found or
-is empty. Maybe you need to install it? In the current directory
-should work if nowhere else does.}
+is empty. Maybe you need to install it? Putting it in the current
+directory should work if nowhere else does.}
+
+% This macro is called from txi-??.tex files; the first argument is the
+% \language name to set (without the "\lang@" prefix), the second and
+% third args are \{left,right}hyphenmin.
+%
+% The language names to pass are determined when the format is built.
+% See the etex.log file created at that time, e.g.,
+% /usr/local/texlive/2008/texmf-var/web2c/pdftex/etex.log.
+%
+% With TeX Live 2008, etex now includes hyphenation patterns for all
+% available languages. This means we can support hyphenation in
+% Texinfo, at least to some extent. (This still doesn't solve the
+% accented characters problem.)
+%
+\catcode`@=11
+\def\txisetlanguage#1#2#3{%
+ % do not set the language if the name is undefined in the current TeX.
+ \expandafter\ifx\csname lang@#1\endcsname \relax
+ \message{no patterns for #1}%
+ \else
+ \global\language = \csname lang@#1\endcsname
+ \fi
+ % but there is no harm in adjusting the hyphenmin values regardless.
+ \global\lefthyphenmin = #2\relax
+ \global\righthyphenmin = #3\relax
+}
+% Helpers for encodings.
% Set the catcode of characters 128 through 255 to the specified number.
%
\def\setnonasciicharscatcode#1{%
@@ -7809,7 +8809,7 @@ should work if nowhere else does.}
\setnonasciicharscatcode\active
\lattwochardefs
%
- \else \ifx \declaredencoding \latone
+ \else \ifx \declaredencoding \latone
\setnonasciicharscatcode\active
\latonechardefs
%
@@ -7821,7 +8821,7 @@ should work if nowhere else does.}
\setnonasciicharscatcode\active
\utfeightchardefs
%
- \else
+ \else
\message{Unknown document encoding #1, ignoring.}%
%
\fi % utfeight
@@ -7833,7 +8833,7 @@ should work if nowhere else does.}
% A message to be logged when using a character that isn't available
% the default font encoding (OT1).
-%
+%
\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
% Take account of \c (plain) vs. \, (Texinfo) difference.
@@ -7846,21 +8846,21 @@ should work if nowhere else does.}
%
% Latin1 (ISO-8859-1) character definitions.
\def\latonechardefs{%
- \gdef^^a0{~}
+ \gdef^^a0{\tie}
\gdef^^a1{\exclamdown}
- \gdef^^a2{\missingcharmsg{CENT SIGN}}
+ \gdef^^a2{\missingcharmsg{CENT SIGN}}
\gdef^^a3{{\pounds}}
\gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
\gdef^^a5{\missingcharmsg{YEN SIGN}}
- \gdef^^a6{\missingcharmsg{BROKEN BAR}}
+ \gdef^^a6{\missingcharmsg{BROKEN BAR}}
\gdef^^a7{\S}
- \gdef^^a8{\"{}}
- \gdef^^a9{\copyright}
+ \gdef^^a8{\"{}}
+ \gdef^^a9{\copyright}
\gdef^^aa{\ordf}
- \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^ab{\guillemetleft}
\gdef^^ac{$\lnot$}
- \gdef^^ad{\-}
- \gdef^^ae{\registeredsymbol}
+ \gdef^^ad{\-}
+ \gdef^^ae{\registeredsymbol}
\gdef^^af{\={}}
%
\gdef^^b0{\textdegree}
@@ -7876,7 +8876,7 @@ should work if nowhere else does.}
\gdef^^b9{$^1$}
\gdef^^ba{\ordm}
%
- \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \gdef^^bb{\guillemetright}
\gdef^^bc{$1\over4$}
\gdef^^bd{$1\over2$}
\gdef^^be{$3\over4$}
@@ -7887,7 +8887,7 @@ should work if nowhere else does.}
\gdef^^c2{\^A}
\gdef^^c3{\~A}
\gdef^^c4{\"A}
- \gdef^^c5{\ringaccent A}
+ \gdef^^c5{\ringaccent A}
\gdef^^c6{\AE}
\gdef^^c7{\cedilla C}
\gdef^^c8{\`E}
@@ -7899,7 +8899,7 @@ should work if nowhere else does.}
\gdef^^ce{\^I}
\gdef^^cf{\"I}
%
- \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+ \gdef^^d0{\DH}
\gdef^^d1{\~N}
\gdef^^d2{\`O}
\gdef^^d3{\'O}
@@ -7913,7 +8913,7 @@ should work if nowhere else does.}
\gdef^^db{\^U}
\gdef^^dc{\"U}
\gdef^^dd{\'Y}
- \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+ \gdef^^de{\TH}
\gdef^^df{\ss}
%
\gdef^^e0{\`a}
@@ -7933,7 +8933,7 @@ should work if nowhere else does.}
\gdef^^ee{\^{\dotless i}}
\gdef^^ef{\"{\dotless i}}
%
- \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+ \gdef^^f0{\dh}
\gdef^^f1{\~n}
\gdef^^f2{\`o}
\gdef^^f3{\'o}
@@ -7947,7 +8947,7 @@ should work if nowhere else does.}
\gdef^^fb{\^u}
\gdef^^fc{\"u}
\gdef^^fd{\'y}
- \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+ \gdef^^fe{\th}
\gdef^^ff{\"y}
}
@@ -7968,8 +8968,8 @@ should work if nowhere else does.}
% Latin2 (ISO-8859-2) character definitions.
\def\lattwochardefs{%
- \gdef^^a0{~}
- \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+ \gdef^^a0{\tie}
+ \gdef^^a1{\ogonek{A}}
\gdef^^a2{\u{}}
\gdef^^a3{\L}
\gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
@@ -7986,8 +8986,8 @@ should work if nowhere else does.}
\gdef^^af{\dotaccent Z}
%
\gdef^^b0{\textdegree}
- \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
- \gdef^^b2{\missingcharmsg{OGONEK}}
+ \gdef^^b1{\ogonek{a}}
+ \gdef^^b2{\ogonek{ }}
\gdef^^b3{\l}
\gdef^^b4{\'{}}
\gdef^^b5{\v l}
@@ -8012,14 +9012,14 @@ should work if nowhere else does.}
\gdef^^c7{\cedilla C}
\gdef^^c8{\v C}
\gdef^^c9{\'E}
- \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+ \gdef^^ca{\ogonek{E}}
\gdef^^cb{\"E}
\gdef^^cc{\v E}
\gdef^^cd{\'I}
\gdef^^ce{\^I}
\gdef^^cf{\v D}
%
- \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+ \gdef^^d0{\DH}
\gdef^^d1{\'N}
\gdef^^d2{\v N}
\gdef^^d3{\'O}
@@ -8028,7 +9028,7 @@ should work if nowhere else does.}
\gdef^^d6{\"O}
\gdef^^d7{$\times$}
\gdef^^d8{\v R}
- \gdef^^d9{\ringaccent U}
+ \gdef^^d9{\ringaccent U}
\gdef^^da{\'U}
\gdef^^db{\H U}
\gdef^^dc{\"U}
@@ -8046,14 +9046,14 @@ should work if nowhere else does.}
\gdef^^e7{\cedilla c}
\gdef^^e8{\v c}
\gdef^^e9{\'e}
- \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+ \gdef^^ea{\ogonek{e}}
\gdef^^eb{\"e}
\gdef^^ec{\v e}
- \gdef^^ed{\'\i}
- \gdef^^ee{\^\i}
+ \gdef^^ed{\'{\dotless{i}}}
+ \gdef^^ee{\^{\dotless{i}}}
\gdef^^ef{\v d}
%
- \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+ \gdef^^f0{\dh}
\gdef^^f1{\'n}
\gdef^^f2{\v n}
\gdef^^f3{\'o}
@@ -8072,11 +9072,11 @@ should work if nowhere else does.}
}
% UTF-8 character definitions.
-%
+%
% This code to support UTF-8 is based on LaTeX's utf8.def, with some
% changes for Texinfo conventions. It is included here under the GPL by
% permission from Frank Mittelbach and the LaTeX team.
-%
+%
\newcount\countUTFx
\newcount\countUTFy
\newcount\countUTFz
@@ -8141,7 +9141,7 @@ should work if nowhere else does.}
\gdef\DeclareUnicodeCharacter#1#2{%
\countUTFz = "#1\relax
- \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+ %\wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
\begingroup
\parseXMLCharref
\def\UTFviiiTwoOctets##1##2{%
@@ -8226,6 +9226,7 @@ should work if nowhere else does.}
\DeclareUnicodeCharacter{00CE}{\^I}
\DeclareUnicodeCharacter{00CF}{\"I}
+ \DeclareUnicodeCharacter{00D0}{\DH}
\DeclareUnicodeCharacter{00D1}{\~N}
\DeclareUnicodeCharacter{00D2}{\`O}
\DeclareUnicodeCharacter{00D3}{\'O}
@@ -8238,6 +9239,7 @@ should work if nowhere else does.}
\DeclareUnicodeCharacter{00DB}{\^U}
\DeclareUnicodeCharacter{00DC}{\"U}
\DeclareUnicodeCharacter{00DD}{\'Y}
+ \DeclareUnicodeCharacter{00DE}{\TH}
\DeclareUnicodeCharacter{00DF}{\ss}
\DeclareUnicodeCharacter{00E0}{\`a}
@@ -8257,6 +9259,7 @@ should work if nowhere else does.}
\DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
\DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+ \DeclareUnicodeCharacter{00F0}{\dh}
\DeclareUnicodeCharacter{00F1}{\~n}
\DeclareUnicodeCharacter{00F2}{\`o}
\DeclareUnicodeCharacter{00F3}{\'o}
@@ -8269,16 +9272,21 @@ should work if nowhere else does.}
\DeclareUnicodeCharacter{00FB}{\^u}
\DeclareUnicodeCharacter{00FC}{\"u}
\DeclareUnicodeCharacter{00FD}{\'y}
+ \DeclareUnicodeCharacter{00FE}{\th}
\DeclareUnicodeCharacter{00FF}{\"y}
\DeclareUnicodeCharacter{0100}{\=A}
\DeclareUnicodeCharacter{0101}{\=a}
\DeclareUnicodeCharacter{0102}{\u{A}}
\DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0104}{\ogonek{A}}
+ \DeclareUnicodeCharacter{0105}{\ogonek{a}}
\DeclareUnicodeCharacter{0106}{\'C}
\DeclareUnicodeCharacter{0107}{\'c}
\DeclareUnicodeCharacter{0108}{\^C}
\DeclareUnicodeCharacter{0109}{\^c}
+ \DeclareUnicodeCharacter{0118}{\ogonek{E}}
+ \DeclareUnicodeCharacter{0119}{\ogonek{e}}
\DeclareUnicodeCharacter{010A}{\dotaccent{C}}
\DeclareUnicodeCharacter{010B}{\dotaccent{c}}
\DeclareUnicodeCharacter{010C}{\v{C}}
@@ -8426,6 +9434,8 @@ should work if nowhere else does.}
\DeclareUnicodeCharacter{0233}{\=y}
\DeclareUnicodeCharacter{0237}{\dotless{j}}
+ \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
+
\DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
\DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
\DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
@@ -8599,8 +9609,8 @@ should work if nowhere else does.}
% Prevent underfull vbox error messages.
\vbadness = 10000
-% Don't be so finicky about underfull hboxes, either.
-\hbadness = 2000
+% Don't be very finicky about underfull hboxes, either.
+\hbadness = 6666
% Following George Bush, get rid of widows and orphans.
\widowpenalty=10000
@@ -8807,25 +9817,21 @@ should work if nowhere else does.}
\message{and turning on texinfo input format.}
+\def^^L{\par} % remove \outer, so ^L can appear in an @comment
+
+% DEL is a comment character, in case @c does not suffice.
+\catcode`\^^? = 14
+
% Define macros to output various characters with catcode for normal text.
-\catcode`\"=\other
-\catcode`\~=\other
-\catcode`\^=\other
-\catcode`\_=\other
-\catcode`\|=\other
-\catcode`\<=\other
-\catcode`\>=\other
-\catcode`\+=\other
-\catcode`\$=\other
-\def\normaldoublequote{"}
-\def\normaltilde{~}
-\def\normalcaret{^}
-\def\normalunderscore{_}
-\def\normalverticalbar{|}
-\def\normalless{<}
-\def\normalgreater{>}
-\def\normalplus{+}
-\def\normaldollar{$}%$ font-lock fix
+\catcode`\"=\other \def\normaldoublequote{"}
+\catcode`\$=\other \def\normaldollar{$}%$ font-lock fix
+\catcode`\+=\other \def\normalplus{+}
+\catcode`\<=\other \def\normalless{<}
+\catcode`\>=\other \def\normalgreater{>}
+\catcode`\^=\other \def\normalcaret{^}
+\catcode`\_=\other \def\normalunderscore{_}
+\catcode`\|=\other \def\normalverticalbar{|}
+\catcode`\~=\other \def\normaltilde{~}
% This macro is used to make a character print one way in \tt
% (where it can probably be output as-is), and another way in other fonts,
@@ -8903,31 +9909,43 @@ should work if nowhere else does.}
% In texinfo, backslash is an active character; it prints the backslash
% in fixed width font.
-\catcode`\\=\active
-@def@normalbackslash{{@tt@backslashcurfont}}
+\catcode`\\=\active % @ for escape char from now on.
+
+% The story here is that in math mode, the \char of \backslashcurfont
+% ends up printing the roman \ from the math symbol font (because \char
+% in math mode uses the \mathcode, and plain.tex sets
+% \mathcode`\\="026E). It seems better for @backslashchar{} to always
+% print a typewriter backslash, hence we use an explicit \mathchar,
+% which is the decimal equivalent of "715c (class 7, e.g., use \fam;
+% ignored family value; char position "5C). We can't use " for the
+% usual hex value because it has already been made active.
+@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
+
% On startup, @fixbackslash assigns:
% @let \ = @normalbackslash
-
% \rawbackslash defines an active \ to do \backslashcurfont.
% \otherbackslash defines an active \ to be a literal `\' character with
-% catcode other.
+% catcode other. We switch back and forth between these.
@gdef@rawbackslash{@let\=@backslashcurfont}
@gdef@otherbackslash{@let\=@realbackslash}
% Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
% the literal character `\'.
-%
+%
@def@normalturnoffactive{%
- @let\=@normalbackslash
@let"=@normaldoublequote
- @let~=@normaltilde
+ @let$=@normaldollar %$ font-lock fix
+ @let+=@normalplus
+ @let<=@normalless
+ @let>=@normalgreater
+ @let\=@normalbackslash
@let^=@normalcaret
@let_=@normalunderscore
@let|=@normalverticalbar
- @let<=@normalless
- @let>=@normalgreater
- @let+=@normalplus
- @let$=@normaldollar %$ font-lock fix
+ @let~=@normaltilde
+ @markupsetuplqdefault
+ @markupsetuprqdefault
@unsepspaces
}
@@ -8957,11 +9975,28 @@ should work if nowhere else does.}
% Say @foo, not \foo, in error messages.
@escapechar = `@@
-% These look ok in all fonts, so just make them not special.
-@catcode`@& = @other
-@catcode`@# = @other
-@catcode`@% = @other
+% These (along with & and #) are made active for url-breaking, so need
+% active definitions as the normal characters.
+@def@normaldot{.}
+@def@normalquest{?}
+@def@normalslash{/}
+% These look ok in all fonts, so just make them not special.
+% @hashchar{} gets its own user-level command, because of #line.
+@catcode`@& = @other @def@normalamp{&}
+@catcode`@# = @other @def@normalhash{#}
+@catcode`@% = @other @def@normalpercent{%}
+
+@let @hashchar = @normalhash
+
+@c Finally, make ` and ' active, so that txicodequoteundirected and
+@c txicodequotebacktick work right in, e.g., @w{@code{`foo'}}. If we
+@c don't make ` and ' active, @code will not get them as active chars.
+@c Do this last of all since we use ` in the previous @catcode assignments.
+@catcode`@'=@active
+@catcode`@`=@active
+@markupsetuplqdefault
+@markupsetuprqdefault
@c Local variables:
@c eval: (add-hook 'write-file-hooks 'time-stamp)
diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
index dced7a9f74c..7b5cf1acb4e 100644
--- a/gcc/doc/install.texi
+++ b/gcc/doc/install.texi
@@ -305,9 +305,9 @@ systems' @command{tar} programs will also work, only try GNU
@item Perl version 5.6.1 (or later)
-Necessary when targetting Darwin, building @samp{libstdc++},
+Necessary when targeting Darwin, building @samp{libstdc++},
and not using @option{--disable-symvers}.
-Necessary when targetting Solaris 2 with Sun @command{ld} and not using
+Necessary when targeting Solaris 2 with Sun @command{ld} and not using
@option{--disable-symvers}. The bundled @command{perl} in Solaris@tie{}8
and up works.
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 8d8d9525149..e87878a1ed2 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -885,9 +885,9 @@ See RS/6000 and PowerPC Options.
-mprefergot -musermode -multcost=@var{number} -mdiv=@var{strategy} @gol
-mdivsi3_libfunc=@var{name} -mfixed-range=@var{register-range} @gol
-mindexed-addressing -mgettrcost=@var{number} -mpt-fixed @gol
--maccumulate-outgoing-args -minvalid-symbols -msoft-atomic @gol
--mbranch-cost=@var{num} -mcbranchdi -mcmpeqdi -mfused-madd -mpretend-cmove @gol
--menable-tas}
+-maccumulate-outgoing-args -minvalid-symbols -msoft-atomic -mhard-atomic @gol
+-mbranch-cost=@var{num} -mcbranchdi -mcmpeqdi -mfused-madd -mno-fused-madd @gol
+-mpretend-cmove -menable-tas}
@emph{Solaris 2 Options}
@gccoptlist{-mimpure-text -mno-impure-text @gol
@@ -11100,6 +11100,9 @@ known before code is located. Therefore, the assembler code generated by the
compiler is the same, but the instructions in the executable may
differ from instructions in the assembler code.
+Relaxing must be turned on if linker stubs are needed, see the
+section on @code{EIND} and linker stubs below.
+
@item -mshort-calls
@opindex mshort-calls
Use @code{RCALL}/@code{RJMP} instructions even on devices with
@@ -11107,6 +11110,21 @@ Use @code{RCALL}/@code{RJMP} instructions even on devices with
have the @code{CALL} and @code{JMP} instructions.
See also the @code{-mrelax} command line option.
+@item -msp8
+@opindex msp8
+Treat the stack pointer register as an 8-bit register,
+i.e.@: assume the high byte of the stack pointer is zero.
+In general, you don't need to set this option by hand.
+
+This option is used internally by the compiler to select and
+build multilibs for architectures @code{avr2} and @code{avr25}.
+These architectures mix devices with and without @code{SPH}.
+For any setting other than @code{-mmcu=avr2} or @code{-mmcu=avr25}
+the compiler driver will add or remove this option from the compiler
+proper's command line, because the compiler then knows if the device
+or architecture has an 8-bit stack pointer and thus no @code{SPH}
+register or not.
+
@item -mstrict-X
@opindex mstrict-X
Use address register @code{X} in a way proposed by the hardware. This means
@@ -11169,6 +11187,13 @@ generates @emph{stubs}. Stubs are jump pads sometimes also called
The stub contains a direct jump to the desired address.
@item
+Linker relaxation must be turned on so that the linker will generate
+the stubs correctly an all situaltion. See the compiler option
+@code{-mrelax} and the linler option @code{--relax}.
+There are corner cases where the linker is supposed to generate stubs
+but aborts without relaxation and without a helpful error message.
+
+@item
The default linker script is arranged for code with @code{EIND = 0}.
If code is supposed to work for a setup with @code{EIND != 0}, a custom
linker script has to be used in order to place the sections whose
@@ -11177,26 +11202,26 @@ points to.
@item
The startup code from libgcc never sets @code{EIND}.
-Notice that startup code is a blend of code from libgcc and AVR-Libc.
-For the impact of AVR-Libc on @code{EIND}, see the
-@w{@uref{http://nongnu.org/avr-libc/user-manual,AVR-Libc user manual}}.
+Notice that startup code is a blend of code from libgcc and AVR-LibC.
+For the impact of AVR-LibC on @code{EIND}, see the
+@w{@uref{http://nongnu.org/avr-libc/user-manual,AVR-LibC user manual}}.
@item
It is legitimate for user-specific startup code to set up @code{EIND}
early, for example by means of initialization code located in
section @code{.init3}. Such code runs prior to general startup code
that initializes RAM and calls constructors, but after the bit
-of startup code from AVR-Libc that sets @code{EIND} to the segment
+of startup code from AVR-LibC that sets @code{EIND} to the segment
where the vector table is located.
@example
#include <avr/io.h>
static void
-__attribute__ ((section (".init3"), naked, used, no_instrument_function))
+__attribute__((section(".init3"),naked,used,no_instrument_function))
init3_set_eind (void)
@{
- __asm volatile ("ldi r24, pm_hh8(__trampolines_start)" "\n\t"
- "out %i0, r24" :: "n" (&EIND) : "r24", "memory");
+ __asm volatile ("ldi r24,pm_hh8(__trampolines_start)\n\t"
+ "out %i0,r24" :: "n" (&EIND) : "r24","memory");
@}
@end example
@@ -11338,8 +11363,8 @@ The device has the @code{MOVW} instruction to perform 16-bit
register-register moves.
@item __AVR_HAVE_LPMX__
-The device has the @code{LPM R@var{n},Z} and @code{LPM
-R@var{n},Z+} instructions.
+The device has the @code{LPM R@var{n},Z} and
+@code{LPM R@var{n},Z+} instructions.
@item __AVR_HAVE_MUL__
The device has a hardware multiplier.
@@ -11362,9 +11387,18 @@ with up to 128@tie{}KiB of program memory.
@item __AVR_HAVE_8BIT_SP__
@item __AVR_HAVE_16BIT_SP__
-The stack pointer (SP) is respectively 8 or 16 bits wide.
+The stack pointer (SP) register is treated as 8-bit respectively
+16-bit register by the compiler.
The definition of these macros is affected by @code{-mtiny-stack}.
+@item __AVR_HAVE_SPH__
+@item __AVR_SP8__
+The device has the SPH (high part of stack pointer) special function
+register or has an 8-bit stack pointer, respectively.
+The definition of these macros is affected by @code{-mmcu=} and
+in the cases of @code{-mmcu=avr2} and @code{-mmcu=avr25} also
+by @code{-msp8}.
+
@item __AVR_HAVE_RAMPD__
@item __AVR_HAVE_RAMPX__
@item __AVR_HAVE_RAMPY__
@@ -15382,7 +15416,7 @@ Equivalent to @option{-march=mips64r2}.
@itemx -mno-mips16
@opindex mips16
@opindex mno-mips16
-Generate (do not generate) MIPS16 code. If GCC is targetting a
+Generate (do not generate) MIPS16 code. If GCC is targeting a
MIPS32 or MIPS64 architecture, it makes use of the MIPS16e ASE@.
MIPS16 code generation can also be controlled on a per-function basis
@@ -16935,7 +16969,7 @@ Generate code that tries to avoid (not avoid) the use of indexed load
or store instructions. These instructions can incur a performance
penalty on Power6 processors in certain situations, such as when
stepping through large arrays that cross a 16M boundary. This option
-is enabled by default when targetting Power6 and disabled otherwise.
+is enabled by default when targeting Power6 and disabled otherwise.
@item -mfused-madd
@itemx -mno-fused-madd
@@ -16954,7 +16988,7 @@ mapped to @option{-ffp-contract=off}.
@opindex mno-mulhw
Generate code that uses (does not use) the half-word multiply and
multiply-accumulate instructions on the IBM 405, 440, 464 and 476 processors.
-These instructions are generated by default when targetting those
+These instructions are generated by default when targeting those
processors.
@item -mdlmzb
@@ -16963,7 +16997,7 @@ processors.
@opindex mno-dlmzb
Generate code that uses (does not use) the string-search @samp{dlmzb}
instruction on the IBM 405, 440, 464 and 476 processors. This instruction is
-generated by default when targetting those processors.
+generated by default when targeting those processors.
@item -mno-bit-align
@itemx -mbit-align
@@ -18060,10 +18094,22 @@ which is incompatible with the SH ABI@.
Generate GNU/Linux compatible gUSA software atomic sequences for the atomic
built-in functions. The generated atomic sequences require support from the
interrupt / exception handling code of the system and are only suitable for
-single-core systems. They will not perform correctly on multi-core systems.
+single-core systems. They will not operate correctly on multi-core systems.
This option is enabled by default when the target is @code{sh-*-linux*}.
+When the target is SH4A, this option will also partially utilize the hardware
+atomic instructions @code{movli.l} and @code{movco.l} to create more
+efficient code.
For details on the atomic built-in functions see @ref{__atomic Builtins}.
+@item -mhard-atomic
+@opindex hard-atomic
+Generate hardware atomic sequences for the atomic built-in functions. This
+is only available on SH4A and is suitable for multi-core systems. Code
+compiled with this option will also be compatible with gUSA aware
+interrupt / exception handling systems. In contrast to the
+@option{-msoft-atomic} option this will only use the instructions
+@code{movli.l} and @code{movco.l} to create atomic sequences.
+
@item -menable-tas
@opindex menable-tas
Generate the @code{tas.b} opcode for @code{__atomic_test_and_set}.
@@ -18244,11 +18290,17 @@ Emit the @code{cmpeqdi_t} instruction pattern even when @option{-mcbranchdi}
is in effect.
@item -mfused-madd
+@itemx -mno-fused-madd
@opindex mfused-madd
-Allow the usage of the @code{fmac} instruction (floating-point
-multiply-accumulate) if the processor type supports it. Enabling this
-option might generate code that produces different numeric floating-point
-results compared to strict IEEE 754 arithmetic.
+@opindex mno-fused-madd
+If the processor type supports it, setting @code{-mfused-madd} will allow the
+usage of the @code{fmac} instruction (floating-point multiply-accumulate) for
+regular calculations. Enabling this option might generate faster code but also
+produce different numeric floating-point results compared to strict IEEE 754
+arithmetic. @code{-mfused-madd} is enabled by default by option
+@option{-funsafe-math-optimizations}. Setting @code{-mno-fused-madd} will
+disallow the usage of the @code{fmac} instruction for regular calculations
+even if @option{-funsafe-math-optimizations} is in effect.
@item -mpretend-cmove
@opindex mpretend-cmove
@@ -18512,7 +18564,7 @@ Visual Instruction Set extensions. The default is @option{-mno-vis}.
@opindex mno-vis2
With @option{-mvis2}, GCC generates code that takes advantage of
version 2.0 of the UltraSPARC Visual Instruction Set extensions. The
-default is @option{-mvis2} when targetting a cpu that supports such
+default is @option{-mvis2} when targeting a cpu that supports such
instructions, such as UltraSPARC-III and later. Setting @option{-mvis2}
also sets @option{-mvis}.
@@ -18522,7 +18574,7 @@ also sets @option{-mvis}.
@opindex mno-vis3
With @option{-mvis3}, GCC generates code that takes advantage of
version 3.0 of the UltraSPARC Visual Instruction Set extensions. The
-default is @option{-mvis3} when targetting a cpu that supports such
+default is @option{-mvis3} when targeting a cpu that supports such
instructions, such as niagara-3 and later. Setting @option{-mvis3}
also sets @option{-mvis2} and @option{-mvis}.
@@ -18532,7 +18584,7 @@ also sets @option{-mvis2} and @option{-mvis}.
@opindex mno-popc
With @option{-mpopc}, GCC generates code that takes advantage of the UltraSPARC
population count instruction. The default is @option{-mpopc}
-when targetting a cpu that supports such instructions, such as Niagara-2 and
+when targeting a cpu that supports such instructions, such as Niagara-2 and
later.
@item -mfmaf
@@ -18541,7 +18593,7 @@ later.
@opindex mno-fmaf
With @option{-mfmaf}, GCC generates code that takes advantage of the UltraSPARC
Fused Multiply-Add Floating-point extensions. The default is @option{-mfmaf}
-when targetting a cpu that supports such instructions, such as Niagara-3 and
+when targeting a cpu that supports such instructions, such as Niagara-3 and
later.
@item -mfix-at697f
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index f46bc2023ed..ac642b4b43f 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -5683,7 +5683,7 @@ built-in setjmp that isn't needed at the site of a nonlocal goto. You
will not normally need to define this pattern. A typical reason why you
might need this pattern is if some value, such as a pointer to a global
table, must be restored. It takes one argument, which is the label
-to which builtin_longjmp transfered control; this pattern may be emitted
+to which builtin_longjmp transferred control; this pattern may be emitted
at a small offset from that label.
@cindex @code{builtin_longjmp} instruction pattern
diff --git a/gcc/doc/plugins.texi b/gcc/doc/plugins.texi
index 398ebf0c536..039c480351f 100644
--- a/gcc/doc/plugins.texi
+++ b/gcc/doc/plugins.texi
@@ -276,7 +276,7 @@ the start or end of the GCC garbage collection.
Some plugins may need to have GGC mark additional data. This can be
done by registering a callback (called with a null @code{gcc_data})
for the @code{PLUGIN_GGC_MARKING} event. Such callbacks can call the
-@code{ggc_set_mark} routine, preferably thru the @code{ggc_mark} macro
+@code{ggc_set_mark} routine, preferably through the @code{ggc_mark} macro
(and conversely, these routines should usually not be used in plugins
outside of the @code{PLUGIN_GGC_MARKING} event).
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index 3f8c094bfa0..07c480d6a7c 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -775,7 +775,7 @@ Read-only in this context means never modified during the lifetime of the
program, not necessarily in ROM or in write-disabled pages. A common
example of the later is a shared library's global offset table. This
table is initialized by the runtime loader, so the memory is technically
-writable, but after control is transfered from the runtime loader to the
+writable, but after control is transferred from the runtime loader to the
application, this memory will never be subsequently modified.
Stored in the @code{unchanging} field and printed as @samp{/u}.
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index f7b2838efd8..aeccc79f39f 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -9493,6 +9493,10 @@ tables, and hence is desirable if it works.
True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them.
@end deftypevr
+@deftypevr {Target Hook} bool TARGET_FORCE_AT_COMP_DIR
+True if the @code{DW_AT_comp_dir} attribute should be emitted for each compilation unit. This attribute is required for the darwin linker to emit debug information.
+@end deftypevr
+
@deftypevr {Target Hook} bool TARGET_DELAY_SCHED2
True if sched2 is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg.
@end deftypevr
diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
index a54b2298f4b..31dedad8a22 100644
--- a/gcc/doc/tm.texi.in
+++ b/gcc/doc/tm.texi.in
@@ -9392,6 +9392,8 @@ tables, and hence is desirable if it works.
@hook TARGET_WANT_DEBUG_PUB_SECTIONS
+@hook TARGET_FORCE_AT_COMP_DIR
+
@hook TARGET_DELAY_SCHED2
@hook TARGET_DELAY_VARTRACK
diff --git a/gcc/dojump.c b/gcc/dojump.c
index 67452005e90..c2900b30d21 100644
--- a/gcc/dojump.c
+++ b/gcc/dojump.c
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "ggc.h"
#include "basic-block.h"
-#include "output.h"
#include "tm_p.h"
static bool prefer_and_bit_test (enum machine_mode, int);
diff --git a/gcc/dse.c b/gcc/dse.c
index 6bc48c8efe1..da52415083e 100644
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -48,7 +48,7 @@ along with GCC; see the file COPYING3. If not see
#include "dbgcnt.h"
#include "target.h"
#include "params.h"
-#include "tree-flow.h"
+#include "tree-flow.h" /* for may_be_aliased */
/* This file contains three techniques for performing Dead Store
Elimination (dse).
@@ -95,7 +95,7 @@ along with GCC; see the file COPYING3. If not see
5) Delete the insns that the global analysis has indicated are
unnecessary.
- 6) Delete insns that store the same value as preceeding store
+ 6) Delete insns that store the same value as preceding store
where the earlier store couldn't be eliminated.
7) Cleanup.
@@ -388,7 +388,7 @@ struct insn_info
struct insn_info * prev_insn;
/* The linked list of insns that are in consideration for removal in
- the forwards pass thru the basic block. This pointer may be
+ the forwards pass through the basic block. This pointer may be
trash as it is not cleared when a wild read occurs. The only
time it is guaranteed to be correct is when the traversal starts
at active_local_stores. */
@@ -457,7 +457,7 @@ struct bb_info
being processed. While it contains info for all of the
registers, only the hard registers are actually examined. It is used
to assure that shift and/or add sequences that are inserted do not
- accidently clobber live hard regs. */
+ accidentally clobber live hard regs. */
bitmap regs_live;
};
diff --git a/gcc/dwarf2asm.c b/gcc/dwarf2asm.c
index fe305d3ed4e..ca3d7ffb694 100644
--- a/gcc/dwarf2asm.c
+++ b/gcc/dwarf2asm.c
@@ -161,7 +161,7 @@ dw2_asm_output_vms_delta (int size ATTRIBUTE_UNUSED,
va_start (ap, comment);
#ifndef ASM_OUTPUT_DWARF_VMS_DELTA
- /* VMS Delta is only special on ia64-vms, but this funtion also gets
+ /* VMS Delta is only special on ia64-vms, but this function also gets
called on alpha-vms so it has to do something sane. */
dw2_asm_output_delta (size, lab1, lab2, comment);
#else
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 3569dc565b8..0c498ebece0 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -93,7 +93,7 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "tree-pass.h"
#include "tree-flow.h"
-#include "cfglayout.h"
+#include "cfglayout.h" /* for insn_scope. */
#include "opts.h"
static void dwarf2out_source_line (unsigned int, const char *, int, bool);
@@ -4504,7 +4504,7 @@ adjust_piece_list (rtx *dest, rtx *src, rtx *inner,
if (copy)
{
- /* First copy all nodes preceeding the current bitpos. */
+ /* First copy all nodes preceding the current bitpos. */
while (src != inner)
{
*dest = decl_piece_node (*decl_piece_varloc_ptr (*src),
@@ -12686,7 +12686,7 @@ add_loc_descr_to_each (dw_loc_list_ref list, dw_loc_descr_ref ref)
/* Given two lists RET and LIST
produce location list that is result of adding expression in LIST
- to expression in RET on each possition in program.
+ to expression in RET on each position in program.
Might be destructive on both RET and LIST.
TODO: We handle only simple cases of RET or LIST having at most one
@@ -16409,6 +16409,135 @@ gen_type_die_for_member (tree type, tree member, dw_die_ref context_die)
pop_decl_scope ();
}
}
+
+/* Forward declare these functions, because they are mutually recursive
+ with their set_block_* pairing functions. */
+static void set_decl_origin_self (tree);
+static void set_decl_abstract_flags (tree, int);
+
+/* Given a pointer to some BLOCK node, if the BLOCK_ABSTRACT_ORIGIN for the
+ given BLOCK node is NULL, set the BLOCK_ABSTRACT_ORIGIN for the node so
+ that it points to the node itself, thus indicating that the node is its
+ own (abstract) origin. Additionally, if the BLOCK_ABSTRACT_ORIGIN for
+ the given node is NULL, recursively descend the decl/block tree which
+ it is the root of, and for each other ..._DECL or BLOCK node contained
+ therein whose DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also
+ still NULL, set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN
+ values to point to themselves. */
+
+static void
+set_block_origin_self (tree stmt)
+{
+ if (BLOCK_ABSTRACT_ORIGIN (stmt) == NULL_TREE)
+ {
+ BLOCK_ABSTRACT_ORIGIN (stmt) = stmt;
+
+ {
+ tree local_decl;
+
+ for (local_decl = BLOCK_VARS (stmt);
+ local_decl != NULL_TREE;
+ local_decl = DECL_CHAIN (local_decl))
+ if (! DECL_EXTERNAL (local_decl))
+ set_decl_origin_self (local_decl); /* Potential recursion. */
+ }
+
+ {
+ tree subblock;
+
+ for (subblock = BLOCK_SUBBLOCKS (stmt);
+ subblock != NULL_TREE;
+ subblock = BLOCK_CHAIN (subblock))
+ set_block_origin_self (subblock); /* Recurse. */
+ }
+ }
+}
+
+/* Given a pointer to some ..._DECL node, if the DECL_ABSTRACT_ORIGIN for
+ the given ..._DECL node is NULL, set the DECL_ABSTRACT_ORIGIN for the
+ node to so that it points to the node itself, thus indicating that the
+ node represents its own (abstract) origin. Additionally, if the
+ DECL_ABSTRACT_ORIGIN for the given node is NULL, recursively descend
+ the decl/block tree of which the given node is the root of, and for
+ each other ..._DECL or BLOCK node contained therein whose
+ DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also still NULL,
+ set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN values to
+ point to themselves. */
+
+static void
+set_decl_origin_self (tree decl)
+{
+ if (DECL_ABSTRACT_ORIGIN (decl) == NULL_TREE)
+ {
+ DECL_ABSTRACT_ORIGIN (decl) = decl;
+ if (TREE_CODE (decl) == FUNCTION_DECL)
+ {
+ tree arg;
+
+ for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
+ DECL_ABSTRACT_ORIGIN (arg) = arg;
+ if (DECL_INITIAL (decl) != NULL_TREE
+ && DECL_INITIAL (decl) != error_mark_node)
+ set_block_origin_self (DECL_INITIAL (decl));
+ }
+ }
+}
+
+/* Given a pointer to some BLOCK node, and a boolean value to set the
+ "abstract" flags to, set that value into the BLOCK_ABSTRACT flag for
+ the given block, and for all local decls and all local sub-blocks
+ (recursively) which are contained therein. */
+
+static void
+set_block_abstract_flags (tree stmt, int setting)
+{
+ tree local_decl;
+ tree subblock;
+ unsigned int i;
+
+ BLOCK_ABSTRACT (stmt) = setting;
+
+ for (local_decl = BLOCK_VARS (stmt);
+ local_decl != NULL_TREE;
+ local_decl = DECL_CHAIN (local_decl))
+ if (! DECL_EXTERNAL (local_decl))
+ set_decl_abstract_flags (local_decl, setting);
+
+ for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
+ {
+ local_decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
+ if ((TREE_CODE (local_decl) == VAR_DECL && !TREE_STATIC (local_decl))
+ || TREE_CODE (local_decl) == PARM_DECL)
+ set_decl_abstract_flags (local_decl, setting);
+ }
+
+ for (subblock = BLOCK_SUBBLOCKS (stmt);
+ subblock != NULL_TREE;
+ subblock = BLOCK_CHAIN (subblock))
+ set_block_abstract_flags (subblock, setting);
+}
+
+/* Given a pointer to some ..._DECL node, and a boolean value to set the
+ "abstract" flags to, set that value into the DECL_ABSTRACT flag for the
+ given decl, and (in the case where the decl is a FUNCTION_DECL) also
+ set the abstract flags for all of the parameters, local vars, local
+ blocks and sub-blocks (recursively) to the same setting. */
+
+static void
+set_decl_abstract_flags (tree decl, int setting)
+{
+ DECL_ABSTRACT (decl) = setting;
+ if (TREE_CODE (decl) == FUNCTION_DECL)
+ {
+ tree arg;
+
+ for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
+ DECL_ABSTRACT (arg) = setting;
+ if (DECL_INITIAL (decl) != NULL_TREE
+ && DECL_INITIAL (decl) != error_mark_node)
+ set_block_abstract_flags (DECL_INITIAL (decl), setting);
+ }
+}
/* Generate the DWARF2 info for the "abstract" instance of a function which we
may later generate inlined and/or out-of-line instances of. */
@@ -19989,7 +20118,7 @@ dwarf2out_source_line (unsigned int line, const char *filename,
/* Recall that this end-of-prologue indication is *not* the same thing
as the end_prologue debug hook. The NOTE_INSN_PROLOGUE_END note,
to which the hook corresponds, follows the last insn that was
- emitted by gen_prologue. What we need is to preceed the first insn
+ emitted by gen_prologue. What we need is to precede the first insn
that had been emitted after NOTE_INSN_FUNCTION_BEG, i.e. the first
insn that corresponds to something the user wrote. These may be
very different locations once scheduling is enabled. */
@@ -21949,7 +22078,7 @@ dwarf2out_finish (const char *filename)
/* Add the name for the main input file now. We delayed this from
dwarf2out_init to avoid complications with PCH. */
add_name_attribute (comp_unit_die (), remap_debug_filename (filename));
- if (!IS_ABSOLUTE_PATH (filename))
+ if (!IS_ABSOLUTE_PATH (filename) || targetm.force_at_comp_dir)
add_comp_dir_attribute (comp_unit_die ());
else if (get_AT (comp_unit_die (), DW_AT_comp_dir) == NULL)
{
diff --git a/gcc/et-forest.c b/gcc/et-forest.c
index d1063165c7a..fe72374fbf3 100644
--- a/gcc/et-forest.c
+++ b/gcc/et-forest.c
@@ -33,7 +33,7 @@ License along with libiberty; see the file COPYING3. If not see
#undef DEBUG_ET
#ifdef DEBUG_ET
-#include "basic-block.h"
+#include "basic-block.h" /* To access index in record_path_before_1. */
#endif
/* The occurrence of a node in the et tree. */
diff --git a/gcc/except.c b/gcc/except.c
index 158ca20745a..aae8aa0e091 100644
--- a/gcc/except.c
+++ b/gcc/except.c
@@ -123,7 +123,6 @@ along with GCC; see the file COPYING3. If not see
#include "libfuncs.h"
#include "insn-config.h"
#include "except.h"
-#include "integrate.h"
#include "hard-reg-set.h"
#include "basic-block.h"
#include "output.h"
diff --git a/gcc/except.h b/gcc/except.h
index e161493b5aa..5b3939e0fc4 100644
--- a/gcc/except.h
+++ b/gcc/except.h
@@ -46,7 +46,7 @@ enum eh_region_type
/* TRY regions implement catching an exception. The list of types associated
with the attached catch handlers is examined in order by the runtime and
- control is transfered to the appropriate handler. Note that a NULL type
+ control is transferred to the appropriate handler. Note that a NULL type
list is a catch-all handler, and that it will catch *all* exceptions
including those originating from a different language. */
ERT_TRY,
@@ -80,7 +80,7 @@ struct GTY(()) eh_landing_pad_d
/* The region with which this landing pad is associated. */
struct eh_region_d *region;
- /* At the gimple level, the location to which control will be transfered
+ /* At the gimple level, the location to which control will be transferred
for this landing pad. There can be both EH and normal edges into the
block containing the post-landing-pad label. */
tree post_landing_pad;
diff --git a/gcc/explow.c b/gcc/explow.c
index 5513a123e3d..be8bf3e1f0e 100644
--- a/gcc/explow.c
+++ b/gcc/explow.c
@@ -1579,12 +1579,11 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
size, first)));
emit_library_call (stack_check_libfunc, LCT_NORMAL, VOIDmode, 1, addr,
Pmode);
- return;
}
/* Next see if we have an insn to check the stack. */
#ifdef HAVE_check_stack
- if (HAVE_check_stack)
+ else if (HAVE_check_stack)
{
struct expand_operand ops[1];
rtx addr = memory_address (Pmode,
@@ -1592,10 +1591,10 @@ probe_stack_range (HOST_WIDE_INT first, rtx size)
stack_pointer_rtx,
plus_constant (Pmode,
size, first)));
-
+ bool success;
create_input_operand (&ops[0], addr, Pmode);
- if (maybe_expand_insn (CODE_FOR_check_stack, 1, ops))
- return;
+ success = maybe_expand_insn (CODE_FOR_check_stack, 1, ops);
+ gcc_assert (success);
}
#endif
diff --git a/gcc/expmed.c b/gcc/expmed.c
index 45b150efc3e..96056b4e862 100644
--- a/gcc/expmed.c
+++ b/gcc/expmed.c
@@ -1351,7 +1351,7 @@ extract_bit_field_1 (rtx str_rtx, unsigned HOST_WIDE_INT bitsize,
else
{
rtx mem = assign_stack_temp (GET_MODE (op0),
- GET_MODE_SIZE (GET_MODE (op0)), 0);
+ GET_MODE_SIZE (GET_MODE (op0)));
emit_move_insn (mem, op0);
op0 = adjust_address (mem, BLKmode, 0);
}
@@ -1865,9 +1865,9 @@ extract_fixed_bit_field (enum machine_mode tmode, rtx op0,
/* If the field does not already start at the lsb,
shift it so it does. */
/* Maybe propagate the target for the shift. */
- /* But not if we will return it--could confuse integrate.c. */
rtx subtarget = (target != 0 && REG_P (target) ? target : 0);
- if (tmode != mode) subtarget = 0;
+ if (tmode != mode)
+ subtarget = 0;
op0 = expand_shift (RSHIFT_EXPR, mode, op0, bitpos, subtarget, 1);
}
/* Convert the value to the desired mode. */
diff --git a/gcc/expr.c b/gcc/expr.c
index e6def73e6e4..8d815c94836 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -1615,7 +1615,7 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize)
{
enum machine_mode imode = int_mode_for_mode (GET_MODE (orig_src));
if (imode == BLKmode)
- src = assign_stack_temp (GET_MODE (orig_src), ssize, 0);
+ src = assign_stack_temp (GET_MODE (orig_src), ssize);
else
src = gen_reg_rtx (imode);
if (imode != BLKmode)
@@ -1717,7 +1717,7 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize)
rtx mem;
gcc_assert (!bytepos);
- mem = assign_stack_temp (GET_MODE (src), slen, 0);
+ mem = assign_stack_temp (GET_MODE (src), slen);
emit_move_insn (mem, src);
tmps[i] = extract_bit_field (mem, bytelen * BITS_PER_UNIT,
0, 1, false, NULL_RTX, mode, mode);
@@ -1732,7 +1732,7 @@ emit_group_load_1 (rtx *tmps, rtx dst, rtx orig_src, tree type, int ssize)
int slen = GET_MODE_SIZE (GET_MODE (src));
rtx mem;
- mem = assign_stack_temp (GET_MODE (src), slen, 0);
+ mem = assign_stack_temp (GET_MODE (src), slen);
emit_move_insn (mem, src);
tmps[i] = adjust_address (mem, mode, (int) bytepos);
}
@@ -1883,7 +1883,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
{
enum machine_mode imode = int_mode_for_mode (GET_MODE (orig_dst));
if (imode == BLKmode)
- dst = assign_stack_temp (GET_MODE (orig_dst), ssize, 0);
+ dst = assign_stack_temp (GET_MODE (orig_dst), ssize);
else
dst = gen_reg_rtx (imode);
emit_group_store (dst, src, type, ssize);
@@ -1933,7 +1933,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
it. Allocate a temporary, and split this into a store/load to/from
the temporary. */
- temp = assign_stack_temp (GET_MODE (dst), ssize, 0);
+ temp = assign_stack_temp (GET_MODE (dst), ssize);
emit_group_store (temp, src, type, ssize);
emit_group_load (dst, temp, type, ssize);
return;
@@ -2028,8 +2028,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
>= GET_MODE_ALIGNMENT (tmp_mode))
{
dest = assign_stack_temp (dest_mode,
- GET_MODE_SIZE (dest_mode),
- 0);
+ GET_MODE_SIZE (dest_mode));
emit_move_insn (adjust_address (dest,
tmp_mode,
bytepos),
@@ -2039,8 +2038,7 @@ emit_group_store (rtx orig_dst, rtx src, tree type ATTRIBUTE_UNUSED, int ssize)
else
{
dest = assign_stack_temp (tmp_mode,
- GET_MODE_SIZE (tmp_mode),
- 0);
+ GET_MODE_SIZE (tmp_mode));
emit_move_insn (dest, tmps[i]);
dst = adjust_address (dest, dest_mode, bytepos);
}
@@ -2108,7 +2106,7 @@ copy_blkmode_from_reg (rtx tgtblk, rtx srcreg, tree type)
tgtblk = assign_temp (build_qualified_type (type,
(TYPE_QUALS (type)
| TYPE_QUAL_CONST)),
- 0, 1, 1);
+ 1, 1);
preserve_temp_slots (tgtblk);
}
@@ -4030,7 +4028,7 @@ emit_push_insn (rtx x, enum machine_mode mode, tree type, rtx size,
size = GEN_INT (GET_MODE_SIZE (mode));
if (!MEM_P (xinner))
{
- temp = assign_temp (type, 0, 1, 1);
+ temp = assign_temp (type, 1, 1);
emit_move_insn (temp, xinner);
xinner = temp;
}
@@ -4782,8 +4780,7 @@ expand_assignment (tree to, tree from, bool nontemporal)
else
{
rtx temp = assign_stack_temp (GET_MODE (to_rtx),
- GET_MODE_SIZE (GET_MODE (to_rtx)),
- 0);
+ GET_MODE_SIZE (GET_MODE (to_rtx)));
write_complex_part (temp, XEXP (to_rtx, 0), false);
write_complex_part (temp, XEXP (to_rtx, 1), true);
result = store_field (temp, bitsize, bitpos,
@@ -4839,7 +4836,6 @@ expand_assignment (tree to, tree from, bool nontemporal)
if (result)
preserve_temp_slots (result);
- free_temp_slots ();
pop_temp_slots ();
return;
}
@@ -4887,7 +4883,6 @@ expand_assignment (tree to, tree from, bool nontemporal)
emit_move_insn (to_rtx, value);
}
preserve_temp_slots (to_rtx);
- free_temp_slots ();
pop_temp_slots ();
return;
}
@@ -4914,7 +4909,6 @@ expand_assignment (tree to, tree from, bool nontemporal)
emit_move_insn (to_rtx, temp);
preserve_temp_slots (to_rtx);
- free_temp_slots ();
pop_temp_slots ();
return;
}
@@ -4944,7 +4938,6 @@ expand_assignment (tree to, tree from, bool nontemporal)
TYPE_MODE (sizetype));
preserve_temp_slots (to_rtx);
- free_temp_slots ();
pop_temp_slots ();
return;
}
@@ -4954,7 +4947,6 @@ expand_assignment (tree to, tree from, bool nontemporal)
push_temp_slots ();
result = store_expr (from, to_rtx, 0, nontemporal);
preserve_temp_slots (result);
- free_temp_slots ();
pop_temp_slots ();
return;
}
@@ -6314,7 +6306,7 @@ store_field (rtx target, HOST_WIDE_INT bitsize, HOST_WIDE_INT bitpos,
if (mode == BLKmode
&& (REG_P (target) || GET_CODE (target) == SUBREG))
{
- rtx object = assign_temp (type, 0, 1, 1);
+ rtx object = assign_temp (type, 1, 1);
rtx blk_object = adjust_address (object, BLKmode, 0);
if (bitsize != (HOST_WIDE_INT) GET_MODE_BITSIZE (GET_MODE (target)))
@@ -7374,7 +7366,7 @@ highest_pow2_factor_for_target (const_tree target, const_tree exp)
}
#ifdef HAVE_conditional_move
-/* Convert the tree comparision code TCODE to the rtl one where the
+/* Convert the tree comparison code TCODE to the rtl one where the
signedness is UNSIGNEDP. */
static enum rtx_code
@@ -7768,7 +7760,7 @@ expand_constructor (tree exp, rtx target, enum expand_modifier modifier,
= assign_temp (build_qualified_type (type, (TYPE_QUALS (type)
| (TREE_READONLY (exp)
* TYPE_QUAL_CONST))),
- 0, TREE_ADDRESSABLE (exp), 1);
+ TREE_ADDRESSABLE (exp), 1);
}
store_constructor (exp, target, 0, int_expr_size (exp));
@@ -7892,7 +7884,7 @@ expand_cond_expr_using_cmove (tree treeop0 ATTRIBUTE_UNUSED,
int unsignedp = TYPE_UNSIGNED (type);
enum machine_mode mode = TYPE_MODE (type);
- temp = assign_temp (type, 0, 0, 1);
+ temp = assign_temp (type, 0, 1);
/* If we cannot do a conditional move on the mode, try doing it
with the promoted mode. */
@@ -8050,7 +8042,7 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode,
if (TYPE_MODE (type) != BLKmode)
target = gen_reg_rtx (TYPE_MODE (type));
else
- target = assign_temp (type, 0, 1, 1);
+ target = assign_temp (type, 1, 1);
}
if (MEM_P (target))
@@ -9037,7 +9029,7 @@ expand_expr_real_2 (sepops ops, rtx target, enum machine_mode tmode,
&& !MEM_P (original_target))
temp = original_target;
else
- temp = assign_temp (type, 0, 0, 1);
+ temp = assign_temp (type, 0, 1);
do_pending_stack_adjust ();
NO_DEFER_POP;
@@ -9288,7 +9280,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
/* This is the case of an array whose size is to be determined
from its initializer, while the initializer is still being parsed.
- See expand_decl. */
+ ??? We aren't parsing while expanding anymore. */
if (MEM_P (decl_rtl) && REG_P (XEXP (decl_rtl, 0)))
temp = validize_mem (decl_rtl);
@@ -9563,8 +9555,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
else
{
temp = assign_stack_temp (DECL_MODE (base),
- GET_MODE_SIZE (DECL_MODE (base)),
- 0);
+ GET_MODE_SIZE (DECL_MODE (base)));
store_expr (base, temp, 0, false);
temp = adjust_address (temp, BLKmode, offset);
set_mem_size (temp, int_size_in_bytes (TREE_TYPE (exp)));
@@ -9922,7 +9913,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
tree nt = build_qualified_type (TREE_TYPE (tem),
(TYPE_QUALS (TREE_TYPE (tem))
| TYPE_QUAL_CONST));
- memloc = assign_temp (nt, 1, 1, 1);
+ memloc = assign_temp (nt, 1, 1);
emit_move_insn (memloc, op0);
op0 = memloc;
mem_attrs_from_type = true;
@@ -10029,7 +10020,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
if (ext_mode == BLKmode)
{
if (target == 0)
- target = assign_temp (type, 0, 1, 1);
+ target = assign_temp (type, 1, 1);
if (bitsize == 0)
return target;
@@ -10085,7 +10076,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
new_rtx = assign_stack_temp_for_type (ext_mode,
GET_MODE_BITSIZE (ext_mode),
- 0, type);
+ type);
emit_move_insn (new_rtx, op0);
op0 = copy_rtx (new_rtx);
PUT_MODE (op0, BLKmode);
@@ -10277,7 +10268,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
target
= assign_stack_temp_for_type
(TYPE_MODE (inner_type),
- GET_MODE_SIZE (TYPE_MODE (inner_type)), 0, inner_type);
+ GET_MODE_SIZE (TYPE_MODE (inner_type)), inner_type);
emit_move_insn (target, op0);
op0 = target;
@@ -10324,7 +10315,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
= MAX (int_size_in_bytes (inner_type),
(HOST_WIDE_INT) GET_MODE_SIZE (mode));
rtx new_rtx
- = assign_stack_temp_for_type (mode, temp_size, 0, type);
+ = assign_stack_temp_for_type (mode, temp_size, type);
rtx new_with_op0_mode
= adjust_address (new_rtx, GET_MODE (op0), 0);
@@ -10425,6 +10416,7 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
case POSTDECREMENT_EXPR:
case LOOP_EXPR:
case EXIT_EXPR:
+ case COMPOUND_LITERAL_EXPR:
/* Lowered by gimplify.c. */
gcc_unreachable ();
@@ -10439,27 +10431,6 @@ expand_expr_real_1 (tree exp, rtx target, enum machine_mode tmode,
return expand_expr_real (treeop0, original_target, tmode,
modifier, alt_rtl);
- case COMPOUND_LITERAL_EXPR:
- {
- /* Initialize the anonymous variable declared in the compound
- literal, then return the variable. */
- tree decl = COMPOUND_LITERAL_EXPR_DECL (exp);
-
- /* Create RTL for this variable. */
- if (!DECL_RTL_SET_P (decl))
- {
- if (DECL_HARD_REGISTER (decl))
- /* The user specified an assembler name for this variable.
- Set that up now. */
- rest_of_decl_compilation (decl, 0, 0);
- else
- expand_decl (decl);
- }
-
- return expand_expr_real (decl, original_target, tmode,
- modifier, alt_rtl);
- }
-
default:
return expand_expr_real_2 (&ops, target, tmode, modifier);
}
diff --git a/gcc/final.c b/gcc/final.c
index 718caf154bd..fe1add226cb 100644
--- a/gcc/final.c
+++ b/gcc/final.c
@@ -72,7 +72,7 @@ along with GCC; see the file COPYING3. If not see
#include "targhooks.h"
#include "debug.h"
#include "expr.h"
-#include "cfglayout.h"
+#include "cfglayout.h" /* for reemit_insn_block_notes */
#include "tree-pass.h"
#include "tree-flow.h"
#include "timevar.h"
@@ -83,7 +83,7 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "cfgloop.h"
#include "params.h"
-#include "tree-pretty-print.h"
+#include "tree-pretty-print.h" /* for dump_function_header */
#ifdef XCOFF_DEBUGGING_INFO
#include "xcoffout.h" /* Needed for external data
diff --git a/gcc/fold-const.c b/gcc/fold-const.c
index 58deca7eb29..64a0d7fd29a 100644
--- a/gcc/fold-const.c
+++ b/gcc/fold-const.c
@@ -2567,7 +2567,7 @@ operand_equal_p (const_tree arg0, const_tree arg1, unsigned int flags)
return OP_SAME (0);
case TARGET_MEM_REF:
- /* Require equal extra operands and then fall thru to MEM_REF
+ /* Require equal extra operands and then fall through to MEM_REF
handling of the two common operands. */
if (!OP_SAME_WITH_NULL (2)
|| !OP_SAME_WITH_NULL (3)
@@ -10045,12 +10045,12 @@ fold_binary_loc (location_t loc,
/* Handle (A1 * C1) + (A2 * C2) with A1, A2 or C1, C2 being the
same or one. Make sure type is not saturating.
fold_plusminus_mult_expr will re-associate. */
- if ((TREE_CODE (arg0) == MULT_EXPR
- || TREE_CODE (arg1) == MULT_EXPR)
+ if ((TREE_CODE (op0) == MULT_EXPR
+ || TREE_CODE (op1) == MULT_EXPR)
&& !TYPE_SATURATING (type)
&& (!FLOAT_TYPE_P (type) || flag_associative_math))
{
- tree tem = fold_plusminus_mult_expr (loc, code, type, arg0, arg1);
+ tree tem = fold_plusminus_mult_expr (loc, code, type, op0, op1);
if (tem)
return tem;
}
@@ -10668,12 +10668,12 @@ fold_binary_loc (location_t loc,
/* Handle (A1 * C1) - (A2 * C2) with A1, A2 or C1, C2 being the
same or one. Make sure type is not saturating.
fold_plusminus_mult_expr will re-associate. */
- if ((TREE_CODE (arg0) == MULT_EXPR
- || TREE_CODE (arg1) == MULT_EXPR)
+ if ((TREE_CODE (op0) == MULT_EXPR
+ || TREE_CODE (op1) == MULT_EXPR)
&& !TYPE_SATURATING (type)
&& (!FLOAT_TYPE_P (type) || flag_associative_math))
{
- tree tem = fold_plusminus_mult_expr (loc, code, type, arg0, arg1);
+ tree tem = fold_plusminus_mult_expr (loc, code, type, op0, op1);
if (tem)
return tem;
}
@@ -12018,7 +12018,7 @@ fold_binary_loc (location_t loc,
}
}
- /* Fall thru */
+ /* Fall through */
case FLOOR_DIV_EXPR:
/* Simplify A / (B << N) where A and B are positive and B is
@@ -12061,7 +12061,7 @@ fold_binary_loc (location_t loc,
&& code == FLOOR_DIV_EXPR)
return fold_build2_loc (loc, TRUNC_DIV_EXPR, type, op0, op1);
- /* Fall thru */
+ /* Fall through */
case ROUND_DIV_EXPR:
case CEIL_DIV_EXPR:
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index fe13cc551d4..a75ab0a2c44 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,31 @@
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * trans-common.c: Do not include output.h.
+ * trans-decl.c: Likewise.
+
+2012-05-31 Tobias Burnus <burnus@net-b.de>
+
+ PR fortran/53521
+ * trans.c (gfc_deallocate_scalar_with_status): Properly
+ handle the case size == 0.
+
+2012-05-30 Tobias Burnus <burnus@net-b.de>
+
+ PR c/53502
+ * decl.c (match_attr_spec): Remove "typedef".
+
+2012-05-30 Tobias Burnus <burnus@net-b.de>
+
+ * decl.c: Fix comment typos.
+ * expr.c: Ditto.
+ * frontend-passes.c: Ditto.
+ * match.c: Ditto.
+ * resolve.c: Ditto.
+ * trans-array.c: Ditto.
+ * trans-common.c: Ditto.
+ * trans-intrinsic.c: Ditto.
+ * trans-types.c: Ditto.
+
2012-05-23 Tobias Burnus <burnus@net-b.de>
PR fortran/51055
diff --git a/gcc/fortran/Make-lang.in b/gcc/fortran/Make-lang.in
index d5a6c88dad9..7bcc19d3c7a 100644
--- a/gcc/fortran/Make-lang.in
+++ b/gcc/fortran/Make-lang.in
@@ -330,7 +330,7 @@ $(F95_PARSER_OBJS): fortran/gfortran.h fortran/libgfortran.h \
fortran/parse.h fortran/arith.h fortran/target-memory.h \
$(CONFIG_H) $(SYSTEM_H) $(TM_H) $(TM_P_H) coretypes.h \
$(RTL_H) $(TREE_H) $(TREE_DUMP_H) $(GGC_H) $(EXPR_H) \
- $(FLAGS_H) output.h $(DIAGNOSTIC_H) errors.h $(FUNCTION_H) \
+ $(FLAGS_H) $(DIAGNOSTIC_H) errors.h $(FUNCTION_H) \
fortran/iso-c-binding.def fortran/iso-fortran-env.def
fortran/openmp.o: pointer-set.h $(TARGET_H) toplev.h
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c
index e166bc916b1..a760331eeba 100644
--- a/gcc/fortran/decl.c
+++ b/gcc/fortran/decl.c
@@ -586,7 +586,7 @@ cleanup:
/************************ Declaration statements *********************/
-/* Auxilliary function to merge DIMENSION and CODIMENSION array specs. */
+/* Auxiliary function to merge DIMENSION and CODIMENSION array specs. */
static void
merge_array_spec (gfc_array_spec *from, gfc_array_spec *to, bool copy)
@@ -1715,7 +1715,7 @@ match_pointer_init (gfc_expr **init, int procptr)
return MATCH_ERROR;
}
- /* Match NULL() initilization. */
+ /* Match NULL() initialization. */
m = gfc_match_null (init);
if (m != MATCH_NO)
return m;
@@ -2235,7 +2235,7 @@ kind_expr:
C interoperable kind (and store the fact). */
if (e->ts.is_c_interop == 1)
{
- /* Mark this as c interoperable if being declared with one
+ /* Mark this as C interoperable if being declared with one
of the named constants from iso_c_binding. */
ts->is_c_interop = e->ts.is_iso_c;
ts->f90_type = e->ts.f90_type;
@@ -2533,10 +2533,10 @@ done:
ts->kind = kind == 0 ? gfc_default_character_kind : kind;
ts->deferred = deferred;
- /* We have to know if it was a c interoperable kind so we can
+ /* We have to know if it was a C interoperable kind so we can
do accurate type checking of bind(c) procs, etc. */
if (kind != 0)
- /* Mark this as c interoperable if being declared with one
+ /* Mark this as C interoperable if being declared with one
of the named constants from iso_c_binding. */
ts->is_c_interop = is_iso_c;
else if (len != NULL)
@@ -2766,7 +2766,7 @@ gfc_match_decl_type_spec (gfc_typespec *ts, int implicit_flag)
/* Search for the name but allow the components to be defined later. If
type = -1, this typespec has been seen in a function declaration but
the type could not be accessed at that point. The actual derived type is
- stored in a symtree with the first letter of the name captialized; the
+ stored in a symtree with the first letter of the name capitalized; the
symtree with the all lower-case name contains the associated
generic function. */
dt_name = gfc_get_string ("%c%s",
@@ -3200,7 +3200,7 @@ gfc_match_import (void)
if (sym->attr.generic && (sym = gfc_find_dt_in_generic (sym)))
{
/* The actual derived type is stored in a symtree with the first
- letter of the name captialized; the symtree with the all
+ letter of the name capitalized; the symtree with the all
lower-case name contains the associated generic function. */
st = gfc_new_symtree (&gfc_current_ns->sym_root,
gfc_get_string ("%c%s",
@@ -3264,7 +3264,7 @@ static match
match_attr_spec (void)
{
/* Modifiers that can exist in a type statement. */
- typedef enum
+ enum
{ GFC_DECL_BEGIN = 0,
DECL_ALLOCATABLE = GFC_DECL_BEGIN, DECL_DIMENSION, DECL_EXTERNAL,
DECL_IN, DECL_OUT, DECL_INOUT, DECL_INTRINSIC, DECL_OPTIONAL,
@@ -3272,8 +3272,7 @@ match_attr_spec (void)
DECL_PUBLIC, DECL_SAVE, DECL_TARGET, DECL_VALUE, DECL_VOLATILE,
DECL_IS_BIND_C, DECL_CODIMENSION, DECL_ASYNCHRONOUS, DECL_CONTIGUOUS,
DECL_NONE, GFC_DECL_END /* Sentinel */
- }
- decl_types;
+ };
/* GFC_DECL_END is the sentinel, index starts at 0. */
#define NUM_DECL GFC_DECL_END
@@ -3844,7 +3843,7 @@ set_binding_label (const char **dest_label, const char *sym_name,
}
if (curr_binding_label)
- /* Binding label given; store in temp holder til have sym. */
+ /* Binding label given; store in temp holder till have sym. */
*dest_label = curr_binding_label;
else
{
@@ -7864,7 +7863,7 @@ match_binding_attributes (gfc_typebound_proc* ba, bool generic, bool ppc)
bool seen_ptr = false;
match m = MATCH_YES;
- /* Intialize to defaults. Do so even before the MATCH_NO check so that in
+ /* Initialize to defaults. Do so even before the MATCH_NO check so that in
this case the defaults are in there. */
ba->access = ACCESS_UNKNOWN;
ba->pass_arg = NULL;
diff --git a/gcc/fortran/expr.c b/gcc/fortran/expr.c
index 93d5df65455..bde62d58741 100644
--- a/gcc/fortran/expr.c
+++ b/gcc/fortran/expr.c
@@ -711,7 +711,7 @@ gfc_copy_shape (mpz_t *shape, int rank)
/* Copy a shape array excluding dimension N, where N is an integer
- constant expression. Dimensions are numbered in fortran style --
+ constant expression. Dimensions are numbered in Fortran style --
starting with ONE.
So, if the original shape array contains R elements
@@ -4405,7 +4405,7 @@ gfc_has_ultimate_pointer (gfc_expr *e)
/* Check whether an expression is "simply contiguous", cf. F2008, 6.5.4.
Note: A scalar is not regarded as "simply contiguous" by the standard.
- if bool is not strict, some futher checks are done - for instance,
+ if bool is not strict, some further checks are done - for instance,
a "(::1)" is accepted. */
bool
@@ -4482,7 +4482,7 @@ gfc_is_simply_contiguous (gfc_expr *expr, bool strict)
return false;
/* Following the standard, "(::1)" or - if known at compile time -
- "(lbound:ubound)" are not simply contigous; if strict
+ "(lbound:ubound)" are not simply contiguous; if strict
is false, they are regarded as simply contiguous. */
if (ar->stride[i] && (strict || ar->stride[i]->expr_type != EXPR_CONSTANT
|| ar->stride[i]->ts.type != BT_INTEGER
diff --git a/gcc/fortran/frontend-passes.c b/gcc/fortran/frontend-passes.c
index 5361d86c543..40ca0745a1f 100644
--- a/gcc/fortran/frontend-passes.c
+++ b/gcc/fortran/frontend-passes.c
@@ -243,7 +243,7 @@ cfe_register_funcs (gfc_expr **e, int *walk_subtrees ATTRIBUTE_UNUSED,
}
/* Returns a new expression (a variable) to be used in place of the old one,
- with an an assignment statement before the current statement to set
+ with an assignment statement before the current statement to set
the value of the variable. Creates a new BLOCK for the statement if
that hasn't already been done and puts the statement, plus the
newly created variables, in that block. */
@@ -806,7 +806,7 @@ optimize_op (gfc_expr *e)
{
gfc_intrinsic_op op = e->value.op.op;
- /* Only use new-style comparisions. */
+ /* Only use new-style comparisons. */
switch(op)
{
case INTRINSIC_EQ_OS:
@@ -931,7 +931,7 @@ optimize_comparison (gfc_expr *e, gfc_intrinsic_op op)
}
else if (e->expr_type == EXPR_FUNCTION)
{
- /* One of the lexical comparision functions. */
+ /* One of the lexical comparison functions. */
firstarg = e->value.function.actual;
secondarg = firstarg->next;
op1 = firstarg->expr;
diff --git a/gcc/fortran/match.c b/gcc/fortran/match.c
index 93d7fab61b6..29b6428ab92 100644
--- a/gcc/fortran/match.c
+++ b/gcc/fortran/match.c
@@ -597,7 +597,7 @@ gfc_match_name_C (const char **buffer)
c = gfc_next_char_literal (INSTRING_WARN);
/* If the user put nothing expect spaces between the quotes, it is valid
- and simply means there is no name= specifier and the name is the fortran
+ and simply means there is no name= specifier and the name is the Fortran
symbol name, all lowercase. */
if (c == '"' || c == '\'')
{
@@ -5366,7 +5366,7 @@ gfc_match_select_type (void)
array, which can have a reference, from other expressions that
have references, such as derived type components, and are not
allowed by the standard.
- TODO; see is it is sufficent to exclude component and substring
+ TODO; see is it is sufficient to exclude component and substring
references. */
class_array = expr1->expr_type == EXPR_VARIABLE
&& expr1->ts.type != BT_UNKNOWN
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c
index a56d3f702ef..3627b714a07 100644
--- a/gcc/fortran/resolve.c
+++ b/gcc/fortran/resolve.c
@@ -1401,7 +1401,7 @@ count_specific_procs (gfc_expr *e)
/* See if a call to sym could possibly be a not allowed RECURSION because of
- a missing RECURIVE declaration. This means that either sym is the current
+ a missing RECURSIVE declaration. This means that either sym is the current
context itself, or sym is the parent of a contained procedure calling its
non-RECURSIVE containing procedure.
This also works if sym is an ENTRY. */
@@ -5684,7 +5684,7 @@ resolve_typebound_static (gfc_expr* e, gfc_symtree** target,
derived = e->value.compcall.base_object->ts.u.derived;
st = NULL;
- /* If necessary, go throught the inheritance chain. */
+ /* If necessary, go through the inheritance chain. */
while (!st && derived)
{
/* Look for the typebound procedure 'name'. */
@@ -6879,7 +6879,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code)
gfc_component *c;
gfc_try t;
- /* Mark the ultimost array component as being in allocate to allow DIMEN_STAR
+ /* Mark the utmost array component as being in allocate to allow DIMEN_STAR
checking of coarrays. */
for (ref = e->ref; ref; ref = ref->next)
if (ref->next == NULL)
@@ -7130,7 +7130,7 @@ resolve_allocate_expr (gfc_expr *e, gfc_code *code)
if (dimension == 0 && codimension == 0)
goto success;
- /* Make sure the last reference node is an array specifiction. */
+ /* Make sure the last reference node is an array specification. */
if (!ref2 || ref2->type != REF_ARRAY || ref2->u.ar.type == AR_FULL
|| (dimension && ref2->u.ar.dimen == 0))
@@ -8200,7 +8200,7 @@ resolve_select_type (gfc_code *code, gfc_namespace *old_ns)
/* Chain in the new list only if it is marked as dangling. Otherwise
there is a CASE label overlap and this is already used. Just ignore,
- the error is diagonsed elsewhere. */
+ the error is diagnosed elsewhere. */
if (st->n.sym->assoc->dangling)
{
new_st->ext.block.assoc = st->n.sym->assoc;
@@ -9366,7 +9366,7 @@ resolve_code (gfc_code *code, gfc_namespace *ns)
case EXEC_OMP_WORKSHARE:
omp_workshare_save = omp_workshare_flag;
omp_workshare_flag = 1;
- /* FALLTHROUGH */
+ /* FALL THROUGH */
default:
gfc_resolve_blocks (code->block, ns);
break;
diff --git a/gcc/fortran/trans-array.c b/gcc/fortran/trans-array.c
index 02bb38d41e4..253446215d3 100644
--- a/gcc/fortran/trans-array.c
+++ b/gcc/fortran/trans-array.c
@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. If not see
descriptors and data pointers are also translated.
If the expression is an assignment, we must then resolve any dependencies.
- In fortran all the rhs values of an assignment must be evaluated before
+ In Fortran all the rhs values of an assignment must be evaluated before
any assignments take place. This can require a temporary array to store the
values. We also require a temporary when we are passing array expressions
or vector subscripts as procedure parameters.
@@ -973,7 +973,7 @@ get_array_ref_dim_for_loop_dim (gfc_ss *ss, int loop_dim)
'eltype' == NULL signals that the temporary should be a class object.
The 'initial' expression is used to obtain the size of the dynamic
- type; otehrwise the allocation and initialisation proceeds as for any
+ type; otherwise the allocation and initialisation proceeds as for any
other expression
PRE, POST, INITIAL, DYNAMIC and DEALLOC are as for
@@ -1754,7 +1754,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
tmp = build1_v (LABEL_EXPR, exit_label);
gfc_add_expr_to_block (&implied_do_block, tmp);
- /* Finishe the implied-do loop. */
+ /* Finish the implied-do loop. */
tmp = gfc_finish_block(&implied_do_block);
gfc_add_expr_to_block(pblock, tmp);
@@ -1765,7 +1765,7 @@ gfc_trans_array_constructor_value (stmtblock_t * pblock, tree type,
}
-/* A catch-all to obtain the string length for anything that is not a
+/* A catch-all to obtain the string length for anything that is not
a substring of non-constant length, a constant, array or variable. */
static void
@@ -4323,7 +4323,7 @@ temporary:
/* Browse through each array's information from the scalarizer and set the loop
bounds according to the "best" one (per dimension), i.e. the one which
- provides the most information (constant bounds, shape, etc). */
+ provides the most information (constant bounds, shape, etc.). */
static void
set_loop_bounds (gfc_loopinfo *loop)
@@ -4367,7 +4367,7 @@ set_loop_bounds (gfc_loopinfo *loop)
}
else
{
- /* Silence unitialized warnings. */
+ /* Silence uninitialized warnings. */
specinfo = NULL;
spec_dim = 0;
}
@@ -4906,7 +4906,7 @@ gfc_array_init_size (tree descriptor, int rank, int corank, tree * poffset,
}
/* The stride is the number of elements in the array, so multiply by the
- size of an element to get the total size. Obviously, if there ia a
+ size of an element to get the total size. Obviously, if there is a
SOURCE expression (expr3) we must use its element size. */
if (expr3_elem_size != NULL_TREE)
tmp = expr3_elem_size;
@@ -6382,7 +6382,7 @@ gfc_conv_expr_descriptor (gfc_se * se, gfc_expr * expr, gfc_ss * ss)
/* A transformational function return value will be a temporary
array descriptor. We still need to go through the scalarizer
- to create the descriptor. Elemental functions ar handled as
+ to create the descriptor. Elemental functions are handled as
arbitrary expressions, i.e. copy to a temporary. */
if (se->direct_byref)
@@ -7423,7 +7423,7 @@ structure_alloc_comps (gfc_symbol * der_type, tree decl,
case DEALLOCATE_ALLOC_COMP:
/* gfc_deallocate_scalar_with_status calls gfc_deallocate_alloc_comp
- (ie. this function) so generate all the calls and suppress the
+ (i.e. this function) so generate all the calls and suppress the
recursion from here, if necessary. */
called_dealloc_with_status = false;
gfc_init_block (&tmpblock);
@@ -8455,7 +8455,7 @@ gfc_reverse_ss (gfc_ss * ss)
}
-/* Given an expression refering to a procedure, return the symbol of its
+/* Given an expression referring to a procedure, return the symbol of its
interface. We can't get the procedure symbol directly as we have to handle
the case of (deferred) type-bound procedures. */
diff --git a/gcc/fortran/trans-common.c b/gcc/fortran/trans-common.c
index ce7114fb88d..86cf0070ed3 100644
--- a/gcc/fortran/trans-common.c
+++ b/gcc/fortran/trans-common.c
@@ -86,7 +86,7 @@ along with GCC; see the file COPYING3. If not see
Each segment is described by a chain of segment_info structures. Each
segment_info structure describes the extents of a single variable within
the segment. This list is maintained in the order the elements are
- positioned withing the segment. If two elements have the same starting
+ positioned within the segment. If two elements have the same starting
offset the smaller will come first. If they also have the same size their
ordering is undefined.
@@ -99,7 +99,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
-#include "output.h" /* For decl_default_tls_model. */
#include "gfortran.h"
#include "trans.h"
#include "trans-types.h"
diff --git a/gcc/fortran/trans-decl.c b/gcc/fortran/trans-decl.c
index 0480f956c84..637376b7412 100644
--- a/gcc/fortran/trans-decl.c
+++ b/gcc/fortran/trans-decl.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "diagnostic-core.h" /* For internal_error. */
#include "toplev.h" /* For announce_function. */
-#include "output.h" /* For decl_default_tls_model. */
#include "target.h"
#include "function.h"
#include "flags.h"
diff --git a/gcc/fortran/trans-intrinsic.c b/gcc/fortran/trans-intrinsic.c
index bfbebf3269b..04d6caab183 100644
--- a/gcc/fortran/trans-intrinsic.c
+++ b/gcc/fortran/trans-intrinsic.c
@@ -43,7 +43,7 @@ along with GCC; see the file COPYING3. If not see
/* Only for gfc_trans_assign and gfc_trans_pointer_assign. */
#include "trans-stmt.h"
-/* This maps fortran intrinsic math functions to external library or GCC
+/* This maps Fortran intrinsic math functions to external library or GCC
builtin functions. */
typedef struct GTY(()) gfc_intrinsic_map_t {
/* The explicit enum is required to work around inadequacies in the
@@ -1579,7 +1579,7 @@ conv_intrinsic_cobound (gfc_se * se, gfc_expr * expr)
}
- /* Substract 1 to get to zero based and add dimensions. */
+ /* Subtract 1 to get to zero based and add dimensions. */
switch (arg->expr->rank)
{
case 0:
diff --git a/gcc/fortran/trans-types.c b/gcc/fortran/trans-types.c
index 21a94fd6f06..aa50e3d0b21 100644
--- a/gcc/fortran/trans-types.c
+++ b/gcc/fortran/trans-types.c
@@ -1957,7 +1957,7 @@ gfc_nonrestricted_type (tree t)
{
tree ret = t;
- /* If the type isn't layed out yet, don't copy it. If something
+ /* If the type isn't laid out yet, don't copy it. If something
needs it for real it should wait until the type got finished. */
if (!TYPE_SIZE (t))
return t;
diff --git a/gcc/fortran/trans.c b/gcc/fortran/trans.c
index 5d6e6ef5190..3313be92df8 100644
--- a/gcc/fortran/trans.c
+++ b/gcc/fortran/trans.c
@@ -1130,15 +1130,12 @@ internal_realloc (void *mem, size_t size)
if (!res && size != 0)
_gfortran_os_error ("Allocation would exceed memory limit");
- if (size == 0)
- return NULL;
-
return res;
} */
tree
gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
{
- tree msg, res, nonzero, zero, null_result, tmp;
+ tree msg, res, nonzero, null_result, tmp;
tree type = TREE_TYPE (mem);
size = gfc_evaluate_now (size, block);
@@ -1169,15 +1166,6 @@ gfc_call_realloc (stmtblock_t * block, tree mem, tree size)
build_empty_stmt (input_location));
gfc_add_expr_to_block (block, tmp);
- /* if (size == 0) then the result is NULL. */
- tmp = fold_build2_loc (input_location, MODIFY_EXPR, type, res,
- build_int_cst (type, 0));
- zero = fold_build1_loc (input_location, TRUTH_NOT_EXPR, boolean_type_node,
- nonzero);
- tmp = fold_build3_loc (input_location, COND_EXPR, void_type_node, zero, tmp,
- build_empty_stmt (input_location));
- gfc_add_expr_to_block (block, tmp);
-
return res;
}
diff --git a/gcc/function.c b/gcc/function.c
index 00c55a16a62..274d42191cb 100644
--- a/gcc/function.c
+++ b/gcc/function.c
@@ -54,7 +54,6 @@ along with GCC; see the file COPYING3. If not see
#include "hashtab.h"
#include "ggc.h"
#include "tm_p.h"
-#include "integrate.h"
#include "langhooks.h"
#include "target.h"
#include "common/common-target.h"
@@ -527,7 +526,6 @@ assign_stack_local (enum machine_mode mode, HOST_WIDE_INT size, int align)
return assign_stack_local_1 (mode, size, align, ASLK_RECORD_PAD);
}
-
/* In order to evaluate some expressions, such as function calls returning
structures in memory, we need to temporarily allocate stack locations.
We record each allocated temporary in the following structure.
@@ -540,11 +538,7 @@ assign_stack_local (enum machine_mode mode, HOST_WIDE_INT size, int align)
result could be in a temporary, we preserve it if we can determine which
one it is in. If we cannot determine which temporary may contain the
result, all temporaries are preserved. A temporary is preserved by
- pretending it was allocated at the previous nesting level.
-
- Automatic variables are also assigned temporary slots, at the nesting
- level where they are defined. They are marked a "kept" so that
- free_temp_slots will not free them. */
+ pretending it was allocated at the previous nesting level. */
struct GTY(()) temp_slot {
/* Points to next temporary slot. */
@@ -564,12 +558,8 @@ struct GTY(()) temp_slot {
unsigned int align;
/* Nonzero if this temporary is currently in use. */
char in_use;
- /* Nonzero if this temporary has its address taken. */
- char addr_taken;
/* Nesting level at which this slot is being used. */
int level;
- /* Nonzero if this should survive a call to free_temp_slots. */
- int keep;
/* The offset of the slot from the frame_pointer, including extra space
for alignment. This info is for combine_temp_slots. */
HOST_WIDE_INT base_offset;
@@ -775,17 +765,11 @@ find_temp_slot_from_address (rtx x)
SIZE is the size in units of the space required. We do no rounding here
since assign_stack_local will do any required rounding.
- KEEP is 1 if this slot is to be retained after a call to
- free_temp_slots. Automatic variables for a block are allocated
- with this flag. KEEP values of 2 or 3 were needed respectively
- for variables whose lifetime is controlled by CLEANUP_POINT_EXPRs
- or for SAVE_EXPRs, but they are now unused.
-
TYPE is the type that will be used for the stack slot. */
rtx
assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
- int keep, tree type)
+ tree type)
{
unsigned int align;
struct temp_slot *p, *best_p = 0, *selected = NULL, **pp;
@@ -795,9 +779,6 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
of a variable size. */
gcc_assert (size != -1);
- /* These are now unused. */
- gcc_assert (keep <= 1);
-
align = get_stack_local_alignment (type, mode);
/* Try to find an available, already-allocated temporary of the proper
@@ -846,7 +827,7 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
if (best_p->size - rounded_size >= alignment)
{
p = ggc_alloc_temp_slot ();
- p->in_use = p->addr_taken = 0;
+ p->in_use = 0;
p->size = best_p->size - rounded_size;
p->base_offset = best_p->base_offset + rounded_size;
p->full_size = best_p->full_size - rounded_size;
@@ -918,10 +899,8 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
p = selected;
p->in_use = 1;
- p->addr_taken = 0;
p->type = type;
p->level = temp_slot_level;
- p->keep = keep;
pp = temp_slots_at_level (p->level);
insert_slot_to_list (p, pp);
@@ -946,26 +925,25 @@ assign_stack_temp_for_type (enum machine_mode mode, HOST_WIDE_INT size,
}
/* Allocate a temporary stack slot and record it for possible later
- reuse. First three arguments are same as in preceding function. */
+ reuse. First two arguments are same as in preceding function. */
rtx
-assign_stack_temp (enum machine_mode mode, HOST_WIDE_INT size, int keep)
+assign_stack_temp (enum machine_mode mode, HOST_WIDE_INT size)
{
- return assign_stack_temp_for_type (mode, size, keep, NULL_TREE);
+ return assign_stack_temp_for_type (mode, size, NULL_TREE);
}
/* Assign a temporary.
If TYPE_OR_DECL is a decl, then we are doing it on behalf of the decl
and so that should be used in error messages. In either case, we
allocate of the given type.
- KEEP is as for assign_stack_temp.
MEMORY_REQUIRED is 1 if the result must be addressable stack memory;
it is 0 if a register is OK.
DONT_PROMOTE is 1 if we should not promote values in register
to wider modes. */
rtx
-assign_temp (tree type_or_decl, int keep, int memory_required,
+assign_temp (tree type_or_decl, int memory_required,
int dont_promote ATTRIBUTE_UNUSED)
{
tree type, decl;
@@ -1011,7 +989,7 @@ assign_temp (tree type_or_decl, int keep, int memory_required,
size = 1;
}
- tmp = assign_stack_temp_for_type (mode, size, keep, type);
+ tmp = assign_stack_temp_for_type (mode, size, type);
return tmp;
}
@@ -1139,32 +1117,10 @@ update_temp_slot_address (rtx old_rtx, rtx new_rtx)
insert_temp_slot_address (new_rtx, p);
}
-/* If X could be a reference to a temporary slot, mark the fact that its
- address was taken. */
-
-void
-mark_temp_addr_taken (rtx x)
-{
- struct temp_slot *p;
-
- if (x == 0)
- return;
-
- /* If X is not in memory or is at a constant address, it cannot be in
- a temporary slot. */
- if (!MEM_P (x) || CONSTANT_P (XEXP (x, 0)))
- return;
-
- p = find_temp_slot_from_address (XEXP (x, 0));
- if (p != 0)
- p->addr_taken = 1;
-}
-
/* If X could be a reference to a temporary slot, mark that slot as
belonging to the to one level higher than the current level. If X
matched one of our slots, just mark that one. Otherwise, we can't
- easily predict which it is, so upgrade all of them. Kept slots
- need not be touched.
+ easily predict which it is, so upgrade all of them.
This is called when an ({...}) construct occurs and a statement
returns a value in memory. */
@@ -1174,43 +1130,18 @@ preserve_temp_slots (rtx x)
{
struct temp_slot *p = 0, *next;
- /* If there is no result, we still might have some objects whose address
- were taken, so we need to make sure they stay around. */
if (x == 0)
- {
- for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
- {
- next = p->next;
-
- if (p->addr_taken)
- move_slot_to_level (p, temp_slot_level - 1);
- }
-
- return;
- }
+ return;
/* If X is a register that is being used as a pointer, see if we have
- a temporary slot we know it points to. To be consistent with
- the code below, we really should preserve all non-kept slots
- if we can't find a match, but that seems to be much too costly. */
+ a temporary slot we know it points to. */
if (REG_P (x) && REG_POINTER (x))
p = find_temp_slot_from_address (x);
/* If X is not in memory or is at a constant address, it cannot be in
- a temporary slot, but it can contain something whose address was
- taken. */
+ a temporary slot. */
if (p == 0 && (!MEM_P (x) || CONSTANT_P (XEXP (x, 0))))
- {
- for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
- {
- next = p->next;
-
- if (p->addr_taken)
- move_slot_to_level (p, temp_slot_level - 1);
- }
-
- return;
- }
+ return;
/* First see if we can find a match. */
if (p == 0)
@@ -1218,23 +1149,8 @@ preserve_temp_slots (rtx x)
if (p != 0)
{
- /* Move everything at our level whose address was taken to our new
- level in case we used its address. */
- struct temp_slot *q;
-
if (p->level == temp_slot_level)
- {
- for (q = *temp_slots_at_level (temp_slot_level); q; q = next)
- {
- next = q->next;
-
- if (p != q && q->addr_taken)
- move_slot_to_level (q, temp_slot_level - 1);
- }
-
- move_slot_to_level (p, temp_slot_level - 1);
- p->addr_taken = 0;
- }
+ move_slot_to_level (p, temp_slot_level - 1);
return;
}
@@ -1242,9 +1158,7 @@ preserve_temp_slots (rtx x)
for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
{
next = p->next;
-
- if (!p->keep)
- move_slot_to_level (p, temp_slot_level - 1);
+ move_slot_to_level (p, temp_slot_level - 1);
}
}
@@ -1260,12 +1174,8 @@ free_temp_slots (void)
for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
{
next = p->next;
-
- if (!p->keep)
- {
- make_slot_available (p);
- some_available = true;
- }
+ make_slot_available (p);
+ some_available = true;
}
if (some_available)
@@ -1289,22 +1199,7 @@ push_temp_slots (void)
void
pop_temp_slots (void)
{
- struct temp_slot *p, *next;
- bool some_available = false;
-
- for (p = *temp_slots_at_level (temp_slot_level); p; p = next)
- {
- next = p->next;
- make_slot_available (p);
- some_available = true;
- }
-
- if (some_available)
- {
- remove_unused_temp_slot_addresses ();
- combine_temp_slots ();
- }
-
+ free_temp_slots ();
temp_slot_level--;
}
@@ -1328,6 +1223,133 @@ init_temp_slots (void)
htab_empty (temp_slot_address_table);
}
+/* Functions and data structures to keep track of the values hard regs
+ had at the start of the function. */
+
+/* Private type used by get_hard_reg_initial_reg, get_hard_reg_initial_val,
+ and has_hard_reg_initial_val.. */
+typedef struct GTY(()) initial_value_pair {
+ rtx hard_reg;
+ rtx pseudo;
+} initial_value_pair;
+/* ??? This could be a VEC but there is currently no way to define an
+ opaque VEC type. This could be worked around by defining struct
+ initial_value_pair in function.h. */
+typedef struct GTY(()) initial_value_struct {
+ int num_entries;
+ int max_entries;
+ initial_value_pair * GTY ((length ("%h.num_entries"))) entries;
+} initial_value_struct;
+
+/* If a pseudo represents an initial hard reg (or expression), return
+ it, else return NULL_RTX. */
+
+rtx
+get_hard_reg_initial_reg (rtx reg)
+{
+ struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
+ int i;
+
+ if (ivs == 0)
+ return NULL_RTX;
+
+ for (i = 0; i < ivs->num_entries; i++)
+ if (rtx_equal_p (ivs->entries[i].pseudo, reg))
+ return ivs->entries[i].hard_reg;
+
+ return NULL_RTX;
+}
+
+/* Make sure that there's a pseudo register of mode MODE that stores the
+ initial value of hard register REGNO. Return an rtx for such a pseudo. */
+
+rtx
+get_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
+{
+ struct initial_value_struct *ivs;
+ rtx rv;
+
+ rv = has_hard_reg_initial_val (mode, regno);
+ if (rv)
+ return rv;
+
+ ivs = crtl->hard_reg_initial_vals;
+ if (ivs == 0)
+ {
+ ivs = ggc_alloc_initial_value_struct ();
+ ivs->num_entries = 0;
+ ivs->max_entries = 5;
+ ivs->entries = ggc_alloc_vec_initial_value_pair (5);
+ crtl->hard_reg_initial_vals = ivs;
+ }
+
+ if (ivs->num_entries >= ivs->max_entries)
+ {
+ ivs->max_entries += 5;
+ ivs->entries = GGC_RESIZEVEC (initial_value_pair, ivs->entries,
+ ivs->max_entries);
+ }
+
+ ivs->entries[ivs->num_entries].hard_reg = gen_rtx_REG (mode, regno);
+ ivs->entries[ivs->num_entries].pseudo = gen_reg_rtx (mode);
+
+ return ivs->entries[ivs->num_entries++].pseudo;
+}
+
+/* See if get_hard_reg_initial_val has been used to create a pseudo
+ for the initial value of hard register REGNO in mode MODE. Return
+ the associated pseudo if so, otherwise return NULL. */
+
+rtx
+has_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
+{
+ struct initial_value_struct *ivs;
+ int i;
+
+ ivs = crtl->hard_reg_initial_vals;
+ if (ivs != 0)
+ for (i = 0; i < ivs->num_entries; i++)
+ if (GET_MODE (ivs->entries[i].hard_reg) == mode
+ && REGNO (ivs->entries[i].hard_reg) == regno)
+ return ivs->entries[i].pseudo;
+
+ return NULL_RTX;
+}
+
+unsigned int
+emit_initial_value_sets (void)
+{
+ struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
+ int i;
+ rtx seq;
+
+ if (ivs == 0)
+ return 0;
+
+ start_sequence ();
+ for (i = 0; i < ivs->num_entries; i++)
+ emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg);
+ seq = get_insns ();
+ end_sequence ();
+
+ emit_insn_at_entry (seq);
+ return 0;
+}
+
+/* Return the hardreg-pseudoreg initial values pair entry I and
+ TRUE if I is a valid entry, or FALSE if I is not a valid entry. */
+bool
+initial_value_entry (int i, rtx *hreg, rtx *preg)
+{
+ struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
+ if (!ivs || i >= ivs->num_entries)
+ return false;
+
+ *hreg = ivs->entries[i].hard_reg;
+ *preg = ivs->entries[i].pseudo;
+ return true;
+}
+
/* These routines are responsible for converting virtual register references
to the actual hard register references once RTL generation is complete.
@@ -4788,11 +4810,8 @@ expand_function_start (tree subr)
tree t_save;
rtx r_save;
- /* ??? We need to do this save early. Unfortunately here is
- before the frame variable gets declared. Help out... */
tree var = TREE_OPERAND (cfun->nonlocal_goto_save_area, 0);
- if (!DECL_RTL_SET_P (var))
- expand_decl (var);
+ gcc_assert (DECL_RTL_SET_P (var));
t_save = build4 (ARRAY_REF,
TREE_TYPE (TREE_TYPE (cfun->nonlocal_goto_save_area)),
diff --git a/gcc/function.h b/gcc/function.h
index 34efb3157ab..c8357bf5ee0 100644
--- a/gcc/function.h
+++ b/gcc/function.h
@@ -264,8 +264,11 @@ struct GTY(()) rtl_data {
the hard register containing the result. */
rtx return_rtx;
- /* Opaque pointer used by get_hard_reg_initial_val and
- has_hard_reg_initial_val (see integrate.[hc]). */
+ /* Vector of initial-value pairs. Each pair consists of a pseudo
+ register of approprite mode that stores the initial value a hard
+ register REGNO, and that hard register itself. */
+ /* ??? This could be a VEC but there is currently no way to define an
+ opaque VEC type. */
struct initial_value_struct *hard_reg_initial_vals;
/* A variable living at the top of the frame that holds a known value.
@@ -688,7 +691,6 @@ void types_used_by_var_decl_insert (tree type, tree var_decl);
referenced by the global variable. */
extern GTY(()) VEC(tree,gc) *types_used_by_cur_var_decl;
-
/* cfun shouldn't be set directly; use one of these functions instead. */
extern void set_cfun (struct function *new_cfun);
extern void push_cfun (struct function *new_cfun);
@@ -760,6 +762,14 @@ extern int get_last_funcdef_no (void);
extern bool requires_stack_frame_p (rtx, HARD_REG_SET, HARD_REG_SET);
#endif
+extern rtx get_hard_reg_initial_val (enum machine_mode, unsigned int);
+extern rtx has_hard_reg_initial_val (enum machine_mode, unsigned int);
+extern rtx get_hard_reg_initial_reg (rtx);
+extern bool initial_value_entry (int i, rtx *, rtx *);
+
+/* Called from gimple_expand_cfg. */
+extern unsigned int emit_initial_value_sets (void);
+
/* In predict.c */
extern bool optimize_function_for_size_p (struct function *);
extern bool optimize_function_for_speed_p (struct function *);
diff --git a/gcc/fwprop.c b/gcc/fwprop.c
index c3530372c12..e3ca1fd13af 100644
--- a/gcc/fwprop.c
+++ b/gcc/fwprop.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "obstack.h"
#include "basic-block.h"
-#include "output.h"
#include "df.h"
#include "target.h"
#include "cfgloop.h"
diff --git a/gcc/gcc.c b/gcc/gcc.c
index d1ef922e051..eb3b220d10a 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -8071,7 +8071,7 @@ include_spec_function (int argc, const char **argv)
}
/* %:find-file spec function. This function replaces its argument by
- the file found thru find_file, that is the -print-file-name gcc
+ the file found through find_file, that is the -print-file-name gcc
program option. */
static const char *
find_file_spec_function (int argc, const char **argv)
@@ -8087,7 +8087,7 @@ find_file_spec_function (int argc, const char **argv)
/* %:find-plugindir spec function. This function replaces its argument
- by the -iplugindir=<dir> option. `dir' is found thru find_file, that
+ by the -iplugindir=<dir> option. `dir' is found through find_file, that
is the -print-file-name gcc program option. */
static const char *
find_plugindir_spec_function (int argc, const char **argv ATTRIBUTE_UNUSED)
diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c
index e49cb3c093d..59b8380f299 100644
--- a/gcc/gcov-dump.c
+++ b/gcc/gcov-dump.c
@@ -29,7 +29,7 @@ along with Gcov; see the file COPYING3. If not see
#include "gcov-io.h"
#include "gcov-io.c"
-static void dump_file (const char *);
+static void dump_gcov_file (const char *);
static void print_prefix (const char *, unsigned, gcov_position_t);
static void print_usage (void);
static void print_version (void);
@@ -116,7 +116,7 @@ main (int argc ATTRIBUTE_UNUSED, char **argv)
}
while (argv[optind])
- dump_file (argv[optind++]);
+ dump_gcov_file (argv[optind++]);
return 0;
}
@@ -153,7 +153,7 @@ print_prefix (const char *filename, unsigned depth, gcov_position_t position)
}
static void
-dump_file (const char *filename)
+dump_gcov_file (const char *filename)
{
unsigned tags[4];
unsigned depth = 0;
diff --git a/gcc/gcov.c b/gcc/gcov.c
index 97071115be5..d4823991d14 100644
--- a/gcc/gcov.c
+++ b/gcc/gcov.c
@@ -2219,15 +2219,8 @@ read_line (FILE *file)
return string;
}
pos += len;
- ptr = XNEWVEC (char, string_len * 2);
- if (ptr)
- {
- memcpy (ptr, string, pos);
- string = ptr;
- string_len += 2;
- }
- else
- pos = 0;
+ string = XRESIZEVEC (char, string, string_len * 2);
+ string_len *= 2;
}
return pos ? string : NULL;
diff --git a/gcc/gcse.c b/gcc/gcse.c
index a050ff5ba6b..18e963d1ff0 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -150,7 +150,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "expr.h"
#include "except.h"
@@ -2906,7 +2905,7 @@ hoist_expr_reaches_here_p (basic_block expr_bb, int expr_index, basic_block bb,
return (pred == NULL);
}
-/* Find occurence in BB. */
+/* Find occurrence in BB. */
static struct occr *
find_occr_in_bb (struct occr *occr, basic_block bb)
@@ -2990,11 +2989,11 @@ hoist_code (void)
{
/* Current expression. */
struct expr *expr = index_map[i];
- /* Number of occurences of EXPR that can be hoisted to BB. */
+ /* Number of occurrences of EXPR that can be hoisted to BB. */
int hoistable = 0;
- /* Basic blocks that have occurences reachable from BB. */
+ /* Basic blocks that have occurrences reachable from BB. */
bitmap_head _from_bbs, *from_bbs = &_from_bbs;
- /* Occurences reachable from BB. */
+ /* Occurrences reachable from BB. */
VEC (occr_t, heap) *occrs_to_hoist = NULL;
/* We want to insert the expression into BB only once, so
note when we've inserted it. */
@@ -3004,14 +3003,14 @@ hoist_code (void)
bitmap_initialize (from_bbs, 0);
/* If an expression is computed in BB and is available at end of
- BB, hoist all occurences dominated by BB to BB. */
+ BB, hoist all occurrences dominated by BB to BB. */
if (TEST_BIT (comp[bb->index], i))
{
occr = find_occr_in_bb (expr->antic_occr, bb);
if (occr)
{
- /* An occurence might've been already deleted
+ /* An occurrence might've been already deleted
while processing a dominator of BB. */
if (!occr->deleted_p)
{
@@ -3042,7 +3041,7 @@ hoist_code (void)
occr = find_occr_in_bb (expr->antic_occr, dominated);
gcc_assert (occr);
- /* An occurence might've been already deleted
+ /* An occurrence might've been already deleted
while processing a dominator of BB. */
if (occr->deleted_p)
continue;
@@ -3084,7 +3083,7 @@ hoist_code (void)
if (hoistable > 1 && dbg_cnt (hoist_insn))
{
/* If (hoistable != VEC_length), then there is
- an occurence of EXPR in BB itself. Don't waste
+ an occurrence of EXPR in BB itself. Don't waste
time looking for LCA in this case. */
if ((unsigned) hoistable
== VEC_length (occr_t, occrs_to_hoist))
@@ -3094,7 +3093,7 @@ hoist_code (void)
lca = nearest_common_dominator_for_set (CDI_DOMINATORS,
from_bbs);
if (lca != bb)
- /* Punt, it's better to hoist these occurences to
+ /* Punt, it's better to hoist these occurrences to
LCA. */
VEC_free (occr_t, heap, occrs_to_hoist);
}
@@ -3105,7 +3104,7 @@ hoist_code (void)
insn_inserted_p = 0;
- /* Walk through occurences of I'th expressions we want
+ /* Walk through occurrences of I'th expressions we want
to hoist to BB and make the transformations. */
FOR_EACH_VEC_ELT (occr_t, occrs_to_hoist, j, occr)
{
diff --git a/gcc/genautomata.c b/gcc/genautomata.c
index 434b42e0ed3..9f9e066b119 100644
--- a/gcc/genautomata.c
+++ b/gcc/genautomata.c
@@ -2390,7 +2390,7 @@ add_presence_absence (unit_set_el_t dest_list,
/* The function inserts BYPASS in the list of bypasses of the
corresponding output insn. The order of bypasses in the list is
- decribed in a comment for member `bypass_list' (see above). If
+ described in a comment for member `bypass_list' (see above). If
there is already the same bypass in the list the function reports
this and does nothing. */
static void
diff --git a/gcc/genemit.c b/gcc/genemit.c
index 91025e24d88..eefe4978d43 100644
--- a/gcc/genemit.c
+++ b/gcc/genemit.c
@@ -809,7 +809,6 @@ from the machine description file `md'. */\n\n");
printf ("#include \"tm-constrs.h\"\n");
printf ("#include \"ggc.h\"\n");
printf ("#include \"basic-block.h\"\n");
- printf ("#include \"integrate.h\"\n");
printf ("#include \"target.h\"\n\n");
printf ("#define FAIL return (end_sequence (), _val)\n");
printf ("#define DONE return (_val = get_insns (), end_sequence (), _val)\n\n");
diff --git a/gcc/gengtype-state.c b/gcc/gengtype-state.c
index d265f487031..d7ea9b48d94 100644
--- a/gcc/gengtype-state.c
+++ b/gcc/gengtype-state.c
@@ -65,7 +65,7 @@ type_lineloc (const_type_p ty)
}
/* The state file has simplistic lispy lexical tokens. Its lexer gives
- a linked list of struct state_token_st, thru the peek_state_token
+ a linked list of struct state_token_st, through the peek_state_token
function. Lexical tokens are consumed with next_state_tokens. */
@@ -818,7 +818,7 @@ write_state_lang_struct_type (type_p current)
type_p hty = NULL;
const char *homoname = 0;
write_state_struct_union_type (current, "lang_struct");
- /* lang_struct-ures are particularily tricky, since their
+ /* lang_struct-ures are particularly tricky, since their
u.s.lang_struct field gives a list of homonymous struct-s or
union-s! */
DBGPRINTF ("lang_struct @ %p #%d", (void *) current, current->state_number);
diff --git a/gcc/gengtype.c b/gcc/gengtype.c
index d95ef09b5cc..51a5fc7cacc 100644
--- a/gcc/gengtype.c
+++ b/gcc/gengtype.c
@@ -159,7 +159,7 @@ static outf_p *base_files;
#if ENABLE_CHECKING
/* Utility debugging function, printing the various type counts within
- a list of types. Called thru the DBGPRINT_COUNT_TYPE macro. */
+ a list of types. Called through the DBGPRINT_COUNT_TYPE macro. */
void
dbgprint_count_type_at (const char *fil, int lin, const char *msg, type_p t)
{
@@ -1833,7 +1833,7 @@ struct file_rule_st files_rules[] = {
/* Source *.c files are using get_file_gtfilename to compute their
output_name and get_file_basename to compute their for_name
- thru the source_dot_c_frul action. */
+ through the source_dot_c_frul action. */
{ DIR_PREFIX_REGEX "([[:alnum:]_-]*)\\.c$",
REG_EXTENDED, NULL_REGEX, "gt-$3.h", "$3.c", source_dot_c_frul},
/* Common header files get "gtype-desc.c" as their output_name,
@@ -2009,7 +2009,7 @@ get_output_file_with_visibility (input_file *inpf)
/* Try each rule in sequence in files_rules until one is triggered. */
{
int rulix = 0;
- DBGPRINTF ("passing input file @ %p named %s thru the files_rules",
+ DBGPRINTF ("passing input file @ %p named %s through the files_rules",
(void*) inpf, inpfname);
for (; files_rules[rulix].frul_srcexpr != NULL; rulix++)
diff --git a/gcc/genhooks.c b/gcc/genhooks.c
index 789744ce228..fc48e45161c 100644
--- a/gcc/genhooks.c
+++ b/gcc/genhooks.c
@@ -91,7 +91,7 @@ s_hook_eq_p (const void *p1, const void *p2)
}
/* Read the documentation file with name IN_FNAME, perform substitutions
- to incorporate informtion from hook_array, and emit the result on stdout.
+ to incorporate information from hook_array, and emit the result on stdout.
Hooks defined with DEFHOOK / DEFHOOKPOD are emitted at the place of a
matching @hook in the input file; if there is no matching @hook, the
hook is emitted after the hook that precedes it in target.def .
diff --git a/gcc/gimple-fold.c b/gcc/gimple-fold.c
index 9358bf80f5c..b2bd3378802 100644
--- a/gcc/gimple-fold.c
+++ b/gcc/gimple-fold.c
@@ -94,7 +94,7 @@ can_refer_decl_in_current_unit_p (tree decl, tree from_decl)
produced.
As observed in PR20991 for already optimized out comdat virtual functions
- it may be tempting to not neccesarily give up because the copy will be
+ it may be tempting to not necessarily give up because the copy will be
output elsewhere when corresponding vtable is output.
This is however not possible - ABI specify that COMDATs are output in
units where they are used and when the other unit was compiled with LTO
@@ -154,6 +154,12 @@ canonicalize_constructor_val (tree cval, tree from_decl)
if (TREE_CODE (cval) == ADDR_EXPR)
{
tree base = get_base_address (TREE_OPERAND (cval, 0));
+ if (!base && TREE_CODE (TREE_OPERAND (cval, 0)) == COMPOUND_LITERAL_EXPR)
+ {
+ base = COMPOUND_LITERAL_EXPR_DECL (TREE_OPERAND (cval, 0));
+ if (base)
+ TREE_OPERAND (cval, 0) = base;
+ }
if (!base)
return NULL_TREE;
@@ -1054,7 +1060,7 @@ gimple_extract_devirt_binfo_from_cst (tree cst)
type = TREE_TYPE (fld);
offset -= pos;
}
- /* Artifical sub-objects are ancestors, we do not want to use them for
+ /* Artificial sub-objects are ancestors, we do not want to use them for
devirtualization, at least not here. */
if (last_artificial)
return NULL_TREE;
diff --git a/gcc/gimple-pretty-print.c b/gcc/gimple-pretty-print.c
index 2e3cb0ca872..a80ae90a6f0 100644
--- a/gcc/gimple-pretty-print.c
+++ b/gcc/gimple-pretty-print.c
@@ -156,7 +156,7 @@ debug_gimple_seq (gimple_seq seq)
/* A simple helper to pretty-print some of the gimple tuples in the printf
- style. The format modifiers are preceeded by '%' and are:
+ style. The format modifiers are preceded by '%' and are:
'G' - outputs a string corresponding to the code of the given gimple,
'S' - outputs a gimple_seq with indent of spc + 2,
'T' - outputs the tree t,
diff --git a/gcc/gimple.c b/gcc/gimple.c
index 4b2315d6a57..398cb1f93e4 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -3333,7 +3333,7 @@ gtc_visit (tree t1, tree t2,
|| FIXED_POINT_TYPE_P (t1))
return true;
- /* For other types fall thru to more complex checks. */
+ /* For other types fall through to more complex checks. */
}
/* If the types have been previously registered and found equal
@@ -3755,7 +3755,7 @@ gimple_types_compatible_p (tree t1, tree t2)
|| FIXED_POINT_TYPE_P (t1))
return true;
- /* For other types fall thru to more complex checks. */
+ /* For other types fall through to more complex checks. */
}
/* If the types have been previously registered and found equal
diff --git a/gcc/gimple.h b/gcc/gimple.h
index 523619204bc..8fd64da61db 100644
--- a/gcc/gimple.h
+++ b/gcc/gimple.h
@@ -1588,12 +1588,20 @@ gimple_set_has_volatile_ops (gimple stmt, bool volatilep)
stmt->gsbase.has_volatile_ops = (unsigned) volatilep;
}
+/* Return true if BB is in a transaction. */
+
+static inline bool
+block_in_transaction (basic_block bb)
+{
+ return bb->flags & BB_IN_TRANSACTION;
+}
+
/* Return true if STMT is in a transaction. */
static inline bool
gimple_in_transaction (gimple stmt)
{
- return gimple_bb (stmt)->flags & BB_IN_TRANSACTION;
+ return block_in_transaction (gimple_bb (stmt));
}
/* Return true if statement STMT may access memory. */
@@ -4800,7 +4808,7 @@ gimple_return_set_retval (gimple gs, tree retval)
}
-/* Returns true when the gimple statment STMT is any of the OpenMP types. */
+/* Returns true when the gimple statement STMT is any of the OpenMP types. */
#define CASE_GIMPLE_OMP \
case GIMPLE_OMP_PARALLEL: \
diff --git a/gcc/gimplify.c b/gcc/gimplify.c
index d7f1f82345b..0c672e82382 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -2811,7 +2811,7 @@ shortcut_cond_r (tree pred, tree *true_label_p, tree *false_label_p,
/* Given a conditional expression EXPR with short-circuit boolean
predicates using TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR, break the
- predicate appart into the equivalent sequence of conditionals. */
+ predicate apart into the equivalent sequence of conditionals. */
static tree
shortcut_cond_expr (tree expr)
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc
index e609be9cfce..f9c80b3aeff 100644
--- a/gcc/go/gofrontend/expressions.cc
+++ b/gcc/go/gofrontend/expressions.cc
@@ -4475,9 +4475,8 @@ Binary_expression::eval_constant(Operator op, Numeric_constant* left_nc,
case OPERATOR_LE:
case OPERATOR_GT:
case OPERATOR_GE:
- // These return boolean values and as such must be handled
- // elsewhere.
- go_unreachable();
+ // These return boolean values, not numeric.
+ return false;
default:
break;
}
@@ -5304,24 +5303,13 @@ Binary_expression::operand_address(Statement_inserter* inserter,
bool
Binary_expression::do_numeric_constant_value(Numeric_constant* nc) const
{
- Operator op = this->op_;
-
- if (op == OPERATOR_EQEQ
- || op == OPERATOR_NOTEQ
- || op == OPERATOR_LT
- || op == OPERATOR_LE
- || op == OPERATOR_GT
- || op == OPERATOR_GE)
- return false;
-
Numeric_constant left_nc;
if (!this->left_->numeric_constant_value(&left_nc))
return false;
Numeric_constant right_nc;
if (!this->right_->numeric_constant_value(&right_nc))
return false;
-
- return Binary_expression::eval_constant(op, &left_nc, &right_nc,
+ return Binary_expression::eval_constant(this->op_, &left_nc, &right_nc,
this->location(), nc);
}
diff --git a/gcc/graph.c b/gcc/graph.c
index d3513fde70b..f9319f46b31 100644
--- a/gcc/graph.c
+++ b/gcc/graph.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "rtl.h"
#include "flags.h"
-#include "output.h"
#include "function.h"
#include "hard-reg-set.h"
#include "obstack.h"
diff --git a/gcc/graphite-interchange.c b/gcc/graphite-interchange.c
index cb4d32cc0d2..ae3262a6a61 100644
--- a/gcc/graphite-interchange.c
+++ b/gcc/graphite-interchange.c
@@ -144,7 +144,7 @@ build_partial_difference (ppl_Pointset_Powerset_C_Polyhedron_t *p,
This means that all the time dimensions are equal except for
time_depth, where the constraint is t_{depth} = t'_{depth} + 1
- step. More to this: we should be carefull not to add equalities
+ step. More to this: we should be careful not to add equalities
to the 'coupled' dimensions, which happens when the one dimension
is stripmined dimension, and the other dimension corresponds
to the point loop inside stripmined dimension. */
diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index cdabd738dc6..555100fc5c4 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -1223,7 +1223,7 @@ add_condition_to_domain (ppl_Pointset_Powerset_C_Polyhedron_t ps, gimple stmt,
ppl_delete_Linear_Expression (right);
}
-/* Add conditional statement STMT to pbb. CODE is used as the comparision
+/* Add conditional statement STMT to pbb. CODE is used as the comparison
operator. This allows us to invert the condition or to handle
inequalities. */
@@ -2840,7 +2840,7 @@ follow_inital_value_to_phi (tree arg, tree lhs)
}
-/* Return the argument of the loop PHI that is the inital value coming
+/* Return the argument of the loop PHI that is the initial value coming
from outside the loop. */
static edge
@@ -2860,7 +2860,7 @@ edge_initial_value_for_loop_phi (gimple phi)
return NULL;
}
-/* Return the argument of the loop PHI that is the inital value coming
+/* Return the argument of the loop PHI that is the initial value coming
from outside the loop. */
static tree
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 869159c036f..b959bc5e9ce 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -142,7 +142,6 @@ along with GCC; see the file COPYING3. If not see
#include "sched-int.h"
#include "target.h"
#include "common/common-target.h"
-#include "output.h"
#include "params.h"
#include "vecprim.h"
#include "dbgcnt.h"
@@ -1085,7 +1084,7 @@ print_curr_reg_pressure (void)
gcc_assert (curr_reg_pressure[cl] >= 0);
fprintf (sched_dump, " %s:%d(%d)", reg_class_names[cl],
curr_reg_pressure[cl],
- curr_reg_pressure[cl] - ira_available_class_regs[cl]);
+ curr_reg_pressure[cl] - ira_class_hard_regs_num[cl]);
}
fprintf (sched_dump, "\n");
}
@@ -1634,9 +1633,9 @@ setup_insn_reg_pressure_info (rtx insn)
cl = ira_pressure_classes[i];
gcc_assert (curr_reg_pressure[cl] >= 0);
change = (int) pressure_info[i].set_increase - death[cl];
- before = MAX (0, max_reg_pressure[i] - ira_available_class_regs[cl]);
+ before = MAX (0, max_reg_pressure[i] - ira_class_hard_regs_num[cl]);
after = MAX (0, max_reg_pressure[i] + change
- - ira_available_class_regs[cl]);
+ - ira_class_hard_regs_num[cl]);
hard_regno = ira_class_hard_regs[cl][0];
gcc_assert (hard_regno >= 0);
mode = reg_raw_mode[hard_regno];
@@ -2227,7 +2226,7 @@ model_recompute (rtx insn)
/* Return the cost of increasing the pressure in class CL from FROM to TO.
Here we use the very simplistic cost model that every register above
- ira_available_class_regs[CL] has a spill cost of 1. We could use other
+ ira_class_hard_regs_num[CL] has a spill cost of 1. We could use other
measures instead, such as one based on MEMORY_MOVE_COST. However:
(1) In order for an instruction to be scheduled, the higher cost
@@ -2251,7 +2250,7 @@ model_recompute (rtx insn)
static int
model_spill_cost (int cl, int from, int to)
{
- from = MAX (from, ira_available_class_regs[cl]);
+ from = MAX (from, ira_class_hard_regs_num[cl]);
return MAX (to, from) - from;
}
diff --git a/gcc/hw-doloop.c b/gcc/hw-doloop.c
index 4ba7b4c2e74..dabcdcce495 100644
--- a/gcc/hw-doloop.c
+++ b/gcc/hw-doloop.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "df.h"
#include "cfglayout.h"
#include "cfgloop.h"
-#include "output.h"
#include "recog.h"
#include "target.h"
#include "hw-doloop.h"
diff --git a/gcc/hwint.h b/gcc/hwint.h
index f5e0beec112..9885911a01a 100644
--- a/gcc/hwint.h
+++ b/gcc/hwint.h
@@ -74,6 +74,11 @@ extern char sizeof_long_long_must_be_8[sizeof(long long) == 8 ? 1 : -1];
# endif
#endif
+/* This is a magic identifier which allows GCC to figure out the type
+ of HOST_WIDE_INT for %wd specifier checks. You must issue this
+ typedef before using the __asm_fprintf__ format attribute. */
+typedef HOST_WIDE_INT __gcc_host_wide_int__;
+
/* Various printf format strings for HOST_WIDE_INT. */
#if HOST_BITS_PER_WIDE_INT == HOST_BITS_PER_LONG
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 6f2101ef80b..adeb214a5e4 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -3877,7 +3877,7 @@ find_if_case_1 (basic_block test_bb, edge then_edge, edge else_edge)
/* We can avoid creating a new basic block if then_bb is immediately
followed by else_bb, i.e. deleting then_bb allows test_bb to fall
- thru to else_bb. */
+ through to else_bb. */
if (then_bb->next_bb == else_bb
&& then_bb->prev_bb == test_bb
diff --git a/gcc/input.c b/gcc/input.c
index 5f14489753f..52dde0bc97e 100644
--- a/gcc/input.c
+++ b/gcc/input.c
@@ -1,5 +1,5 @@
/* Data and functions related to line maps and input files.
- Copyright (C) 2004, 2007, 2008, 2009, 2010, 2011
+ Copyright (C) 2004, 2007, 2008, 2009, 2010, 2011, 2012
Free Software Foundation, Inc.
This file is part of GCC.
@@ -105,15 +105,8 @@ read_line (FILE *file)
return string;
}
pos += len;
- ptr = XNEWVEC (char, string_len * 2);
- if (ptr)
- {
- memcpy (ptr, string, pos);
- string = ptr;
- string_len += 2;
- }
- else
- pos = 0;
+ string = XRESIZEVEC (char, string, string_len * 2);
+ string_len *= 2;
}
return pos ? string : NULL;
@@ -124,7 +117,7 @@ read_line (FILE *file)
the null character. */
const char *
-location_get_source_line(expanded_location xloc)
+location_get_source_line (expanded_location xloc)
{
const char *buffer;
int lines = 1;
@@ -162,7 +155,7 @@ expand_location_to_spelling_point (source_location loc)
return expand_location_1 (loc, /*expansion_piont_p=*/false);
}
-/* If LOCATION is in a sytem header and if it's a virtual location for
+/* If LOCATION is in a system header and if it's a virtual location for
a token coming from the expansion of a macro M, unwind it to the
location of the expansion point of M. Otherwise, just return
LOCATION.
diff --git a/gcc/integrate.c b/gcc/integrate.c
deleted file mode 100644
index 53c5d78cf6e..00000000000
--- a/gcc/integrate.c
+++ /dev/null
@@ -1,360 +0,0 @@
-/* Procedure integration for GCC.
- Copyright (C) 1988, 1991, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
- Contributed by Michael Tiemann (tiemann@cygnus.com)
-
-This file is part of GCC.
-
-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 3, or (at your option) any later
-version.
-
-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.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-#include "config.h"
-#include "system.h"
-#include "coretypes.h"
-#include "tm.h"
-
-#include "rtl.h"
-#include "tree.h"
-#include "tm_p.h"
-#include "regs.h"
-#include "flags.h"
-#include "debug.h"
-#include "insn-config.h"
-#include "expr.h"
-#include "output.h"
-#include "recog.h"
-/* For reg_equivs. */
-#include "reload.h"
-#include "integrate.h"
-#include "except.h"
-#include "function.h"
-#include "diagnostic-core.h"
-#include "intl.h"
-#include "params.h"
-#include "ggc.h"
-#include "target.h"
-#include "langhooks.h"
-#include "tree-pass.h"
-#include "df.h"
-
-/* Round to the next highest integer that meets the alignment. */
-#define CEIL_ROUND(VALUE,ALIGN) (((VALUE) + (ALIGN) - 1) & ~((ALIGN)- 1))
-
-
-/* Private type used by {get/has}_hard_reg_initial_val. */
-typedef struct GTY(()) initial_value_pair {
- rtx hard_reg;
- rtx pseudo;
-} initial_value_pair;
-typedef struct GTY(()) initial_value_struct {
- int num_entries;
- int max_entries;
- initial_value_pair * GTY ((length ("%h.num_entries"))) entries;
-} initial_value_struct;
-
-static void set_block_origin_self (tree);
-static void set_block_abstract_flags (tree, int);
-
-
-/* Return false if the function FNDECL cannot be inlined on account of its
- attributes, true otherwise. */
-bool
-function_attribute_inlinable_p (const_tree fndecl)
-{
- if (targetm.attribute_table)
- {
- const_tree a;
-
- for (a = DECL_ATTRIBUTES (fndecl); a; a = TREE_CHAIN (a))
- {
- const_tree name = TREE_PURPOSE (a);
- int i;
-
- for (i = 0; targetm.attribute_table[i].name != NULL; i++)
- if (is_attribute_p (targetm.attribute_table[i].name, name))
- return targetm.function_attribute_inlinable_p (fndecl);
- }
- }
-
- return true;
-}
-
-/* Given a pointer to some BLOCK node, if the BLOCK_ABSTRACT_ORIGIN for the
- given BLOCK node is NULL, set the BLOCK_ABSTRACT_ORIGIN for the node so
- that it points to the node itself, thus indicating that the node is its
- own (abstract) origin. Additionally, if the BLOCK_ABSTRACT_ORIGIN for
- the given node is NULL, recursively descend the decl/block tree which
- it is the root of, and for each other ..._DECL or BLOCK node contained
- therein whose DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also
- still NULL, set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN
- values to point to themselves. */
-
-static void
-set_block_origin_self (tree stmt)
-{
- if (BLOCK_ABSTRACT_ORIGIN (stmt) == NULL_TREE)
- {
- BLOCK_ABSTRACT_ORIGIN (stmt) = stmt;
-
- {
- tree local_decl;
-
- for (local_decl = BLOCK_VARS (stmt);
- local_decl != NULL_TREE;
- local_decl = DECL_CHAIN (local_decl))
- if (! DECL_EXTERNAL (local_decl))
- set_decl_origin_self (local_decl); /* Potential recursion. */
- }
-
- {
- tree subblock;
-
- for (subblock = BLOCK_SUBBLOCKS (stmt);
- subblock != NULL_TREE;
- subblock = BLOCK_CHAIN (subblock))
- set_block_origin_self (subblock); /* Recurse. */
- }
- }
-}
-
-/* Given a pointer to some ..._DECL node, if the DECL_ABSTRACT_ORIGIN for
- the given ..._DECL node is NULL, set the DECL_ABSTRACT_ORIGIN for the
- node to so that it points to the node itself, thus indicating that the
- node represents its own (abstract) origin. Additionally, if the
- DECL_ABSTRACT_ORIGIN for the given node is NULL, recursively descend
- the decl/block tree of which the given node is the root of, and for
- each other ..._DECL or BLOCK node contained therein whose
- DECL_ABSTRACT_ORIGINs or BLOCK_ABSTRACT_ORIGINs are also still NULL,
- set *their* DECL_ABSTRACT_ORIGIN or BLOCK_ABSTRACT_ORIGIN values to
- point to themselves. */
-
-void
-set_decl_origin_self (tree decl)
-{
- if (DECL_ABSTRACT_ORIGIN (decl) == NULL_TREE)
- {
- DECL_ABSTRACT_ORIGIN (decl) = decl;
- if (TREE_CODE (decl) == FUNCTION_DECL)
- {
- tree arg;
-
- for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
- DECL_ABSTRACT_ORIGIN (arg) = arg;
- if (DECL_INITIAL (decl) != NULL_TREE
- && DECL_INITIAL (decl) != error_mark_node)
- set_block_origin_self (DECL_INITIAL (decl));
- }
- }
-}
-
-/* Given a pointer to some BLOCK node, and a boolean value to set the
- "abstract" flags to, set that value into the BLOCK_ABSTRACT flag for
- the given block, and for all local decls and all local sub-blocks
- (recursively) which are contained therein. */
-
-static void
-set_block_abstract_flags (tree stmt, int setting)
-{
- tree local_decl;
- tree subblock;
- unsigned int i;
-
- BLOCK_ABSTRACT (stmt) = setting;
-
- for (local_decl = BLOCK_VARS (stmt);
- local_decl != NULL_TREE;
- local_decl = DECL_CHAIN (local_decl))
- if (! DECL_EXTERNAL (local_decl))
- set_decl_abstract_flags (local_decl, setting);
-
- for (i = 0; i < BLOCK_NUM_NONLOCALIZED_VARS (stmt); i++)
- {
- local_decl = BLOCK_NONLOCALIZED_VAR (stmt, i);
- if ((TREE_CODE (local_decl) == VAR_DECL && !TREE_STATIC (local_decl))
- || TREE_CODE (local_decl) == PARM_DECL)
- set_decl_abstract_flags (local_decl, setting);
- }
-
- for (subblock = BLOCK_SUBBLOCKS (stmt);
- subblock != NULL_TREE;
- subblock = BLOCK_CHAIN (subblock))
- set_block_abstract_flags (subblock, setting);
-}
-
-/* Given a pointer to some ..._DECL node, and a boolean value to set the
- "abstract" flags to, set that value into the DECL_ABSTRACT flag for the
- given decl, and (in the case where the decl is a FUNCTION_DECL) also
- set the abstract flags for all of the parameters, local vars, local
- blocks and sub-blocks (recursively) to the same setting. */
-
-void
-set_decl_abstract_flags (tree decl, int setting)
-{
- DECL_ABSTRACT (decl) = setting;
- if (TREE_CODE (decl) == FUNCTION_DECL)
- {
- tree arg;
-
- for (arg = DECL_ARGUMENTS (decl); arg; arg = DECL_CHAIN (arg))
- DECL_ABSTRACT (arg) = setting;
- if (DECL_INITIAL (decl) != NULL_TREE
- && DECL_INITIAL (decl) != error_mark_node)
- set_block_abstract_flags (DECL_INITIAL (decl), setting);
- }
-}
-
-/* Functions to keep track of the values hard regs had at the start of
- the function. */
-
-rtx
-get_hard_reg_initial_reg (rtx reg)
-{
- struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
- int i;
-
- if (ivs == 0)
- return NULL_RTX;
-
- for (i = 0; i < ivs->num_entries; i++)
- if (rtx_equal_p (ivs->entries[i].pseudo, reg))
- return ivs->entries[i].hard_reg;
-
- return NULL_RTX;
-}
-
-/* Make sure that there's a pseudo register of mode MODE that stores the
- initial value of hard register REGNO. Return an rtx for such a pseudo. */
-
-rtx
-get_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
-{
- struct initial_value_struct *ivs;
- rtx rv;
-
- rv = has_hard_reg_initial_val (mode, regno);
- if (rv)
- return rv;
-
- ivs = crtl->hard_reg_initial_vals;
- if (ivs == 0)
- {
- ivs = ggc_alloc_initial_value_struct ();
- ivs->num_entries = 0;
- ivs->max_entries = 5;
- ivs->entries = ggc_alloc_vec_initial_value_pair (5);
- crtl->hard_reg_initial_vals = ivs;
- }
-
- if (ivs->num_entries >= ivs->max_entries)
- {
- ivs->max_entries += 5;
- ivs->entries = GGC_RESIZEVEC (initial_value_pair, ivs->entries,
- ivs->max_entries);
- }
-
- ivs->entries[ivs->num_entries].hard_reg = gen_rtx_REG (mode, regno);
- ivs->entries[ivs->num_entries].pseudo = gen_reg_rtx (mode);
-
- return ivs->entries[ivs->num_entries++].pseudo;
-}
-
-/* See if get_hard_reg_initial_val has been used to create a pseudo
- for the initial value of hard register REGNO in mode MODE. Return
- the associated pseudo if so, otherwise return NULL. */
-
-rtx
-has_hard_reg_initial_val (enum machine_mode mode, unsigned int regno)
-{
- struct initial_value_struct *ivs;
- int i;
-
- ivs = crtl->hard_reg_initial_vals;
- if (ivs != 0)
- for (i = 0; i < ivs->num_entries; i++)
- if (GET_MODE (ivs->entries[i].hard_reg) == mode
- && REGNO (ivs->entries[i].hard_reg) == regno)
- return ivs->entries[i].pseudo;
-
- return NULL_RTX;
-}
-
-unsigned int
-emit_initial_value_sets (void)
-{
- struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
- int i;
- rtx seq;
-
- if (ivs == 0)
- return 0;
-
- start_sequence ();
- for (i = 0; i < ivs->num_entries; i++)
- emit_move_insn (ivs->entries[i].pseudo, ivs->entries[i].hard_reg);
- seq = get_insns ();
- end_sequence ();
-
- emit_insn_at_entry (seq);
- return 0;
-}
-
-/* If the backend knows where to allocate pseudos for hard
- register initial values, register these allocations now. */
-void
-allocate_initial_values (VEC (reg_equivs_t, gc) *reg_equivs)
-{
- if (targetm.allocate_initial_value)
- {
- struct initial_value_struct *ivs = crtl->hard_reg_initial_vals;
- int i;
-
- if (ivs == 0)
- return;
-
- for (i = 0; i < ivs->num_entries; i++)
- {
- int regno = REGNO (ivs->entries[i].pseudo);
- rtx x = targetm.allocate_initial_value (ivs->entries[i].hard_reg);
-
- if (x && REG_N_SETS (REGNO (ivs->entries[i].pseudo)) <= 1)
- {
- if (MEM_P (x))
- reg_equiv_memory_loc (regno) = x;
- else
- {
- basic_block bb;
- int new_regno;
-
- gcc_assert (REG_P (x));
- new_regno = REGNO (x);
- reg_renumber[regno] = new_regno;
- /* Poke the regno right into regno_reg_rtx so that even
- fixed regs are accepted. */
- SET_REGNO (ivs->entries[i].pseudo, new_regno);
- /* Update global register liveness information. */
- FOR_EACH_BB (bb)
- {
- if (REGNO_REG_SET_P(df_get_live_in (bb), regno))
- SET_REGNO_REG_SET (df_get_live_in (bb), new_regno);
- if (REGNO_REG_SET_P(df_get_live_out (bb), regno))
- SET_REGNO_REG_SET (df_get_live_out (bb), new_regno);
- }
- }
- }
- }
- }
-}
-
-#include "gt-integrate.h"
diff --git a/gcc/integrate.h b/gcc/integrate.h
deleted file mode 100644
index e32a92abff3..00000000000
--- a/gcc/integrate.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Function integration definitions for GCC
- Copyright (C) 1990, 1995, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
- 2007, 2008, 2010 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-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 3, or (at your option) any later
-version.
-
-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.
-
-You should have received a copy of the GNU General Public License
-along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-extern rtx get_hard_reg_initial_val (enum machine_mode, unsigned int);
-extern rtx has_hard_reg_initial_val (enum machine_mode, unsigned int);
-/* If a pseudo represents an initial hard reg (or expression), return
- it, else return NULL_RTX. */
-extern rtx get_hard_reg_initial_reg (rtx);
-/* Called from rest_of_compilation. */
-extern unsigned int emit_initial_value_sets (void);
-
-/* Check whether there's any attribute in a function declaration that
- makes the function uninlinable. Returns false if it finds any,
- true otherwise. */
-extern bool function_attribute_inlinable_p (const_tree);
-
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index 533398b4f7b..4539d46ab73 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. If not see
for each strongly connected component (SCC), we propagate constants
according to previously computed jump functions. We also record what known
values depend on other known values and estimate local effects. Finally, we
- propagate cumulative information about these effects from dependant values
+ propagate cumulative information about these effects from dependent values
to those on which they depend.
Second, we again traverse the call graph in the same topological order and
@@ -1588,7 +1588,7 @@ safe_add (int a, int b)
/* Propagate the estimated effects of individual values along the topological
- from the dependant values to those they depend on. */
+ from the dependent values to those they depend on. */
static void
propagate_effects (void)
diff --git a/gcc/ipa-inline-analysis.c b/gcc/ipa-inline-analysis.c
index f381907078c..f0111cb66b4 100644
--- a/gcc/ipa-inline-analysis.c
+++ b/gcc/ipa-inline-analysis.c
@@ -2010,7 +2010,7 @@ estimate_function_body_sizes (struct cgraph_node *node, bool early)
p = true_predicate ();
/* We account everything but the calls. Calls have their own
- size/time info attached to cgraph edges. This is neccesary
+ size/time info attached to cgraph edges. This is necessary
in order to make the cost disappear after inlining. */
if (!is_gimple_call (stmt))
{
diff --git a/gcc/ipa-inline-transform.c b/gcc/ipa-inline-transform.c
index 1c77e86723a..9fdfbb91b24 100644
--- a/gcc/ipa-inline-transform.c
+++ b/gcc/ipa-inline-transform.c
@@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
#include "langhooks.h"
#include "cgraph.h"
#include "timevar.h"
-#include "output.h"
#include "intl.h"
#include "coverage.h"
#include "ggc.h"
@@ -264,7 +263,7 @@ inline_call (struct cgraph_edge *e, bool update_original,
This is done before inline plan is applied to NODE when there are
still some inline clones if it.
- This is neccesary because inline decisions are not really transitive
+ This is necessary because inline decisions are not really transitive
and the other inline clones may have different bodies. */
static struct cgraph_node *
diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c
index c3482edf087..c45d4701da2 100644
--- a/gcc/ipa-inline.c
+++ b/gcc/ipa-inline.c
@@ -777,7 +777,7 @@ edge_badness (struct cgraph_edge *edge, bool dump)
edge_growth
badness = -goodness
- The fraction is upside down, becuase on edge counts and time beneits
+ The fraction is upside down, because on edge counts and time beneits
the bounds are known. Edge growth is essentially unlimited. */
else if (max_count)
@@ -1369,7 +1369,7 @@ inline_small_functions (void)
continue;
/* Be sure that caches are maintained consistent.
- We can not make this ENABLE_CHECKING only because it cause differnt
+ We can not make this ENABLE_CHECKING only because it cause different
updates of the fibheap queue. */
cached_badness = edge_badness (edge, false);
reset_edge_growth_cache (edge);
diff --git a/gcc/ipa-pure-const.c b/gcc/ipa-pure-const.c
index 29b4c177b28..4cfd1368990 100644
--- a/gcc/ipa-pure-const.c
+++ b/gcc/ipa-pure-const.c
@@ -46,7 +46,6 @@ along with GCC; see the file COPYING3. If not see
#include "ipa-utils.h"
#include "gimple.h"
#include "cgraph.h"
-#include "output.h"
#include "flags.h"
#include "timevar.h"
#include "diagnostic.h"
@@ -1109,7 +1108,7 @@ propagate_pure_const (void)
ipa_print_order(dump_file, "reduced", order, order_pos);
}
- /* Propagate the local information thru the call graph to produce
+ /* Propagate the local information through the call graph to produce
the global information. All the nodes within a cycle will have
the same info so we collapse cycles first. Then we can do the
propagation in one pass from the leaves to the roots. */
@@ -1381,7 +1380,7 @@ propagate_nothrow (void)
ipa_print_order (dump_file, "reduced for nothrow", order, order_pos);
}
- /* Propagate the local information thru the call graph to produce
+ /* Propagate the local information through the call graph to produce
the global information. All the nodes within a cycle will have
the same info so we collapse cycles first. Then we can do the
propagation in one pass from the leaves to the roots. */
diff --git a/gcc/ipa-ref.h b/gcc/ipa-ref.h
index 96750ba50f6..99273c50fb1 100644
--- a/gcc/ipa-ref.h
+++ b/gcc/ipa-ref.h
@@ -58,7 +58,7 @@ struct GTY(()) ipa_ref_list
{
/* Store actual references in references vector. */
VEC(ipa_ref_t,gc) *references;
- /* Refering is vector of pointers to references. It must not live in GGC space
+ /* Referring is vector of pointers to references. It must not live in GGC space
or GGC will try to mark middle of references vectors. */
VEC(ipa_ref_ptr,heap) * GTY((skip)) referring;
};
diff --git a/gcc/ipa-reference.c b/gcc/ipa-reference.c
index 45fb232ae8b..33b265bca8d 100644
--- a/gcc/ipa-reference.c
+++ b/gcc/ipa-reference.c
@@ -53,7 +53,6 @@ along with GCC; see the file COPYING3. If not see
#include "ipa-reference.h"
#include "gimple.h"
#include "cgraph.h"
-#include "output.h"
#include "flags.h"
#include "timevar.h"
#include "diagnostic.h"
@@ -615,7 +614,7 @@ propagate (void)
ipa_discover_readonly_nonaddressable_vars ();
generate_summary ();
- /* Now we know what vars are realy statics; prune out those that aren't. */
+ /* Now we know what vars are really statics; prune out those that aren't. */
FOR_EACH_VARIABLE (vnode)
if (vnode->symbol.externally_visible
|| TREE_ADDRESSABLE (vnode->symbol.decl)
@@ -637,7 +636,7 @@ propagate (void)
bitmap_and_into (node_l->statics_written, all_module_statics);
}
- /* Propagate the local information thru the call graph to produce
+ /* Propagate the local information through the call graph to produce
the global information. All the nodes within a cycle will have
the same info so we collapse cycles first. Then we can do the
propagation in one pass from the leaves to the roots. */
diff --git a/gcc/ipa-utils.c b/gcc/ipa-utils.c
index e22977a0707..b83c87b96ad 100644
--- a/gcc/ipa-utils.c
+++ b/gcc/ipa-utils.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "ipa-reference.h"
#include "gimple.h"
#include "cgraph.h"
-#include "output.h"
#include "flags.h"
#include "timevar.h"
#include "diagnostic.h"
@@ -325,7 +324,7 @@ ipa_reverse_postorder (struct cgraph_node **order)
/* Given a memory reference T, will return the variable at the bottom
- of the access. Unlike get_base_address, this will recurse thru
+ of the access. Unlike get_base_address, this will recurse through
INDIRECT_REFS. */
tree
diff --git a/gcc/ipa.c b/gcc/ipa.c
index 51c3dada1fa..f5cce1ba41a 100644
--- a/gcc/ipa.c
+++ b/gcc/ipa.c
@@ -683,7 +683,7 @@ varpool_externally_visible_p (struct varpool_node *vnode, bool aliased)
if (vnode->symbol.resolution == LDPR_PREVAILING_DEF_IRONLY)
return false;
- /* As a special case, the COMDAT virutal tables can be unshared.
+ /* As a special case, the COMDAT virtual tables can be unshared.
In LTO mode turn vtables into static variables. The variable is readonly,
so this does not enable more optimization, but referring static var
is faster for dynamic linking. Also this match logic hidding vtables
@@ -791,7 +791,7 @@ function_and_variable_visibility (bool whole_program)
/* C++ FE on lack of COMDAT support create local COMDAT functions
(that ought to be shared but can not due to object format
- limitations). It is neccesary to keep the flag to make rest of C++ FE
+ limitations). It is necessary to keep the flag to make rest of C++ FE
happy. Clear the flag here to avoid confusion in middle-end. */
if (DECL_COMDAT (node->symbol.decl) && !TREE_PUBLIC (node->symbol.decl))
DECL_COMDAT (node->symbol.decl) = 0;
@@ -974,7 +974,7 @@ gate_whole_program_function_and_variable_visibility (void)
return !flag_ltrans;
}
-/* Bring functionss local at LTO time whith -fwhole-program. */
+/* Bring functionss local at LTO time with -fwhole-program. */
static unsigned int
whole_program_function_and_variable_visibility (void)
@@ -1350,7 +1350,7 @@ build_cdtor_fns (void)
/* Look for constructors and destructors and produce function calling them.
This is needed for targets not supporting ctors or dtors, but we perform the
- transformation also at linktime to merge possibly numberous
+ transformation also at linktime to merge possibly numerous
constructors/destructors into single function to improve code locality and
reduce size. */
diff --git a/gcc/ira-build.c b/gcc/ira-build.c
index 2edab52b1e5..d0d4495e07a 100644
--- a/gcc/ira-build.c
+++ b/gcc/ira-build.c
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "params.h"
#include "df.h"
-#include "output.h"
#include "reload.h"
#include "sparseset.h"
#include "ira-int.h"
@@ -1829,8 +1828,8 @@ low_pressure_loop_node_p (ira_loop_tree_node_t node)
for (i = 0; i < ira_pressure_classes_num; i++)
{
pclass = ira_pressure_classes[i];
- if (node->reg_pressure[pclass] > ira_available_class_regs[pclass]
- && ira_available_class_regs[pclass] > 1)
+ if (node->reg_pressure[pclass] > ira_class_hard_regs_num[pclass]
+ && ira_class_hard_regs_num[pclass] > 1)
return false;
}
return true;
diff --git a/gcc/ira-color.c b/gcc/ira-color.c
index 300c3b8f922..ea933be9990 100644
--- a/gcc/ira-color.c
+++ b/gcc/ira-color.c
@@ -2766,7 +2766,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node)
pclass = ira_pressure_class_translate[rclass];
if (flag_ira_region == IRA_REGION_MIXED
&& (loop_tree_node->reg_pressure[pclass]
- <= ira_available_class_regs[pclass]))
+ <= ira_class_hard_regs_num[pclass]))
{
mode = ALLOCNO_MODE (a);
hard_regno = ALLOCNO_HARD_REGNO (a);
@@ -2819,7 +2819,7 @@ color_pass (ira_loop_tree_node_t loop_tree_node)
ALLOCNO_NUM (subloop_allocno)));
if ((flag_ira_region == IRA_REGION_MIXED)
&& (loop_tree_node->reg_pressure[pclass]
- <= ira_available_class_regs[pclass]))
+ <= ira_class_hard_regs_num[pclass]))
{
if (! ALLOCNO_ASSIGNED_P (subloop_allocno))
{
diff --git a/gcc/ira-costs.c b/gcc/ira-costs.c
index 5d061942f83..62c8b7042f5 100644
--- a/gcc/ira-costs.c
+++ b/gcc/ira-costs.c
@@ -359,9 +359,8 @@ copy_cost (rtx x, enum machine_mode mode, reg_class_t rclass, bool to_p,
if (secondary_class != NO_REGS)
{
- if (!move_cost[mode])
- init_move_cost (mode);
- return (move_cost[mode][(int) secondary_class][(int) rclass]
+ ira_init_register_move_cost_if_necessary (mode);
+ return (ira_register_move_cost[mode][(int) secondary_class][(int) rclass]
+ sri.extra_cost
+ copy_cost (x, mode, secondary_class, to_p, &sri));
}
@@ -374,10 +373,11 @@ copy_cost (rtx x, enum machine_mode mode, reg_class_t rclass, bool to_p,
+ ira_memory_move_cost[mode][(int) rclass][to_p != 0];
else if (REG_P (x))
{
- if (!move_cost[mode])
- init_move_cost (mode);
+ reg_class_t x_class = REGNO_REG_CLASS (REGNO (x));
+
+ ira_init_register_move_cost_if_necessary (mode);
return (sri.extra_cost
- + move_cost[mode][REGNO_REG_CLASS (REGNO (x))][(int) rclass]);
+ + ira_register_move_cost[mode][(int) x_class][(int) rclass]);
}
else
/* If this is a constant, we may eventually want to call rtx_cost
diff --git a/gcc/ira-emit.c b/gcc/ira-emit.c
index 4523a8d41d9..a994a427d07 100644
--- a/gcc/ira-emit.c
+++ b/gcc/ira-emit.c
@@ -84,7 +84,6 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "timevar.h"
#include "tree-pass.h"
-#include "output.h"
#include "reload.h"
#include "df.h"
#include "ira-int.h"
@@ -160,7 +159,7 @@ create_new_allocno (int regno, ira_loop_tree_node_t loop_tree_node)
typedef struct move *move_t;
/* The structure represents an allocno move. Both allocnos have the
- same origional regno but different allocation. */
+ same original regno but different allocation. */
struct move
{
/* The allocnos involved in the move. */
@@ -446,7 +445,7 @@ setup_entered_from_non_parent_p (void)
}
/* Return TRUE if move of SRC_ALLOCNO (assigned to hard register) to
- DEST_ALLOCNO (assigned to memory) can be removed beacuse it does
+ DEST_ALLOCNO (assigned to memory) can be removed because it does
not change value of the destination. One possible reason for this
is the situation when SRC_ALLOCNO is not modified in the
corresponding loop. */
@@ -606,7 +605,7 @@ change_loop (ira_loop_tree_node_t node)
== ALLOCNO_HARD_REGNO (parent_allocno))
&& (ALLOCNO_HARD_REGNO (allocno) < 0
|| (parent->reg_pressure[pclass] + 1
- <= ira_available_class_regs[pclass])
+ <= ira_class_hard_regs_num[pclass])
|| TEST_HARD_REG_BIT (ira_prohibited_mode_move_regs
[ALLOCNO_MODE (allocno)],
ALLOCNO_HARD_REGNO (allocno))
diff --git a/gcc/ira-int.h b/gcc/ira-int.h
index 02bec132614..1fd285dacf7 100644
--- a/gcc/ira-int.h
+++ b/gcc/ira-int.h
@@ -75,6 +75,8 @@ DEF_VEC_ALLOC_P(ira_copy_t, heap);
/* Typedef for pointer to the subsequent structure. */
typedef struct ira_loop_tree_node *ira_loop_tree_node_t;
+typedef unsigned short move_table[N_REG_CLASSES];
+
/* In general case, IRA is a regional allocator. The regions are
nested and form a tree. Currently regions are natural loops. The
following structure describes loop tree node (representing basic
@@ -767,35 +769,24 @@ struct target_ira_int {
HARD_REG_SET (x_ira_reg_mode_hard_regset
[FIRST_PSEUDO_REGISTER][NUM_MACHINE_MODES]);
- /* Array based on TARGET_REGISTER_MOVE_COST. Don't use
- ira_register_move_cost directly. Use function of
- ira_get_may_move_cost instead. */
+ /* Maximum cost of moving from a register in one class to a register
+ in another class. Based on TARGET_REGISTER_MOVE_COST. */
move_table *x_ira_register_move_cost[MAX_MACHINE_MODE];
- /* Array analogs of the macros MEMORY_MOVE_COST and
- REGISTER_MOVE_COST but they contain maximal cost not minimal as
- the previous two ones do. */
- short int x_ira_max_memory_move_cost[MAX_MACHINE_MODE][N_REG_CLASSES][2];
- move_table *x_ira_max_register_move_cost[MAX_MACHINE_MODE];
-
- /* Similar to may_move_in_cost but it is calculated in IRA instead of
- regclass. Another difference we take only available hard registers
- into account to figure out that one register class is a subset of
- the another one. Don't use it directly. Use function of
- ira_get_may_move_cost instead. */
+ /* Similar, but here we don't have to move if the first index is a
+ subset of the second so in that case the cost is zero. */
move_table *x_ira_may_move_in_cost[MAX_MACHINE_MODE];
- /* Similar to may_move_out_cost but it is calculated in IRA instead of
- regclass. Another difference we take only available hard registers
- into account to figure out that one register class is a subset of
- the another one. Don't use it directly. Use function of
- ira_get_may_move_cost instead. */
+ /* Similar, but here we don't have to move if the first index is a
+ superset of the second so in that case the cost is zero. */
move_table *x_ira_may_move_out_cost[MAX_MACHINE_MODE];
-/* Similar to ira_may_move_in_cost and ira_may_move_out_cost but they
- return maximal cost. */
- move_table *x_ira_max_may_move_in_cost[MAX_MACHINE_MODE];
- move_table *x_ira_max_may_move_out_cost[MAX_MACHINE_MODE];
+ /* Keep track of the last mode we initialized move costs for. */
+ int x_last_mode_for_init_move_cost;
+
+ /* Array analog of the macro MEMORY_MOVE_COST but they contain maximal
+ cost not minimal. */
+ short int x_ira_max_memory_move_cost[MAX_MACHINE_MODE][N_REG_CLASSES][2];
/* Map class->true if class is a possible allocno class, false
otherwise. */
@@ -892,16 +883,10 @@ extern struct target_ira_int *this_target_ira_int;
(this_target_ira_int->x_ira_register_move_cost)
#define ira_max_memory_move_cost \
(this_target_ira_int->x_ira_max_memory_move_cost)
-#define ira_max_register_move_cost \
- (this_target_ira_int->x_ira_max_register_move_cost)
#define ira_may_move_in_cost \
(this_target_ira_int->x_ira_may_move_in_cost)
#define ira_may_move_out_cost \
(this_target_ira_int->x_ira_may_move_out_cost)
-#define ira_max_may_move_in_cost \
- (this_target_ira_int->x_ira_max_may_move_in_cost)
-#define ira_max_may_move_out_cost \
- (this_target_ira_int->x_ira_max_may_move_out_cost)
#define ira_reg_allocno_class_p \
(this_target_ira_int->x_ira_reg_allocno_class_p)
#define ira_reg_pressure_class_p \
diff --git a/gcc/ira-lives.c b/gcc/ira-lives.c
index ad451f5b3f9..5eb13c1425d 100644
--- a/gcc/ira-lives.c
+++ b/gcc/ira-lives.c
@@ -192,7 +192,7 @@ inc_register_pressure (enum reg_class pclass, int n)
continue;
curr_reg_pressure[cl] += n;
if (high_pressure_start_point[cl] < 0
- && (curr_reg_pressure[cl] > ira_available_class_regs[cl]))
+ && (curr_reg_pressure[cl] > ira_class_hard_regs_num[cl]))
high_pressure_start_point[cl] = curr_point;
if (curr_bb_node->reg_pressure[cl] < curr_reg_pressure[cl])
curr_bb_node->reg_pressure[cl] = curr_reg_pressure[cl];
@@ -221,7 +221,7 @@ dec_register_pressure (enum reg_class pclass, int nregs)
curr_reg_pressure[cl] -= nregs;
ira_assert (curr_reg_pressure[cl] >= 0);
if (high_pressure_start_point[cl] >= 0
- && curr_reg_pressure[cl] <= ira_available_class_regs[cl])
+ && curr_reg_pressure[cl] <= ira_class_hard_regs_num[cl])
set_p = true;
}
if (set_p)
@@ -235,7 +235,7 @@ dec_register_pressure (enum reg_class pclass, int nregs)
if (! ira_reg_pressure_class_p[cl])
continue;
if (high_pressure_start_point[cl] >= 0
- && curr_reg_pressure[cl] <= ira_available_class_regs[cl])
+ && curr_reg_pressure[cl] <= ira_class_hard_regs_num[cl])
high_pressure_start_point[cl] = -1;
}
}
@@ -528,7 +528,7 @@ mark_ref_dead (df_ref def)
/* If REG is a pseudo or a subreg of it, and the class of its allocno
intersects CL, make a conflict with pseudo DREG. ORIG_DREG is the
- rtx actually accessed, it may be indentical to DREG or a subreg of it.
+ rtx actually accessed, it may be identical to DREG or a subreg of it.
Advance the current program point before making the conflict if
ADVANCE_P. Return TRUE if we will need to advance the current
program point. */
@@ -562,7 +562,7 @@ make_pseudo_conflict (rtx reg, enum reg_class cl, rtx dreg, rtx orig_dreg,
/* Check and make if necessary conflicts for pseudo DREG of class
DEF_CL of the current insn with input operand USE of class USE_CL.
- ORIG_DREG is the rtx actually accessed, it may be indentical to
+ ORIG_DREG is the rtx actually accessed, it may be identical to
DREG or a subreg of it. Advance the current program point before
making the conflict if ADVANCE_P. Return TRUE if we will need to
advance the current program point. */
@@ -851,7 +851,7 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
? GENERAL_REGS
: REG_CLASS_FROM_CONSTRAINT (c, constraints));
if ((cl != NO_REGS && next_cl != cl)
- || (ira_available_class_regs[next_cl]
+ || (ira_class_hard_regs_num[next_cl]
> ira_reg_class_max_nregs[next_cl][GET_MODE (op)]))
return NO_REGS;
cl = next_cl;
@@ -864,7 +864,7 @@ single_reg_class (const char *constraints, rtx op, rtx equiv_const)
recog_data.operand[c - '0'], NULL_RTX);
if ((cl != NO_REGS && next_cl != cl)
|| next_cl == NO_REGS
- || (ira_available_class_regs[next_cl]
+ || (ira_class_hard_regs_num[next_cl]
> ira_reg_class_max_nregs[next_cl][GET_MODE (op)]))
return NO_REGS;
cl = next_cl;
@@ -943,8 +943,8 @@ ira_implicitly_set_insn_hard_regs (HARD_REG_SET *set)
if (cl != NO_REGS
/* There is no register pressure problem if all of the
regs in this class are fixed. */
- && ira_available_class_regs[cl] != 0
- && (ira_available_class_regs[cl]
+ && ira_class_hard_regs_num[cl] != 0
+ && (ira_class_hard_regs_num[cl]
<= ira_reg_class_max_nregs[cl][mode]))
IOR_HARD_REG_SET (*set, reg_class_contents[cl]);
break;
@@ -1170,7 +1170,7 @@ process_bb_node_lives (ira_loop_tree_node_t loop_tree_node)
if (curr_bb_node->reg_pressure[cl] < curr_reg_pressure[cl])
curr_bb_node->reg_pressure[cl] = curr_reg_pressure[cl];
ira_assert (curr_reg_pressure[cl]
- <= ira_available_class_regs[cl]);
+ <= ira_class_hard_regs_num[cl]);
}
}
EXECUTE_IF_SET_IN_BITMAP (reg_live_out, FIRST_PSEUDO_REGISTER, j, bi)
diff --git a/gcc/ira.c b/gcc/ira.c
index 1809e0da83a..81c5180b7d0 100644
--- a/gcc/ira.c
+++ b/gcc/ira.c
@@ -380,7 +380,7 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "reload.h"
#include "diagnostic-core.h"
-#include "integrate.h"
+#include "function.h"
#include "ggc.h"
#include "ira-int.h"
#include "dce.h"
@@ -423,6 +423,8 @@ HARD_REG_SET eliminable_regset;
/* Temporary hard reg set used for a different calculation. */
static HARD_REG_SET temp_hard_regset;
+#define last_mode_for_init_move_cost \
+ (this_target_ira_int->x_last_mode_for_init_move_cost)
/* The function sets up the map IRA_REG_MODE_HARD_REGSET. */
@@ -490,23 +492,6 @@ setup_class_hard_regs (void)
}
}
-/* Set up IRA_AVAILABLE_CLASS_REGS. */
-static void
-setup_available_class_regs (void)
-{
- int i, j;
-
- memset (ira_available_class_regs, 0, sizeof (ira_available_class_regs));
- for (i = 0; i < N_REG_CLASSES; i++)
- {
- COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[i]);
- AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);
- for (j = 0; j < FIRST_PSEUDO_REGISTER; j++)
- if (TEST_HARD_REG_BIT (temp_hard_regset, j))
- ira_available_class_regs[i]++;
- }
-}
-
/* Set up global variables defining info about hard registers for the
allocation. These depend on USE_HARD_FRAME_P whose TRUE value means
that we can use the hard frame pointer for the allocation. */
@@ -520,7 +505,6 @@ setup_alloc_regs (bool use_hard_frame_p)
if (! use_hard_frame_p)
SET_HARD_REG_BIT (no_unit_alloc_regs, HARD_FRAME_POINTER_REGNUM);
setup_class_hard_regs ();
- setup_available_class_regs ();
}
@@ -799,9 +783,9 @@ setup_pressure_classes (void)
n = 0;
for (cl = 0; cl < N_REG_CLASSES; cl++)
{
- if (ira_available_class_regs[cl] == 0)
+ if (ira_class_hard_regs_num[cl] == 0)
continue;
- if (ira_available_class_regs[cl] != 1
+ if (ira_class_hard_regs_num[cl] != 1
/* A register class without subclasses may contain a few
hard registers and movement between them is costly
(e.g. SPARC FPCC registers). We still should consider it
@@ -986,39 +970,32 @@ setup_allocno_and_important_classes (void)
registers. */
ira_allocno_classes_num = 0;
for (i = 0; (cl = classes[i]) != LIM_REG_CLASSES; i++)
- {
- COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl]);
- AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);
- if (hard_reg_set_empty_p (temp_hard_regset))
- continue;
+ if (ira_class_hard_regs_num[cl] > 0)
ira_allocno_classes[ira_allocno_classes_num++] = (enum reg_class) cl;
- }
ira_important_classes_num = 0;
/* Add non-allocno classes containing to non-empty set of
allocatable hard regs. */
for (cl = 0; cl < N_REG_CLASSES; cl++)
- {
- COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl]);
- AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);
- if (! hard_reg_set_empty_p (temp_hard_regset))
- {
- set_p = false;
- for (j = 0; j < ira_allocno_classes_num; j++)
- {
- COPY_HARD_REG_SET (temp_hard_regset2,
- reg_class_contents[ira_allocno_classes[j]]);
- AND_COMPL_HARD_REG_SET (temp_hard_regset2, no_unit_alloc_regs);
- if ((enum reg_class) cl == ira_allocno_classes[j])
- break;
- else if (hard_reg_set_subset_p (temp_hard_regset,
- temp_hard_regset2))
- set_p = true;
- }
- if (set_p && j >= ira_allocno_classes_num)
- ira_important_classes[ira_important_classes_num++]
- = (enum reg_class) cl;
- }
- }
+ if (ira_class_hard_regs_num[cl] > 0)
+ {
+ COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl]);
+ AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);
+ set_p = false;
+ for (j = 0; j < ira_allocno_classes_num; j++)
+ {
+ COPY_HARD_REG_SET (temp_hard_regset2,
+ reg_class_contents[ira_allocno_classes[j]]);
+ AND_COMPL_HARD_REG_SET (temp_hard_regset2, no_unit_alloc_regs);
+ if ((enum reg_class) cl == ira_allocno_classes[j])
+ break;
+ else if (hard_reg_set_subset_p (temp_hard_regset,
+ temp_hard_regset2))
+ set_p = true;
+ }
+ if (set_p && j >= ira_allocno_classes_num)
+ ira_important_classes[ira_important_classes_num++]
+ = (enum reg_class) cl;
+ }
/* Now add allocno classes to the important classes. */
for (j = 0; j < ira_allocno_classes_num; j++)
ira_important_classes[ira_important_classes_num++]
@@ -1473,100 +1450,103 @@ clarify_prohibited_class_mode_regs (void)
}
}
}
-
-
-/* Allocate and initialize IRA_REGISTER_MOVE_COST,
- IRA_MAX_REGISTER_MOVE_COST, IRA_MAY_MOVE_IN_COST,
- IRA_MAY_MOVE_OUT_COST, IRA_MAX_MAY_MOVE_IN_COST, and
- IRA_MAX_MAY_MOVE_OUT_COST for MODE if it is not done yet. */
+/* Allocate and initialize IRA_REGISTER_MOVE_COST, IRA_MAY_MOVE_IN_COST
+ and IRA_MAY_MOVE_OUT_COST for MODE. */
void
ira_init_register_move_cost (enum machine_mode mode)
{
- int cl1, cl2, cl3;
+ static unsigned short last_move_cost[N_REG_CLASSES][N_REG_CLASSES];
+ bool all_match = true;
+ unsigned int cl1, cl2;
ira_assert (ira_register_move_cost[mode] == NULL
- && ira_max_register_move_cost[mode] == NULL
&& ira_may_move_in_cost[mode] == NULL
- && ira_may_move_out_cost[mode] == NULL
- && ira_max_may_move_in_cost[mode] == NULL
- && ira_max_may_move_out_cost[mode] == NULL);
- if (move_cost[mode] == NULL)
- init_move_cost (mode);
- ira_register_move_cost[mode] = move_cost[mode];
- /* Don't use ira_allocate because the tables exist out of scope of a
- IRA call. */
- ira_max_register_move_cost[mode]
- = (move_table *) xmalloc (sizeof (move_table) * N_REG_CLASSES);
- memcpy (ira_max_register_move_cost[mode], ira_register_move_cost[mode],
- sizeof (move_table) * N_REG_CLASSES);
+ && ira_may_move_out_cost[mode] == NULL);
+ ira_assert (have_regs_of_mode[mode]);
for (cl1 = 0; cl1 < N_REG_CLASSES; cl1++)
- {
- /* Some subclasses are to small to have enough registers to hold
- a value of MODE. Just ignore them. */
- if (ira_reg_class_max_nregs[cl1][mode] > ira_available_class_regs[cl1])
- continue;
- COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl1]);
- AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);
- if (hard_reg_set_empty_p (temp_hard_regset))
- continue;
+ if (contains_reg_of_mode[cl1][mode])
for (cl2 = 0; cl2 < N_REG_CLASSES; cl2++)
- if (hard_reg_set_subset_p (reg_class_contents[cl1],
- reg_class_contents[cl2]))
- for (cl3 = 0; cl3 < N_REG_CLASSES; cl3++)
+ {
+ int cost;
+ if (!contains_reg_of_mode[cl2][mode])
+ cost = 65535;
+ else
{
- if (ira_max_register_move_cost[mode][cl2][cl3]
- < ira_register_move_cost[mode][cl1][cl3])
- ira_max_register_move_cost[mode][cl2][cl3]
- = ira_register_move_cost[mode][cl1][cl3];
- if (ira_max_register_move_cost[mode][cl3][cl2]
- < ira_register_move_cost[mode][cl3][cl1])
- ira_max_register_move_cost[mode][cl3][cl2]
- = ira_register_move_cost[mode][cl3][cl1];
+ cost = register_move_cost (mode, (enum reg_class) cl1,
+ (enum reg_class) cl2);
+ ira_assert (cost < 65535);
}
+ all_match &= (last_move_cost[cl1][cl2] == cost);
+ last_move_cost[cl1][cl2] = cost;
+ }
+ if (all_match && last_mode_for_init_move_cost != -1)
+ {
+ ira_register_move_cost[mode]
+ = ira_register_move_cost[last_mode_for_init_move_cost];
+ ira_may_move_in_cost[mode]
+ = ira_may_move_in_cost[last_mode_for_init_move_cost];
+ ira_may_move_out_cost[mode]
+ = ira_may_move_out_cost[last_mode_for_init_move_cost];
+ return;
}
- ira_may_move_in_cost[mode]
- = (move_table *) xmalloc (sizeof (move_table) * N_REG_CLASSES);
- memcpy (ira_may_move_in_cost[mode], may_move_in_cost[mode],
- sizeof (move_table) * N_REG_CLASSES);
- ira_may_move_out_cost[mode]
- = (move_table *) xmalloc (sizeof (move_table) * N_REG_CLASSES);
- memcpy (ira_may_move_out_cost[mode], may_move_out_cost[mode],
- sizeof (move_table) * N_REG_CLASSES);
- ira_max_may_move_in_cost[mode]
- = (move_table *) xmalloc (sizeof (move_table) * N_REG_CLASSES);
- memcpy (ira_max_may_move_in_cost[mode], ira_max_register_move_cost[mode],
- sizeof (move_table) * N_REG_CLASSES);
- ira_max_may_move_out_cost[mode]
- = (move_table *) xmalloc (sizeof (move_table) * N_REG_CLASSES);
- memcpy (ira_max_may_move_out_cost[mode], ira_max_register_move_cost[mode],
- sizeof (move_table) * N_REG_CLASSES);
+ last_mode_for_init_move_cost = mode;
+ ira_register_move_cost[mode] = XNEWVEC (move_table, N_REG_CLASSES);
+ ira_may_move_in_cost[mode] = XNEWVEC (move_table, N_REG_CLASSES);
+ ira_may_move_out_cost[mode] = XNEWVEC (move_table, N_REG_CLASSES);
for (cl1 = 0; cl1 < N_REG_CLASSES; cl1++)
- {
+ if (contains_reg_of_mode[cl1][mode])
for (cl2 = 0; cl2 < N_REG_CLASSES; cl2++)
{
- COPY_HARD_REG_SET (temp_hard_regset, reg_class_contents[cl2]);
- AND_COMPL_HARD_REG_SET (temp_hard_regset, no_unit_alloc_regs);
- if (hard_reg_set_empty_p (temp_hard_regset))
- continue;
- if (ira_class_subset_p[cl1][cl2])
- ira_may_move_in_cost[mode][cl1][cl2] = 0;
- if (ira_class_subset_p[cl2][cl1])
- ira_may_move_out_cost[mode][cl1][cl2] = 0;
- if (ira_class_subset_p[cl1][cl2])
- ira_max_may_move_in_cost[mode][cl1][cl2] = 0;
- if (ira_class_subset_p[cl2][cl1])
- ira_max_may_move_out_cost[mode][cl1][cl2] = 0;
- ira_register_move_cost[mode][cl1][cl2]
- = ira_max_register_move_cost[mode][cl1][cl2];
- ira_may_move_in_cost[mode][cl1][cl2]
- = ira_max_may_move_in_cost[mode][cl1][cl2];
- ira_may_move_out_cost[mode][cl1][cl2]
- = ira_max_may_move_out_cost[mode][cl1][cl2];
+ int cost;
+ enum reg_class *p1, *p2;
+
+ if (last_move_cost[cl1][cl2] == 65535)
+ {
+ ira_register_move_cost[mode][cl1][cl2] = 65535;
+ ira_may_move_in_cost[mode][cl1][cl2] = 65535;
+ ira_may_move_out_cost[mode][cl1][cl2] = 65535;
+ }
+ else
+ {
+ cost = last_move_cost[cl1][cl2];
+
+ for (p2 = &reg_class_subclasses[cl2][0];
+ *p2 != LIM_REG_CLASSES; p2++)
+ if (ira_class_hard_regs_num[*p2] > 0
+ && (ira_reg_class_max_nregs[*p2][mode]
+ <= ira_class_hard_regs_num[*p2]))
+ cost = MAX (cost, ira_register_move_cost[mode][cl1][*p2]);
+
+ for (p1 = &reg_class_subclasses[cl1][0];
+ *p1 != LIM_REG_CLASSES; p1++)
+ if (ira_class_hard_regs_num[*p1] > 0
+ && (ira_reg_class_max_nregs[*p1][mode]
+ <= ira_class_hard_regs_num[*p1]))
+ cost = MAX (cost, ira_register_move_cost[mode][*p1][cl2]);
+
+ ira_assert (cost <= 65535);
+ ira_register_move_cost[mode][cl1][cl2] = cost;
+
+ if (ira_class_subset_p[cl1][cl2])
+ ira_may_move_in_cost[mode][cl1][cl2] = 0;
+ else
+ ira_may_move_in_cost[mode][cl1][cl2] = cost;
+
+ if (ira_class_subset_p[cl2][cl1])
+ ira_may_move_out_cost[mode][cl1][cl2] = 0;
+ else
+ ira_may_move_out_cost[mode][cl1][cl2] = cost;
+ }
+ }
+ else
+ for (cl2 = 0; cl2 < N_REG_CLASSES; cl2++)
+ {
+ ira_register_move_cost[mode][cl1][cl2] = 65535;
+ ira_may_move_in_cost[mode][cl1][cl2] = 65535;
+ ira_may_move_out_cost[mode][cl1][cl2] = 65535;
}
- }
}
-
/* This is called once during compiler work. It sets up
@@ -1575,42 +1555,37 @@ ira_init_register_move_cost (enum machine_mode mode)
void
ira_init_once (void)
{
- int mode;
-
- for (mode = 0; mode < MAX_MACHINE_MODE; mode++)
- {
- ira_register_move_cost[mode] = NULL;
- ira_max_register_move_cost[mode] = NULL;
- ira_may_move_in_cost[mode] = NULL;
- ira_may_move_out_cost[mode] = NULL;
- ira_max_may_move_in_cost[mode] = NULL;
- ira_max_may_move_out_cost[mode] = NULL;
- }
ira_init_costs_once ();
}
-/* Free ira_max_register_move_cost, ira_may_move_in_cost,
- ira_may_move_out_cost, ira_max_may_move_in_cost, and
- ira_max_may_move_out_cost for each mode. */
+/* Free ira_max_register_move_cost, ira_may_move_in_cost and
+ ira_may_move_out_cost for each mode. */
static void
free_register_move_costs (void)
{
- int mode;
+ int mode, i;
+ /* Reset move_cost and friends, making sure we only free shared
+ table entries once. */
for (mode = 0; mode < MAX_MACHINE_MODE; mode++)
- {
- free (ira_max_register_move_cost[mode]);
- free (ira_may_move_in_cost[mode]);
- free (ira_may_move_out_cost[mode]);
- free (ira_max_may_move_in_cost[mode]);
- free (ira_max_may_move_out_cost[mode]);
- ira_register_move_cost[mode] = NULL;
- ira_max_register_move_cost[mode] = NULL;
- ira_may_move_in_cost[mode] = NULL;
- ira_may_move_out_cost[mode] = NULL;
- ira_max_may_move_in_cost[mode] = NULL;
- ira_max_may_move_out_cost[mode] = NULL;
- }
+ if (ira_register_move_cost[mode])
+ {
+ for (i = 0;
+ i < mode && (ira_register_move_cost[i]
+ != ira_register_move_cost[mode]);
+ i++)
+ ;
+ if (i == mode)
+ {
+ free (ira_register_move_cost[mode]);
+ free (ira_may_move_in_cost[mode]);
+ free (ira_may_move_out_cost[mode]);
+ }
+ }
+ memset (ira_register_move_cost, 0, sizeof ira_register_move_cost);
+ memset (ira_may_move_in_cost, 0, sizeof ira_may_move_in_cost);
+ memset (ira_may_move_out_cost, 0, sizeof ira_may_move_out_cost);
+ last_mode_for_init_move_cost = -1;
}
/* This is called every time when register related information is
@@ -4034,7 +4009,55 @@ move_unallocated_pseudos (void)
}
}
+/* If the backend knows where to allocate pseudos for hard
+ register initial values, register these allocations now. */
+static void
+allocate_initial_values (void)
+{
+ if (targetm.allocate_initial_value)
+ {
+ rtx hreg, preg, x;
+ int i, regno;
+
+ for (i = 0; HARD_REGISTER_NUM_P (i); i++)
+ {
+ if (! initial_value_entry (i, &hreg, &preg))
+ break;
+ x = targetm.allocate_initial_value (hreg);
+ regno = REGNO (preg);
+ if (x && REG_N_SETS (regno) <= 1)
+ {
+ if (MEM_P (x))
+ reg_equiv_memory_loc (regno) = x;
+ else
+ {
+ basic_block bb;
+ int new_regno;
+
+ gcc_assert (REG_P (x));
+ new_regno = REGNO (x);
+ reg_renumber[regno] = new_regno;
+ /* Poke the regno right into regno_reg_rtx so that even
+ fixed regs are accepted. */
+ SET_REGNO (preg, new_regno);
+ /* Update global register liveness information. */
+ FOR_EACH_BB (bb)
+ {
+ if (REGNO_REG_SET_P(df_get_live_in (bb), regno))
+ SET_REGNO_REG_SET (df_get_live_in (bb), new_regno);
+ if (REGNO_REG_SET_P(df_get_live_out (bb), regno))
+ SET_REGNO_REG_SET (df_get_live_out (bb), new_regno);
+ }
+ }
+ }
+ }
+
+ gcc_checking_assert (! initial_value_entry (FIRST_PSEUDO_REGISTER,
+ &hreg, &preg));
+ }
+}
+
/* All natural loops. */
struct loops ira_loops;
@@ -4239,7 +4262,7 @@ ira (FILE *f)
memset (ira_spilled_reg_stack_slots, 0,
max_regno * sizeof (struct ira_spilled_reg_stack_slot));
}
- allocate_initial_values (reg_equivs);
+ allocate_initial_values ();
/* See comment for find_moveable_pseudos call. */
if (ira_conflicts_p)
diff --git a/gcc/ira.h b/gcc/ira.h
index 60518ecb313..d53db4e0cee 100644
--- a/gcc/ira.h
+++ b/gcc/ira.h
@@ -25,10 +25,6 @@ along with GCC; see the file COPYING3. If not see
extern bool ira_conflicts_p;
struct target_ira {
- /* Number of given class hard registers available for the register
- allocation for given classes. */
- int x_ira_available_class_regs[N_REG_CLASSES];
-
/* Map: hard register number -> allocno class it belongs to. If the
corresponding class is NO_REGS, the hard register is not available
for allocation. */
@@ -95,8 +91,6 @@ extern struct target_ira *this_target_ira;
#define this_target_ira (&default_target_ira)
#endif
-#define ira_available_class_regs \
- (this_target_ira->x_ira_available_class_regs)
#define ira_hard_regno_allocno_class \
(this_target_ira->x_ira_hard_regno_allocno_class)
#define ira_allocno_classes_num \
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index 78694410527..6cece34294c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * resource.c: Do not include output.h.
+
2012-05-21 John David Anglin <dave.anglin@nrc-cnrc.gc.ca>
PR java/52815
diff --git a/gcc/java/Make-lang.in b/gcc/java/Make-lang.in
index 4d6b63b3708..2339b0d7e6b 100644
--- a/gcc/java/Make-lang.in
+++ b/gcc/java/Make-lang.in
@@ -309,7 +309,7 @@ java/mangle.o: java/mangle.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) $(SYSTEM_H) \
java/mangle_name.o: java/mangle_name.c $(CONFIG_H) java/jcf.h $(JAVA_TREE_H) \
$(SYSTEM_H) coretypes.h $(GGC_H)
java/resource.o: java/resource.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
- $(JAVA_TREE_H) java/jcf.h java/parse.h toplev.h output.h $(GGC_H) \
+ $(JAVA_TREE_H) java/jcf.h java/parse.h toplev.h $(GGC_H) \
$(TARGET_H) $(FUNCTION_H) gt-java-resource.h
java/typeck.o: java/typeck.c $(CONFIG_H) $(JAVA_TREE_H) java/jcf.h \
$(SYSTEM_H) coretypes.h $(GGC_H) $(REAL_H)
diff --git a/gcc/java/resource.c b/gcc/java/resource.c
index 25a9bdd223a..1558dcdff2d 100644
--- a/gcc/java/resource.c
+++ b/gcc/java/resource.c
@@ -30,7 +30,6 @@ The Free Software Foundation is independent of Sun Microsystems, Inc. */
#include "jcf.h"
#include "diagnostic-core.h"
#include "toplev.h"
-#include "output.h"
#include "parse.h"
#include "function.h"
#include "ggc.h"
diff --git a/gcc/langhooks.c b/gcc/langhooks.c
index 340cc99fa29..46c19c33a69 100644
--- a/gcc/langhooks.c
+++ b/gcc/langhooks.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "gimple.h"
#include "rtl.h"
#include "insn-config.h"
-#include "integrate.h"
#include "flags.h"
#include "langhooks.h"
#include "target.h"
diff --git a/gcc/lcm.c b/gcc/lcm.c
index 61c67e04ae7..2a61a51ac38 100644
--- a/gcc/lcm.c
+++ b/gcc/lcm.c
@@ -60,7 +60,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "basic-block.h"
-#include "output.h"
#include "tm_p.h"
#include "function.h"
#include "sbitmap.h"
diff --git a/gcc/loop-doloop.c b/gcc/loop-doloop.c
index 65ba651d675..4ace1748358 100644
--- a/gcc/loop-doloop.c
+++ b/gcc/loop-doloop.c
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "tm_p.h"
#include "cfgloop.h"
-#include "output.h"
#include "params.h"
#include "target.h"
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index b69254b2daa..f8405dde268 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -47,7 +47,6 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "expr.h"
#include "recog.h"
-#include "output.h"
#include "function.h"
#include "flags.h"
#include "df.h"
@@ -1210,7 +1209,7 @@ gain_for_invariant (struct invariant *inv, unsigned *regs_needed,
+ (int) regs_needed[pressure_class]
+ LOOP_DATA (curr_loop)->max_reg_pressure[pressure_class]
+ IRA_LOOP_RESERVED_REGS
- > ira_available_class_regs[pressure_class])
+ > ira_class_hard_regs_num[pressure_class])
break;
}
if (i < ira_pressure_classes_num)
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c
index 382d4ce1591..32d5e878bf1 100644
--- a/gcc/loop-iv.c
+++ b/gcc/loop-iv.c
@@ -59,7 +59,6 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "expr.h"
#include "intl.h"
-#include "output.h"
#include "diagnostic-core.h"
#include "df.h"
#include "hashtab.h"
diff --git a/gcc/loop-unroll.c b/gcc/loop-unroll.c
index f251f5dbacd..13f41cf19f4 100644
--- a/gcc/loop-unroll.c
+++ b/gcc/loop-unroll.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "cfglayout.h"
#include "params.h"
-#include "output.h"
#include "expr.h"
#include "hashtab.h"
#include "recog.h"
diff --git a/gcc/loop-unswitch.c b/gcc/loop-unswitch.c
index d6c4c226961..700dbfeb816 100644
--- a/gcc/loop-unswitch.c
+++ b/gcc/loop-unswitch.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "cfgloop.h"
#include "cfglayout.h"
#include "params.h"
-#include "output.h"
#include "expr.h"
/* This pass moves constant conditions out of loops, duplicating the loop
diff --git a/gcc/lto-cgraph.c b/gcc/lto-cgraph.c
index 447948f75a9..c349709989d 100644
--- a/gcc/lto-cgraph.c
+++ b/gcc/lto-cgraph.c
@@ -40,7 +40,6 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "vec.h"
#include "timevar.h"
-#include "output.h"
#include "pointer-set.h"
#include "lto-streamer.h"
#include "data-streamer.h"
diff --git a/gcc/lto-section-in.c b/gcc/lto-section-in.c
index fb0c70d81c4..ad4077e04f3 100644
--- a/gcc/lto-section-in.c
+++ b/gcc/lto-section-in.c
@@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "except.h"
#include "vec.h"
#include "timevar.h"
-#include "output.h"
#include "lto-streamer.h"
#include "lto-compress.h"
#include "ggc.h"
diff --git a/gcc/lto-streamer-in.c b/gcc/lto-streamer-in.c
index 271fe99f453..ddb91d8557c 100644
--- a/gcc/lto-streamer-in.c
+++ b/gcc/lto-streamer-in.c
@@ -43,7 +43,6 @@ along with GCC; see the file COPYING3. If not see
#include "debug.h"
#include "vec.h"
#include "timevar.h"
-#include "output.h"
#include "ipa-utils.h"
#include "data-streamer.h"
#include "gimple-streamer.h"
diff --git a/gcc/lto-streamer.c b/gcc/lto-streamer.c
index e3ccb79d813..7649a78052a 100644
--- a/gcc/lto-streamer.c
+++ b/gcc/lto-streamer.c
@@ -39,7 +39,7 @@ along with GCC; see the file COPYING3. If not see
/* Statistics gathered during LTO, WPA and LTRANS. */
struct lto_stats_d lto_stats;
-/* LTO uses bitmaps with different life-times. So use a seperate
+/* LTO uses bitmaps with different life-times. So use a separate
obstack for all LTO bitmaps. */
static bitmap_obstack lto_obstack;
static bool lto_obstack_initialized;
diff --git a/gcc/lto-streamer.h b/gcc/lto-streamer.h
index 5c2f4eaac06..5c7bdd281d3 100644
--- a/gcc/lto-streamer.h
+++ b/gcc/lto-streamer.h
@@ -300,7 +300,7 @@ typedef const char* (lto_get_section_data_f) (struct lto_file_decl_data *,
/* Return the data found from the above call. The first three
parameters are the same as above. The fourth parameter is the data
- itself and the fifth is the lenght of the data. */
+ itself and the fifth is the length of the data. */
typedef void (lto_free_section_data_f) (struct lto_file_decl_data *,
enum lto_section_type,
const char *,
@@ -987,7 +987,7 @@ lto_init_tree_ref_encoder (struct lto_tree_ref_encoder *encoder,
}
-/* Destory an lto_tree_ref_encoder ENCODER by freeing its contents. The
+/* Destroy an lto_tree_ref_encoder ENCODER by freeing its contents. The
memory used by ENCODER is not freed by this function. */
static inline void
lto_destroy_tree_ref_encoder (struct lto_tree_ref_encoder *encoder)
diff --git a/gcc/lto-wrapper.c b/gcc/lto-wrapper.c
index b656db251fa..1f4d2128d94 100644
--- a/gcc/lto-wrapper.c
+++ b/gcc/lto-wrapper.c
@@ -727,7 +727,7 @@ run_gcc (unsigned argc, char *argv[])
obstack_ptr_grow (&argv_obstack, "-fwpa");
}
- /* Append the input objects and possible preceeding arguments. */
+ /* Append the input objects and possible preceding arguments. */
for (i = 1; i < argc; ++i)
obstack_ptr_grow (&argv_obstack, argv[i]);
obstack_ptr_grow (&argv_obstack, NULL);
diff --git a/gcc/matrix-reorg.c b/gcc/matrix-reorg.c
index 72a6a71af05..8395dd2beae 100644
--- a/gcc/matrix-reorg.c
+++ b/gcc/matrix-reorg.c
@@ -1914,7 +1914,6 @@ transform_access_sites (void **slot, void *data ATTRIBUTE_UNUSED)
num_elements =
fold_build2 (MULT_EXPR, sizetype, fold_convert (sizetype, acc_info->index),
fold_convert (sizetype, d_size));
- add_referenced_var (d_size);
gsi = gsi_for_stmt (acc_info->stmt);
tmp1 = force_gimple_operand_gsi (&gsi, num_elements, true,
NULL, true, GSI_SAME_STMT);
diff --git a/gcc/mcf.c b/gcc/mcf.c
index af993fba057..81949ab5bc5 100644
--- a/gcc/mcf.c
+++ b/gcc/mcf.c
@@ -48,7 +48,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "basic-block.h"
-#include "output.h"
#include "langhooks.h"
#include "tree.h"
#include "gcov-io.h"
@@ -1385,7 +1384,7 @@ sum_edge_counts (VEC (edge, gc) *to_edges)
}
-/* Main routine. Smoothes the intial assigned basic block and edge counts using
+/* Main routine. Smoothes the initial assigned basic block and edge counts using
a minimum cost flow algorithm, to ensure that the flow consistency rule is
obeyed: sum of outgoing edges = sum of incoming edges for each basic
block. */
diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c
index 7ea241cea7b..a5967319385 100644
--- a/gcc/mode-switching.c
+++ b/gcc/mode-switching.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "basic-block.h"
-#include "output.h"
#include "tm_p.h"
#include "function.h"
#include "tree-pass.h"
@@ -445,7 +444,7 @@ optimize_mode_switching (void)
int i, j;
int n_entities;
int max_num_modes = 0;
- bool emited ATTRIBUTE_UNUSED = false;
+ bool emitted ATTRIBUTE_UNUSED = false;
basic_block post_entry ATTRIBUTE_UNUSED, pre_exit ATTRIBUTE_UNUSED;
for (e = N_ENTITIES - 1, n_entities = 0; e >= 0; e--)
@@ -704,7 +703,7 @@ optimize_mode_switching (void)
/* Insert MODE_SET only if it is nonempty. */
if (mode_set != NULL_RTX)
{
- emited = true;
+ emitted = true;
if (NOTE_INSN_BASIC_BLOCK_P (ptr->insn_ptr))
emit_insn_after (mode_set, ptr->insn_ptr);
else
@@ -731,7 +730,7 @@ optimize_mode_switching (void)
#if defined (MODE_ENTRY) && defined (MODE_EXIT)
cleanup_cfg (CLEANUP_NO_INSN_DEL);
#else
- if (!need_commit && !emited)
+ if (!need_commit && !emitted)
return 0;
#endif
diff --git a/gcc/modulo-sched.c b/gcc/modulo-sched.c
index b1b1af33b26..3dc87294bb6 100644
--- a/gcc/modulo-sched.c
+++ b/gcc/modulo-sched.c
@@ -322,7 +322,7 @@ ps_rtl_insn (partial_schedule_ptr ps, int id)
return ps_reg_move (ps, id)->insn;
}
-/* Partial schedule instruction ID, which belongs to PS, occured in
+/* Partial schedule instruction ID, which belongs to PS, occurred in
the original (unscheduled) loop. Return the first instruction
in the loop that was associated with ps_rtl_insn (PS, ID).
If the instruction had some notes before it, this is the first
diff --git a/gcc/objc/ChangeLog b/gcc/objc/ChangeLog
index ce8dd9ed62a..4d40f3c5d47 100644
--- a/gcc/objc/ChangeLog
+++ b/gcc/objc/ChangeLog
@@ -1,3 +1,7 @@
+2012-05-31 Steven Bosscher <steven@gcc.gnu.org>
+
+ * objc-act.c: Do not include output.h.
+
2012-05-17 Paolo Carlini <paolo.carlini@oracle.com>
PR objc++/53388
diff --git a/gcc/objc/Make-lang.in b/gcc/objc/Make-lang.in
index 5cca11a6b4d..9399376e437 100644
--- a/gcc/objc/Make-lang.in
+++ b/gcc/objc/Make-lang.in
@@ -126,7 +126,7 @@ objc/objc-act.o : objc/objc-act.c \
gt-objc-objc-act.h \
$(START_HDRS) \
$(GGC_H) $(DIAGNOSTIC_CORE_H) $(FLAGS_H) input.h \
- toplev.h $(FUNCTION_H) output.h debug.h $(LANGHOOKS_DEF_H) \
+ toplev.h $(FUNCTION_H) debug.h $(LANGHOOKS_DEF_H) \
$(HASHTAB_H) $(GIMPLE_H) \
$(C_PRAGMA_H) $(C_TARGET_H) \
objc/objc-encoding.h \
diff --git a/gcc/objc/objc-act.c b/gcc/objc/objc-act.c
index b93948e9ee0..14e1d5f0599 100644
--- a/gcc/objc/objc-act.c
+++ b/gcc/objc/objc-act.c
@@ -43,7 +43,6 @@ along with GCC; see the file COPYING3. If not see
#include "objc-map.h"
#include "input.h"
#include "function.h"
-#include "output.h"
#include "toplev.h"
#include "ggc.h"
#include "debug.h"
diff --git a/gcc/objc/objc-next-runtime-abi-01.c b/gcc/objc/objc-next-runtime-abi-01.c
index a3ca8fcd701..151930e961f 100644
--- a/gcc/objc/objc-next-runtime-abi-01.c
+++ b/gcc/objc/objc-next-runtime-abi-01.c
@@ -49,7 +49,7 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "target.h"
-#include "output.h"
+#include "output.h" /* for asm_out_file */
#include "tree-iterator.h"
#include "objc-runtime-hooks.h"
diff --git a/gcc/output.h b/gcc/output.h
index 31978c5afdf..855e5fc6861 100644
--- a/gcc/output.h
+++ b/gcc/output.h
@@ -121,10 +121,6 @@ extern void output_addr_const (FILE *, rtx);
and fixed syntactic prefixes. */
#if GCC_VERSION >= 3004
#define ATTRIBUTE_ASM_FPRINTF(m, n) __attribute__ ((__format__ (__asm_fprintf__, m, n))) ATTRIBUTE_NONNULL(m)
-/* This is a magic identifier which allows GCC to figure out the type
- of HOST_WIDE_INT for %wd specifier checks. You must issue this
- typedef before using the __asm_fprintf__ format attribute. */
-typedef HOST_WIDE_INT __gcc_host_wide_int__;
#else
#define ATTRIBUTE_ASM_FPRINTF(m, n) ATTRIBUTE_NONNULL(m)
#endif
@@ -169,9 +165,6 @@ extern void merge_weak (tree, tree);
/* Emit any pending weak declarations. */
extern void weak_finish (void);
-/* Return the default TLS model for a given variable. */
-extern enum tls_model decl_default_tls_model (const_tree);
-
/* Decode an `asm' spec for a declaration as a register name.
Return the register number, or -1 if nothing specified,
or -2 if the ASMSPEC is not `cc' or `memory' and is not recognized,
@@ -384,12 +377,6 @@ extern int current_function_sp_is_unchanging;
extern int current_function_uses_only_leaf_regs;
-/* Default file in which to dump debug output. */
-
-#ifdef BUFSIZ
-extern FILE *dump_file;
-#endif
-
/* Nonnull if the insn currently being emitted was a COND_EXEC pattern. */
extern rtx current_insn_predicate;
@@ -627,10 +614,8 @@ extern enum section_category categorize_decl_for_section (const_tree, int);
extern void default_coff_asm_named_section (const char *, unsigned int, tree);
extern void default_pe_asm_named_section (const char *, unsigned int, tree);
-extern void default_stabs_asm_out_destructor (rtx, int);
extern void default_named_section_asm_out_destructor (rtx, int);
extern void default_dtor_section_asm_out_destructor (rtx, int);
-extern void default_stabs_asm_out_constructor (rtx, int);
extern void default_named_section_asm_out_constructor (rtx, int);
extern void default_ctor_section_asm_out_constructor (rtx, int);
@@ -678,24 +663,4 @@ extern int default_address_cost (rtx, bool);
/* Output stack usage information. */
extern void output_stack_usage (void);
-/* dbxout helper functions */
-#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
-
-extern void dbxout_int (int);
-extern void dbxout_stabd (int, int);
-extern void dbxout_begin_stabn (int);
-extern void dbxout_begin_stabn_sline (int);
-extern void dbxout_begin_empty_stabs (int);
-extern void dbxout_begin_simple_stabs (const char *, int);
-extern void dbxout_begin_simple_stabs_desc (const char *, int, int);
-
-extern void dbxout_stab_value_zero (void);
-extern void dbxout_stab_value_label (const char *);
-extern void dbxout_stab_value_label_diff (const char *, const char *);
-extern void dbxout_stab_value_internal_label (const char *, int *);
-extern void dbxout_stab_value_internal_label_diff (const char *, int *,
- const char *);
-
-#endif
-
#endif /* ! GCC_OUTPUT_H */
diff --git a/gcc/passes.c b/gcc/passes.c
index 20253c43d2d..e8baa923115 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -53,12 +53,9 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "params.h"
#include "reload.h"
-#include "dwarf2asm.h"
-#include "integrate.h"
#include "debug.h"
#include "target.h"
#include "langhooks.h"
-#include "cfglayout.h"
#include "cfgloop.h"
#include "hosthooks.h"
#include "cgraph.h"
@@ -74,24 +71,7 @@ along with GCC; see the file COPYING3. If not see
#include "lto-streamer.h"
#include "plugin.h"
#include "ipa-utils.h"
-#include "tree-pretty-print.h"
-
-#if defined (DWARF2_UNWIND_INFO) || defined (DWARF2_DEBUGGING_INFO)
-#include "dwarf2out.h"
-#endif
-
-#if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
-#include "dbxout.h"
-#endif
-
-#ifdef SDB_DEBUGGING_INFO
-#include "sdbout.h"
-#endif
-
-#ifdef XCOFF_DEBUGGING_INFO
-#include "xcoffout.h" /* Needed for external data
- declarations for e.g. AIX 4.x. */
-#endif
+#include "tree-pretty-print.h" /* for dump_function_header */
/* This is used for debugging. It allows the current pass to printed
from anywhere in compilation.
diff --git a/gcc/plugin.c b/gcc/plugin.c
index 63d1cae4ede..1f56fa2f38b 100644
--- a/gcc/plugin.c
+++ b/gcc/plugin.c
@@ -865,7 +865,7 @@ get_event_last (void)
/* Retrieve the default plugin directory. The gcc driver should have passed
- it as -iplugindir <dir> to the cc1 program, and it is queriable thru the
+ it as -iplugindir <dir> to the cc1 program, and it is queriable through the
-print-file-name=plugin option to gcc. */
const char*
default_plugin_dir_name (void)
diff --git a/gcc/postreload-gcse.c b/gcc/postreload-gcse.c
index 16f3f68e571..efef130ba7e 100644
--- a/gcc/postreload-gcse.c
+++ b/gcc/postreload-gcse.c
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "expr.h"
#include "except.h"
diff --git a/gcc/postreload.c b/gcc/postreload.c
index 7f333063e19..e0663446e54 100644
--- a/gcc/postreload.c
+++ b/gcc/postreload.c
@@ -38,7 +38,6 @@ along with GCC; see the file COPYING3. If not see
#include "basic-block.h"
#include "reload.h"
#include "recog.h"
-#include "output.h"
#include "cselib.h"
#include "diagnostic-core.h"
#include "except.h"
@@ -683,7 +682,7 @@ struct reg_use
/* Points to the memory reference enclosing the use, if any, NULL_RTX
otherwise. */
rtx containing_mem;
- /* Location of the register withing INSN. */
+ /* Location of the register within INSN. */
rtx *usep;
/* The reverse uid of the insn. */
int ruid;
diff --git a/gcc/predict.c b/gcc/predict.c
index c93586bd502..776ea7e9a79 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -40,7 +40,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "regs.h"
#include "flags.h"
-#include "output.h"
#include "function.h"
#include "except.h"
#include "diagnostic-core.h"
diff --git a/gcc/profile.c b/gcc/profile.c
index 10ab756d567..927257b447f 100644
--- a/gcc/profile.c
+++ b/gcc/profile.c
@@ -55,7 +55,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm.h"
#include "rtl.h"
#include "flags.h"
-#include "output.h"
#include "regs.h"
#include "expr.h"
#include "function.h"
diff --git a/gcc/ree.c b/gcc/ree.c
index 25ee7e263db..5edf44d675e 100644
--- a/gcc/ree.c
+++ b/gcc/ree.c
@@ -237,8 +237,6 @@ along with GCC; see the file COPYING3. If not see
#include "optabs.h"
#include "insn-codes.h"
#include "rtlhooks-def.h"
-/* Include output.h for dump_file. */
-#include "output.h"
#include "params.h"
#include "timevar.h"
#include "tree-pass.h"
diff --git a/gcc/reg-stack.c b/gcc/reg-stack.c
index ce29fdcaf83..b534431f184 100644
--- a/gcc/reg-stack.c
+++ b/gcc/reg-stack.c
@@ -164,9 +164,7 @@
#include "hard-reg-set.h"
#include "flags.h"
#include "recog.h"
-#include "output.h"
#include "basic-block.h"
-#include "cfglayout.h"
#include "reload.h"
#include "ggc.h"
#include "timevar.h"
diff --git a/gcc/regcprop.c b/gcc/regcprop.c
index 4d6ea29f7f7..70fc0c09ecf 100644
--- a/gcc/regcprop.c
+++ b/gcc/regcprop.c
@@ -30,7 +30,6 @@
#include "hard-reg-set.h"
#include "basic-block.h"
#include "reload.h"
-#include "output.h"
#include "function.h"
#include "recog.h"
#include "flags.h"
diff --git a/gcc/reginfo.c b/gcc/reginfo.c
index f3a08f523c2..4fa0d04ce9c 100644
--- a/gcc/reginfo.c
+++ b/gcc/reginfo.c
@@ -122,9 +122,6 @@ static const char *const initial_reg_names[] = REGISTER_NAMES;
/* Array containing all of the register class names. */
const char * reg_class_names[] = REG_CLASS_NAMES;
-#define last_mode_for_init_move_cost \
- (this_target_regs->x_last_mode_for_init_move_cost)
-
/* No more global register variables may be declared; true once
reginfo has been initialized. */
static int no_global_reg_vars = 0;
@@ -197,95 +194,6 @@ init_reg_sets (void)
SET_HARD_REG_SET (operand_reg_set);
}
-/* Initialize may_move_cost and friends for mode M. */
-void
-init_move_cost (enum machine_mode m)
-{
- static unsigned short last_move_cost[N_REG_CLASSES][N_REG_CLASSES];
- bool all_match = true;
- unsigned int i, j;
-
- gcc_assert (have_regs_of_mode[m]);
- for (i = 0; i < N_REG_CLASSES; i++)
- if (contains_reg_of_mode[i][m])
- for (j = 0; j < N_REG_CLASSES; j++)
- {
- int cost;
- if (!contains_reg_of_mode[j][m])
- cost = 65535;
- else
- {
- cost = register_move_cost (m, (enum reg_class) i,
- (enum reg_class) j);
- gcc_assert (cost < 65535);
- }
- all_match &= (last_move_cost[i][j] == cost);
- last_move_cost[i][j] = cost;
- }
- if (all_match && last_mode_for_init_move_cost != -1)
- {
- move_cost[m] = move_cost[last_mode_for_init_move_cost];
- may_move_in_cost[m] = may_move_in_cost[last_mode_for_init_move_cost];
- may_move_out_cost[m] = may_move_out_cost[last_mode_for_init_move_cost];
- return;
- }
- last_mode_for_init_move_cost = m;
- move_cost[m] = (move_table *)xmalloc (sizeof (move_table)
- * N_REG_CLASSES);
- may_move_in_cost[m] = (move_table *)xmalloc (sizeof (move_table)
- * N_REG_CLASSES);
- may_move_out_cost[m] = (move_table *)xmalloc (sizeof (move_table)
- * N_REG_CLASSES);
- for (i = 0; i < N_REG_CLASSES; i++)
- if (contains_reg_of_mode[i][m])
- for (j = 0; j < N_REG_CLASSES; j++)
- {
- int cost;
- enum reg_class *p1, *p2;
-
- if (last_move_cost[i][j] == 65535)
- {
- move_cost[m][i][j] = 65535;
- may_move_in_cost[m][i][j] = 65535;
- may_move_out_cost[m][i][j] = 65535;
- }
- else
- {
- cost = last_move_cost[i][j];
-
- for (p2 = &reg_class_subclasses[j][0];
- *p2 != LIM_REG_CLASSES; p2++)
- if (*p2 != i && contains_reg_of_mode[*p2][m])
- cost = MAX (cost, move_cost[m][i][*p2]);
-
- for (p1 = &reg_class_subclasses[i][0];
- *p1 != LIM_REG_CLASSES; p1++)
- if (*p1 != j && contains_reg_of_mode[*p1][m])
- cost = MAX (cost, move_cost[m][*p1][j]);
-
- gcc_assert (cost <= 65535);
- move_cost[m][i][j] = cost;
-
- if (reg_class_subset_p ((enum reg_class) i, (enum reg_class) j))
- may_move_in_cost[m][i][j] = 0;
- else
- may_move_in_cost[m][i][j] = cost;
-
- if (reg_class_subset_p ((enum reg_class) j, (enum reg_class) i))
- may_move_out_cost[m][i][j] = 0;
- else
- may_move_out_cost[m][i][j] = cost;
- }
- }
- else
- for (j = 0; j < N_REG_CLASSES; j++)
- {
- move_cost[m][i][j] = 65535;
- may_move_in_cost[m][i][j] = 65535;
- may_move_out_cost[m][i][j] = 65535;
- }
-}
-
/* We need to save copies of some of the register information which
can be munged by command-line switches so we can restore it during
subsequent back-end reinitialization. */
@@ -575,25 +483,6 @@ init_reg_sets_1 (void)
have_regs_of_mode [m] = 1;
}
}
-
- /* Reset move_cost and friends, making sure we only free shared
- table entries once. */
- for (i = 0; i < MAX_MACHINE_MODE; i++)
- if (move_cost[i])
- {
- for (j = 0; j < i && move_cost[i] != move_cost[j]; j++)
- ;
- if (i == j)
- {
- free (move_cost[i]);
- free (may_move_in_cost[i]);
- free (may_move_out_cost[i]);
- }
- }
- memset (move_cost, 0, sizeof move_cost);
- memset (may_move_in_cost, 0, sizeof may_move_in_cost);
- memset (may_move_out_cost, 0, sizeof may_move_out_cost);
- last_mode_for_init_move_cost = -1;
}
/* Compute the table of register modes.
diff --git a/gcc/regmove.c b/gcc/regmove.c
index 454c97741e3..f3549c7904b 100644
--- a/gcc/regmove.c
+++ b/gcc/regmove.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "target.h"
-#include "output.h"
#include "regs.h"
#include "hard-reg-set.h"
#include "flags.h"
diff --git a/gcc/regs.h b/gcc/regs.h
index d18bf0aa3c1..24f410c6b07 100644
--- a/gcc/regs.h
+++ b/gcc/regs.h
@@ -240,8 +240,6 @@ extern int caller_save_needed;
#define HARD_REGNO_CALL_PART_CLOBBERED(REGNO, MODE) 0
#endif
-typedef unsigned short move_table[N_REG_CLASSES];
-
/* Target-dependent globals. */
struct target_regs {
/* For each starting hard register, the number of consecutive hard
@@ -261,21 +259,6 @@ struct target_regs {
/* 1 if the corresponding class contains a register of the given mode. */
char x_contains_reg_of_mode[N_REG_CLASSES][MAX_MACHINE_MODE];
- /* Maximum cost of moving from a register in one class to a register
- in another class. Based on TARGET_REGISTER_MOVE_COST. */
- move_table *x_move_cost[MAX_MACHINE_MODE];
-
- /* Similar, but here we don't have to move if the first index is a
- subset of the second so in that case the cost is zero. */
- move_table *x_may_move_in_cost[MAX_MACHINE_MODE];
-
- /* Similar, but here we don't have to move if the first index is a
- superset of the second so in that case the cost is zero. */
- move_table *x_may_move_out_cost[MAX_MACHINE_MODE];
-
- /* Keep track of the last mode we initialized move costs for. */
- int x_last_mode_for_init_move_cost;
-
/* Record for each mode whether we can move a register directly to or
from an object of that mode in memory. If we can't, we won't try
to use that mode directly when accessing a field of that mode. */
@@ -301,12 +284,6 @@ extern struct target_regs *this_target_regs;
(this_target_regs->x_have_regs_of_mode)
#define contains_reg_of_mode \
(this_target_regs->x_contains_reg_of_mode)
-#define move_cost \
- (this_target_regs->x_move_cost)
-#define may_move_in_cost \
- (this_target_regs->x_may_move_in_cost)
-#define may_move_out_cost \
- (this_target_regs->x_may_move_out_cost)
#define direct_load \
(this_target_regs->x_direct_load)
#define direct_store \
diff --git a/gcc/regstat.c b/gcc/regstat.c
index 66a856beee2..cecc7278999 100644
--- a/gcc/regstat.c
+++ b/gcc/regstat.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "flags.h"
#include "regs.h"
-#include "output.h"
#include "except.h"
#include "hard-reg-set.h"
#include "basic-block.h"
diff --git a/gcc/reload.h b/gcc/reload.h
index f747099abed..29d15ea75ae 100644
--- a/gcc/reload.h
+++ b/gcc/reload.h
@@ -460,9 +460,5 @@ extern void debug_reload (void);
reloading to/from a register that is wider than a word. */
extern rtx reload_adjust_reg_for_mode (rtx, enum machine_mode);
-/* Ideally this function would be in ira.c or reload, but due to dependencies
- on integrate.h, it's part of integrate.c. */
-extern void allocate_initial_values (VEC (reg_equivs_t, gc) *);
-
/* Allocate or grow the reg_equiv tables, initializing new entries to 0. */
extern void grow_reg_equivs (void);
diff --git a/gcc/reload1.c b/gcc/reload1.c
index c887614ce5b..00980ce8786 100644
--- a/gcc/reload1.c
+++ b/gcc/reload1.c
@@ -41,7 +41,6 @@ along with GCC; see the file COPYING3. If not see
#include "df.h"
#include "reload.h"
#include "recog.h"
-#include "output.h"
#include "except.h"
#include "tree.h"
#include "ira.h"
diff --git a/gcc/rtl.h b/gcc/rtl.h
index 6f7aabc32c2..1d71971335a 100644
--- a/gcc/rtl.h
+++ b/gcc/rtl.h
@@ -1730,10 +1730,9 @@ extern rtx assign_stack_local (enum machine_mode, HOST_WIDE_INT, int);
#define ASLK_REDUCE_ALIGN 1
#define ASLK_RECORD_PAD 2
extern rtx assign_stack_local_1 (enum machine_mode, HOST_WIDE_INT, int, int);
-extern rtx assign_stack_temp (enum machine_mode, HOST_WIDE_INT, int);
-extern rtx assign_stack_temp_for_type (enum machine_mode,
- HOST_WIDE_INT, int, tree);
-extern rtx assign_temp (tree, int, int, int);
+extern rtx assign_stack_temp (enum machine_mode, HOST_WIDE_INT);
+extern rtx assign_stack_temp_for_type (enum machine_mode, HOST_WIDE_INT, tree);
+extern rtx assign_temp (tree, int, int);
/* In emit-rtl.c */
extern rtx emit_insn_before (rtx, rtx);
@@ -2045,8 +2044,6 @@ extern rtx remove_free_EXPR_LIST_node (rtx *);
/* reginfo.c */
-/* Initialize may_move_cost and friends for mode M. */
-extern void init_move_cost (enum machine_mode);
/* Resize reg info. */
extern bool resize_reg_info (void);
/* Free up register info memory. */
@@ -2498,7 +2495,6 @@ extern void print_inline_rtx (FILE *, const_rtx, int);
extern void reposition_prologue_and_epilogue_notes (void);
extern int prologue_epilogue_contains (const_rtx);
extern int sibcall_epilogue_contains (const_rtx);
-extern void mark_temp_addr_taken (rtx);
extern void update_temp_slot_address (rtx, rtx);
extern void maybe_copy_prologue_epilogue_insn (rtx, rtx);
extern void set_return_jump_label (rtx);
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index fece83ec393..b92ba9b9334 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -1583,8 +1583,8 @@ add_dependence_list_and_free (struct deps_desc *deps, rtx insn, rtx *listp,
}
}
-/* Remove all occurences of INSN from LIST. Return the number of
- occurences removed. */
+/* Remove all occurrences of INSN from LIST. Return the number of
+ occurrences removed. */
static int
remove_from_dependence_list (rtx insn, rtx* listp)
@@ -2798,7 +2798,7 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx insn)
&& code == SET);
if (may_trap_p (x))
- /* Avoid moving trapping instructions accross function calls that might
+ /* Avoid moving trapping instructions across function calls that might
not always return. */
add_dependence_list (insn, deps->last_function_call_may_noreturn,
1, REG_DEP_ANTI);
diff --git a/gcc/sched-ebb.c b/gcc/sched-ebb.c
index cae9f704178..9f1f1127c81 100644
--- a/gcc/sched-ebb.c
+++ b/gcc/sched-ebb.c
@@ -40,7 +40,6 @@ along with GCC; see the file COPYING3. If not see
#include "params.h"
#include "sched-int.h"
#include "target.h"
-#include "output.h"
#ifdef INSN_SCHEDULING
diff --git a/gcc/sel-sched-dump.c b/gcc/sel-sched-dump.c
index f0a6b075e08..999c50c3a5a 100644
--- a/gcc/sel-sched-dump.c
+++ b/gcc/sel-sched-dump.c
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "insn-attr.h"
#include "params.h"
-#include "output.h"
#include "basic-block.h"
#include "cselib.h"
#include "target.h"
diff --git a/gcc/sel-sched-ir.c b/gcc/sel-sched-ir.c
index c53d2e1a8e9..23f99f42e19 100644
--- a/gcc/sel-sched-ir.c
+++ b/gcc/sel-sched-ir.c
@@ -5044,7 +5044,7 @@ find_place_to_insert_bb (basic_block bb, int rgn)
break;
}
- /* We skipped the right block, so we increase i. We accomodate
+ /* We skipped the right block, so we increase i. We accommodate
it for increasing by step later, so we decrease i. */
return (i + 1) - 1;
}
diff --git a/gcc/sel-sched-ir.h b/gcc/sel-sched-ir.h
index c454887f16a..20035527597 100644
--- a/gcc/sel-sched-ir.h
+++ b/gcc/sel-sched-ir.h
@@ -874,7 +874,7 @@ typedef struct
{
/* For each bb header this field contains a set of live registers.
For all other insns this field has a NULL.
- We also need to know LV sets for the instructions, that are immediatly
+ We also need to know LV sets for the instructions, that are immediately
after the border of the region. */
regset lv_set;
@@ -987,7 +987,7 @@ typedef struct
short flags;
/* When flags include SUCCS_ALL, this will be set to the exact type
- of the sucessor we're traversing now. */
+ of the successor we're traversing now. */
short current_flags;
/* If skip to loop exits, save here information about loop exits. */
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c
index 6fef60ea0ac..cfecd6bc148 100644
--- a/gcc/sel-sched.c
+++ b/gcc/sel-sched.c
@@ -285,7 +285,7 @@ struct rtx_search_arg
/* What we are searching for. */
rtx x;
- /* The occurence counter. */
+ /* The occurrence counter. */
int n;
};
@@ -733,7 +733,7 @@ can_substitute_through_p (insn_t insn, ds_t ds)
return false;
}
-/* Substitute all occurences of INSN's destination in EXPR' vinsn with INSN's
+/* Substitute all occurrences of INSN's destination in EXPR' vinsn with INSN's
source (if INSN is eligible for substitution). Returns TRUE if
substitution was actually performed, FALSE otherwise. Substitution might
be not performed because it's either EXPR' vinsn doesn't contain INSN's
@@ -4138,7 +4138,7 @@ invoke_reorder_hooks (fence_t fence)
return issue_more;
}
-/* Return an EXPR correponding to INDEX element of ready list, if
+/* Return an EXPR corresponding to INDEX element of ready list, if
FOLLOW_READY_ELEMENT is true (i.e., an expr of
ready_element (&ready, INDEX) will be returned), and to INDEX element of
ready.vec otherwise. */
diff --git a/gcc/sese.c b/gcc/sese.c
index 492667e26e6..d664403a52c 100644
--- a/gcc/sese.c
+++ b/gcc/sese.c
@@ -133,7 +133,7 @@ eq_ivtype_map_elts (const void *e1, const void *e2)
-/* Record LOOP as occuring in REGION. */
+/* Record LOOP as occurring in REGION. */
static void
sese_record_loop (sese region, loop_p loop)
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 6b0d56ed3ea..6481a362d37 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -1,7 +1,7 @@
/* RTL simplification functions for GNU compiler.
Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
- 2011 Free Software Foundation, Inc.
+ 2011, 2012 Free Software Foundation, Inc.
This file is part of GCC.
@@ -35,7 +35,6 @@ along with GCC; see the file COPYING3. If not see
#include "function.h"
#include "expr.h"
#include "diagnostic-core.h"
-#include "output.h"
#include "ggc.h"
#include "target.h"
@@ -3242,6 +3241,27 @@ simplify_binary_operation_1 (enum rtx_code code, enum machine_mode mode,
return gen_rtx_CONST_VECTOR (mode, v);
}
+
+ /* If we build {a,b} then permute it, build the result directly. */
+ if (XVECLEN (trueop1, 0) == 2
+ && CONST_INT_P (XVECEXP (trueop1, 0, 0))
+ && CONST_INT_P (XVECEXP (trueop1, 0, 1))
+ && GET_CODE (trueop0) == VEC_CONCAT
+ && GET_CODE (XEXP (trueop0, 0)) == VEC_CONCAT
+ && GET_MODE (XEXP (trueop0, 0)) == mode
+ && GET_CODE (XEXP (trueop0, 1)) == VEC_CONCAT
+ && GET_MODE (XEXP (trueop0, 1)) == mode)
+ {
+ unsigned int i0 = INTVAL (XVECEXP (trueop1, 0, 0));
+ unsigned int i1 = INTVAL (XVECEXP (trueop1, 0, 1));
+ rtx subop0, subop1;
+
+ gcc_assert (i0 < 4 && i1 < 4);
+ subop0 = XEXP (XEXP (trueop0, i0 / 2), i0 % 2);
+ subop1 = XEXP (XEXP (trueop0, i1 / 2), i1 % 2);
+
+ return simplify_gen_binary (VEC_CONCAT, mode, subop0, subop1);
+ }
}
if (XVECLEN (trueop1, 0) == 1
diff --git a/gcc/stmt.c b/gcc/stmt.c
index dd34890d462..4ad4d0f1e59 100644
--- a/gcc/stmt.c
+++ b/gcc/stmt.c
@@ -827,7 +827,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
}
else
{
- op = assign_temp (type, 0, 0, 1);
+ op = assign_temp (type, 0, 1);
op = validize_mem (op);
if (!MEM_P (op) && TREE_CODE (TREE_VALUE (tail)) == SSA_NAME)
set_reg_attrs_for_decl_rtl (SSA_NAME_VAR (TREE_VALUE (tail)), op);
@@ -910,31 +910,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
at this point. Ignore it: clearly this *is* a memory. */
}
else
- {
- warning (0, "use of memory input without lvalue in "
- "asm operand %d is deprecated", i + noutputs);
-
- if (CONSTANT_P (op))
- {
- rtx mem = force_const_mem (TYPE_MODE (type), op);
- if (mem)
- op = validize_mem (mem);
- else
- op = force_reg (TYPE_MODE (type), op);
- }
- if (REG_P (op)
- || GET_CODE (op) == SUBREG
- || GET_CODE (op) == CONCAT)
- {
- tree qual_type = build_qualified_type (type,
- (TYPE_QUALS (type)
- | TYPE_QUAL_CONST));
- rtx memloc = assign_temp (qual_type, 1, 1, 1);
- memloc = validize_mem (memloc);
- emit_move_insn (memloc, op);
- op = memloc;
- }
- }
+ gcc_unreachable ();
}
generating_concat_p = old_generating_concat_p;
@@ -1603,7 +1579,7 @@ expand_return (tree retval)
tree ot = TREE_TYPE (DECL_RESULT (current_function_decl));
tree nt = build_qualified_type (ot, TYPE_QUALS (ot) | TYPE_QUAL_CONST);
- val = assign_temp (nt, 0, 0, 1);
+ val = assign_temp (nt, 0, 1);
val = expand_expr (retval_rhs, val, GET_MODE (val), EXPAND_NORMAL);
val = force_not_mem (val);
/* Return the calculated value. */
@@ -1689,111 +1665,6 @@ expand_nl_goto_receiver (void)
emit_insn (gen_blockage ());
}
-/* Generate RTL for the automatic variable declaration DECL.
- (Other kinds of declarations are simply ignored if seen here.) */
-
-void
-expand_decl (tree decl)
-{
- tree type;
-
- type = TREE_TYPE (decl);
-
- /* For a CONST_DECL, set mode, alignment, and sizes from those of the
- type in case this node is used in a reference. */
- if (TREE_CODE (decl) == CONST_DECL)
- {
- DECL_MODE (decl) = TYPE_MODE (type);
- DECL_ALIGN (decl) = TYPE_ALIGN (type);
- DECL_SIZE (decl) = TYPE_SIZE (type);
- DECL_SIZE_UNIT (decl) = TYPE_SIZE_UNIT (type);
- return;
- }
-
- /* Otherwise, only automatic variables need any expansion done. Static and
- external variables, and external functions, will be handled by
- `assemble_variable' (called from finish_decl). TYPE_DECL requires
- nothing. PARM_DECLs are handled in `assign_parms'. */
- if (TREE_CODE (decl) != VAR_DECL)
- return;
-
- if (TREE_STATIC (decl) || DECL_EXTERNAL (decl))
- return;
-
- /* Create the RTL representation for the variable. */
-
- if (type == error_mark_node)
- SET_DECL_RTL (decl, gen_rtx_MEM (BLKmode, const0_rtx));
-
- else if (DECL_SIZE (decl) == 0)
- {
- /* Variable with incomplete type. */
- rtx x;
- if (DECL_INITIAL (decl) == 0)
- /* Error message was already done; now avoid a crash. */
- x = gen_rtx_MEM (BLKmode, const0_rtx);
- else
- /* An initializer is going to decide the size of this array.
- Until we know the size, represent its address with a reg. */
- x = gen_rtx_MEM (BLKmode, gen_reg_rtx (Pmode));
-
- set_mem_attributes (x, decl, 1);
- SET_DECL_RTL (decl, x);
- }
- else if (use_register_for_decl (decl))
- {
- /* Automatic variable that can go in a register. */
- enum machine_mode reg_mode = promote_decl_mode (decl, NULL);
-
- SET_DECL_RTL (decl, gen_reg_rtx (reg_mode));
-
- /* Note if the object is a user variable. */
- if (!DECL_ARTIFICIAL (decl))
- mark_user_reg (DECL_RTL (decl));
-
- if (POINTER_TYPE_P (type))
- mark_reg_pointer (DECL_RTL (decl),
- TYPE_ALIGN (TREE_TYPE (TREE_TYPE (decl))));
- }
-
- else
- {
- rtx oldaddr = 0;
- rtx addr;
- rtx x;
-
- /* Variable-sized decls are dealt with in the gimplifier. */
- gcc_assert (TREE_CODE (DECL_SIZE_UNIT (decl)) == INTEGER_CST);
-
- /* If we previously made RTL for this decl, it must be an array
- whose size was determined by the initializer.
- The old address was a register; set that register now
- to the proper address. */
- if (DECL_RTL_SET_P (decl))
- {
- gcc_assert (MEM_P (DECL_RTL (decl)));
- gcc_assert (REG_P (XEXP (DECL_RTL (decl), 0)));
- oldaddr = XEXP (DECL_RTL (decl), 0);
- }
-
- /* Set alignment we actually gave this decl. */
- DECL_ALIGN (decl) = (DECL_MODE (decl) == BLKmode ? BIGGEST_ALIGNMENT
- : GET_MODE_BITSIZE (DECL_MODE (decl)));
- DECL_USER_ALIGN (decl) = 0;
-
- x = assign_temp (decl, 1, 1, 1);
- set_mem_attributes (x, decl, 1);
- SET_DECL_RTL (decl, x);
-
- if (oldaddr)
- {
- addr = force_operand (XEXP (DECL_RTL (decl), 0), oldaddr);
- if (addr != oldaddr)
- emit_move_insn (oldaddr, addr);
- }
- }
-}
-
/* Emit code to save the current value of stack. */
rtx
expand_stack_save (void)
diff --git a/gcc/stor-layout.c b/gcc/stor-layout.c
index a592bda5c23..e360f60dcbd 100644
--- a/gcc/stor-layout.c
+++ b/gcc/stor-layout.c
@@ -30,7 +30,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "function.h"
#include "expr.h"
-#include "output.h"
#include "diagnostic-core.h"
#include "ggc.h"
#include "target.h"
@@ -1799,7 +1798,7 @@ finish_bitfield_representative (tree repr, tree field)
if (nextf)
{
tree maxsize;
- /* If there was an error, the field may be not layed out
+ /* If there was an error, the field may be not laid out
correctly. Don't bother to do anything. */
if (TREE_TYPE (nextf) == error_mark_node)
return;
@@ -1880,7 +1879,7 @@ finish_bitfield_representative (tree repr, tree field)
}
/* Compute and set FIELD_DECLs for the underlying objects we should
- use for bitfield access for the structure layed out with RLI. */
+ use for bitfield access for the structure laid out with RLI. */
static void
finish_bitfield_layout (record_layout_info rli)
@@ -2231,7 +2230,7 @@ layout_type (tree type)
}
/* If we arrived at a length of zero ignore any overflow
- that occured as part of the calculation. There exists
+ that occurred as part of the calculation. There exists
an association of the plus one where that overflow would
not happen. */
if (integer_zerop (length)
diff --git a/gcc/store-motion.c b/gcc/store-motion.c
index e00cb16d16f..bd0d7edc6d2 100644
--- a/gcc/store-motion.c
+++ b/gcc/store-motion.c
@@ -34,7 +34,6 @@ along with GCC; see the file COPYING3. If not see
#include "insn-config.h"
#include "recog.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "expr.h"
#include "except.h"
diff --git a/gcc/system.h b/gcc/system.h
index 977824e5eba..d0be753431b 100644
--- a/gcc/system.h
+++ b/gcc/system.h
@@ -663,6 +663,14 @@ extern int vsnprintf(char *, size_t, const char *, va_list);
#define __builtin_expect(a, b) (a)
#endif
+/* Default file in which to dump debug output. Here for lack of a better
+ place to put it. This used to be defined in output.h, but that results
+ in almost all files including output.h, even if they don't output anything
+ except, maybe, something to the dump file. */
+#ifdef BUFSIZ
+extern FILE *dump_file;
+#endif
+
/* Redefine abort to report an internal error w/o coredump, and
reporting the location of the error in the source file. */
extern void fancy_abort (const char *, int, const char *) ATTRIBUTE_NORETURN;
diff --git a/gcc/target-hooks-macros.h b/gcc/target-hooks-macros.h
index 3ef5ae39122..56cddac7c89 100644
--- a/gcc/target-hooks-macros.h
+++ b/gcc/target-hooks-macros.h
@@ -60,7 +60,7 @@
In both these cases, leave the DOC string empty, i.e. "".
Sometimes, for some historic reason the function declaration
has to be documented differently
- than what it is. In that case, use DEFHOOK_UNDOC to supress auto-generation
+ than what it is. In that case, use DEFHOOK_UNDOC to suppress auto-generation
of documentation. DEFHOOK_UNDOC takes a DOC string which it ignores, so
you can put GPLed documentation string there if you have hopes that you
can clear the declaration & documentation for GFDL distribution later,
diff --git a/gcc/target.def b/gcc/target.def
index f5023542409..3463600f99a 100644
--- a/gcc/target.def
+++ b/gcc/target.def
@@ -678,11 +678,11 @@ DEFHOOK
of INSN on CPU that are not described in DFA.
READY_TRY and N_READY represent the current state of search in the
optimization space. The target can filter out instructions that
- should not be tried after issueing INSN by setting corresponding
+ should not be tried after issuing INSN by setting corresponding
elements in READY_TRY to non-zero.
INSN is the instruction being evaluated.
PREV_DATA is a pointer to target-specific data corresponding
- to a state before issueing INSN. */
+ to a state before issuing INSN. */
DEFHOOK
(first_cycle_multipass_issue,
"",
@@ -696,7 +696,7 @@ DEFHOOK
described in DFA.
READY_TRY and N_READY represent the current state of search in the
optimization space. The target can filter out instructions that
- should not be tried after issueing INSN by setting corresponding
+ should not be tried after issuing INSN by setting corresponding
elements in READY_TRY to non-zero. */
DEFHOOK
(first_cycle_multipass_backtrack,
@@ -2749,6 +2749,13 @@ DEFHOOKPOD
bool, false)
DEFHOOKPOD
+(force_at_comp_dir,
+ "True if the @code{DW_AT_comp_dir} attribute should be emitted for each \
+ compilation unit. This attribute is required for the darwin linker \
+ to emit debug information.",
+ bool, false)
+
+DEFHOOKPOD
(delay_sched2, "True if sched2 is not to be run at its normal place. \
This usually means it will be run as part of machine-specific reorg.",
bool, false)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1c1b28eeab9..29ed833df4c 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,76 @@
+2012-05-31 Richard Guenther <rguenther@suse.de>
+
+ * gcc.dg/tree-ssa/ldist-pr45948-2.c: New testcase copy of
+ ldist-pr45948.c with disabled SCCP.
+
+2012-05-31 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/48493
+ * gcc.dg/torture/pr48493.c: New testcase.
+
+2012-05-31 Greta Yorsh <Greta.Yorsh@arm.com>
+
+ * lib/target-supports.exp (check_effective_target_vect_char_mult): Add
+ arm32 to targets.
+ * gcc.dg/vect/slp-perm-8.c (main): Prevent vectorization
+ of the initialization loop.
+ (dg-final): Adjust the expected number of vectorized loops depending
+ on vect_char_mult target selector.
+
+2012-05-31 Hans-Peter Nilsson <hp@axis.com>
+
+ * gcc.target/cris/asm-v8.S, gcc.target/cris/asm-v10.S,
+ gcc.target/cris/asm-other.S, gcc.target/cris/inasm-v8.c,
+ gcc.target/cris/inasm-v10.c, gcc.target/cris/inasm-other.c:
+ New tests.
+
+2012-05-30 Jason Merrill <jason@redhat.com>
+
+ PR c++/53356
+ * g++.dg/init/new34.C: New.
+ * g++.dg/tree-ssa/stabilize1.C: New.
+
+2012-05-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR c++/53356
+ * g++.dg/init/new33.C: New test.
+
+2012-05-30 Richard Guenther <rguenther@suse.de>
+
+ PR middle-end/53501
+ * gcc.dg/torture/pr53501.c: New testcase.
+ * c-c++-common/restrict-2.c: Adjust.
+
+2012-05-30 Alan Modra <amodra@gmail.com>
+
+ * gcc.target/powerpc/powerpc.exp: Load torture-options.exp, call
+ torture-finish.
+
+2012-05-30 Marc Glisse <marc.glisse@inria.fr>
+
+ * gcc.target/i386/shuf-concat.c: New test.
+
+2012-05-30 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/53519
+ * gcc.c-torture/compile/pr53519.c: New test.
+
+2012-05-30 Ramana Radhakrishnan <ramana.radhakrishnan@linaro.org>
+
+ * gcc.target/arm/neon-vrev.c: New.
+
+2012-05-29 Oleg Endo <olegendo@gcc.gnu.org>
+
+ PR target/51340
+ * gcc.target/sh/pr51340-1.c: New.
+ * gcc.target/sh/pr51340-2.c: New.
+ * gcc.target/sh/pr51340-3.c: New.
+
+2012-05-29 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53516
+ * gcc.dg/torture/pr53516.c: New testcase.
+
2012-05-29 Dodji Seketeli <dodji@redhat.com>
PR preprocessor/53229
diff --git a/gcc/testsuite/c-c++-common/restrict-2.c b/gcc/testsuite/c-c++-common/restrict-2.c
index 3f71b77b9ce..42ed398f670 100644
--- a/gcc/testsuite/c-c++-common/restrict-2.c
+++ b/gcc/testsuite/c-c++-common/restrict-2.c
@@ -10,5 +10,5 @@ void foo (float * __restrict__ a, float * __restrict__ b, int n, int j)
/* We should move the RHS of the store out of the loop. */
-/* { dg-final { scan-tree-dump-times "Moving statement" 11 "lim1" } } */
+/* { dg-final { scan-tree-dump-times "Moving statement" 10 "lim1" } } */
/* { dg-final { cleanup-tree-dump "lim1" } } */
diff --git a/gcc/testsuite/g++.dg/init/new33.C b/gcc/testsuite/g++.dg/init/new33.C
new file mode 100644
index 00000000000..18da79e7e9a
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new33.C
@@ -0,0 +1,11 @@
+// PR c++/53356
+// { dg-do compile }
+
+struct A {};
+struct B { operator const A & () const; };
+struct C { operator const A & () const; C (); };
+struct D { operator const A & () const; D (); ~D (); };
+
+A *foo () { return new A (B ()); }
+A *bar () { return new A (C ()); }
+A *baz () { return new A (D ()); }
diff --git a/gcc/testsuite/g++.dg/init/new34.C b/gcc/testsuite/g++.dg/init/new34.C
new file mode 100644
index 00000000000..9e67eb34174
--- /dev/null
+++ b/gcc/testsuite/g++.dg/init/new34.C
@@ -0,0 +1,11 @@
+// PR c++/53356
+
+struct A { A(); ~A(); };
+
+struct B {
+ operator const A () const;
+};
+
+A* cause_ICE() {
+ return new A((A(),A()));
+}
diff --git a/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C b/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C
new file mode 100644
index 00000000000..2fe723c3aae
--- /dev/null
+++ b/gcc/testsuite/g++.dg/tree-ssa/stabilize1.C
@@ -0,0 +1,14 @@
+// PR c++/53356
+// { dg-options "-fdump-tree-gimple" }
+// { dg-final { scan-tree-dump-not "= 0" "gimple" } }
+// { dg-final { cleanup-tree-dump "gimple" } }
+
+class A {};
+
+struct B {
+ operator const A &() const;
+};
+
+A* cause_ICE() {
+ return new A(B());
+}
diff --git a/gcc/testsuite/gcc.c-torture/compile/pr53519.c b/gcc/testsuite/gcc.c-torture/compile/pr53519.c
new file mode 100644
index 00000000000..3adadcb2c0e
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/compile/pr53519.c
@@ -0,0 +1,26 @@
+/* PR rtl-optimization/53519 */
+
+int a, b, c, d, e;
+
+short int
+foo (short int x)
+{
+ return a == 0 ? x : 0;
+}
+
+short int
+bar (int x, int y)
+{
+ return x + y;
+}
+
+void
+baz (void)
+{
+ if (!e)
+ {
+ int f = foo (65535 ^ b);
+ if (bar (!6L <= ~f, ~e) == c)
+ d = 0;
+ }
+}
diff --git a/gcc/testsuite/gcc.dg/pr52558-1.c b/gcc/testsuite/gcc.dg/pr52558-1.c
new file mode 100644
index 00000000000..c34ad0655d3
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr52558-1.c
@@ -0,0 +1,22 @@
+/* { dg-do compile } */
+/* { dg-options "--param allow-store-data-races=0 -O2 -fdump-tree-lim1" } */
+
+/* Test that `count' is not written to unless p->data > 0. */
+
+int count;
+
+struct obj {
+ int data;
+ struct obj *next;
+} *q;
+
+void func()
+{
+ struct obj *p;
+ for (p = q; p; p = p->next)
+ if (p->data > 0)
+ count++;
+}
+
+/* { dg-final { scan-tree-dump-times "MEM count_lsm.. count_lsm_flag" 1 "lim1" } } */
+/* { dg-final { cleanup-tree-dump "lim1" } } */
diff --git a/gcc/testsuite/gcc.dg/pr52558-2.c b/gcc/testsuite/gcc.dg/pr52558-2.c
new file mode 100644
index 00000000000..6d5f51c4f0c
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/pr52558-2.c
@@ -0,0 +1,23 @@
+/* { dg-do compile } */
+/* { dg-options "--param allow-store-data-races=0 -O2 -fdump-tree-lim1" } */
+
+/* Test that g_2 is not written to unless !g_1. */
+
+int g_1 = 1;
+int g_2 = 0;
+
+int func_1(void)
+{
+ int l;
+ for (l = 0; l < 1234; l++)
+ {
+ if (g_1)
+ return l;
+ else
+ g_2 = 0;
+ }
+ return 999;
+}
+
+/* { dg-final { scan-tree-dump-times "MEM.*g_2_lsm_flag" 1 "lim1" } } */
+/* { dg-final { cleanup-tree-dump "lim1" } } */
diff --git a/gcc/testsuite/gcc.dg/tm/reg-promotion.c b/gcc/testsuite/gcc.dg/tm/reg-promotion.c
new file mode 100644
index 00000000000..337c29f6c6e
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tm/reg-promotion.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-options "-fgnu-tm -O2 -fdump-tree-lim1" } */
+
+/* Test that `count' is not written to unless p->data>0. */
+
+int count;
+
+struct obj {
+ int data;
+ struct obj *next;
+} *q;
+
+void func()
+{
+ struct obj *p;
+ __transaction_atomic {
+ for (p = q; p; p = p->next)
+ if (p->data > 0)
+ count++;
+ }
+}
+
+/* { dg-final { scan-tree-dump-times "MEM count_lsm.. count_lsm_flag" 1 "lim1" } } */
+/* { dg-final { cleanup-tree-dump "lim1" } } */
diff --git a/gcc/testsuite/gcc.dg/torture/pr48493.c b/gcc/testsuite/gcc.dg/torture/pr48493.c
new file mode 100644
index 00000000000..ddb61f2e067
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr48493.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+
+typedef long long T __attribute__((may_alias, aligned (1)));
+
+struct S
+{
+ _Complex float d __attribute__((aligned (8)));
+};
+
+void bar (struct S);
+
+void
+f1 (T x)
+{
+ struct S s;
+ *(T *) ((char *) &s.d + 1) = x;
+ bar (s);
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr53501.c b/gcc/testsuite/gcc.dg/torture/pr53501.c
new file mode 100644
index 00000000000..36e3ae61e8f
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr53501.c
@@ -0,0 +1,22 @@
+/* { dg-do run } */
+
+extern void abort (void);
+
+int e[100], n, here;
+
+void __attribute__((noinline))
+foo(void)
+{
+ int i, k = 0;
+ for (i = 0; i < n; ++i) { e[k] = 10; ++k; e[k] = 10; ++k; }
+ for (i = 0; i < k; ++i) here = 1;
+ if (here != 1)
+ abort ();
+}
+
+int main(void)
+{
+ n = 10;
+ foo();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/torture/pr53516.c b/gcc/testsuite/gcc.dg/torture/pr53516.c
new file mode 100644
index 00000000000..7f8094d19cd
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/torture/pr53516.c
@@ -0,0 +1,32 @@
+/* { dg-do run } */
+/* { dg-options "-ftree-vectorize -ftree-loop-distribute-patterns" } */
+
+extern void abort (void);
+
+struct Foo
+{
+ char a : 1;
+ char b : 7;
+};
+
+struct Foo x[256];
+int y[256];
+
+void __attribute__((noinline,noclone)) bar (int n)
+{
+ int i;
+ for (i = 0; i < n; ++i)
+ {
+ x[i].a = 0;
+ y[i] = 3;
+ }
+}
+
+int main()
+{
+ x[5].b = 7;
+ bar (256);
+ if (x[5].b != 7)
+ abort ();
+ return 0;
+}
diff --git a/gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948-2.c b/gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948-2.c
new file mode 100644
index 00000000000..aecb49f1c6b
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/tree-ssa/ldist-pr45948-2.c
@@ -0,0 +1,17 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-loop-distribution -fno-tree-scev-cprop" } */
+
+extern void bar(int);
+
+void
+foo (int i, int n)
+{
+ int a[30];
+ int b[30];
+ for (; i < n; i++)
+ a[i] = b[i] = 0;
+
+ while (1)
+ if (b[0])
+ bar (a[i - 1]);
+}
diff --git a/gcc/testsuite/gcc.dg/vect/slp-perm-8.c b/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
index d211ef943b3..c4854d544b0 100644
--- a/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
+++ b/gcc/testsuite/gcc.dg/vect/slp-perm-8.c
@@ -32,8 +32,7 @@ int main (int argc, const char* argv[])
{
input[i] = i;
output[i] = 0;
- if (input[i] > 256)
- abort ();
+ __asm__ volatile ("");
}
for (i = 0; i < N / 3; i++)
@@ -52,7 +51,8 @@ int main (int argc, const char* argv[])
return 0;
}
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_perm_byte } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_perm_byte && vect_char_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_perm_byte && {! vect_char_mult } } } } } */
/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_perm_byte } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */
diff --git a/gcc/testsuite/gcc.target/arm/neon-vrev.c b/gcc/testsuite/gcc.target/arm/neon-vrev.c
new file mode 100644
index 00000000000..10f41bc32bb
--- /dev/null
+++ b/gcc/testsuite/gcc.target/arm/neon-vrev.c
@@ -0,0 +1,105 @@
+/* { dg-do compile } */
+/* { dg-require-effective-target arm_neon_ok } */
+/* { dg-options "-O2" } */
+/* { dg-add-options arm_neon } */
+
+#include <arm_neon.h>
+
+uint16x4_t
+tst_vrev642_u16 (uint16x4_t __a)
+{
+ uint16x4_t __rv;
+ uint16x4_t __mask1 = { 3, 2, 1, 0};
+ return __builtin_shuffle ( __a, __mask1) ;
+}
+
+uint16x8_t
+tst_vrev64q2_u16 (uint16x8_t __a)
+{
+ uint16x8_t __rv;
+ uint16x8_t __mask1 = {3, 2, 1, 0, 7, 6, 5, 4 };
+ return __builtin_shuffle ( __a, __mask1) ;
+}
+
+uint8x8_t
+tst_vrev642_u8 (uint8x8_t __a)
+{
+ uint8x8_t __rv;
+ uint8x8_t __mask1 = { 7, 6, 5, 4, 3, 2, 1, 0};
+ return __builtin_shuffle ( __a, __mask1) ;
+}
+
+uint8x16_t
+tst_vrev64q2_u8 (uint8x16_t __a)
+{
+ uint8x16_t __rv;
+ uint8x16_t __mask1 = {7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 12, 11, 10, 9, 8};
+ return __builtin_shuffle ( __a, __mask1) ;
+
+}
+
+uint32x2_t
+tst_vrev642_u32 (uint32x2_t __a)
+{
+ uint32x2_t __rv;
+ uint32x2_t __mask1 = {1, 0};
+ return __builtin_shuffle ( __a, __mask1) ;
+
+}
+
+uint32x4_t
+tst_vrev64q2_u32 (uint32x4_t __a)
+{
+ uint32x4_t __rv;
+ uint32x4_t __mask1 = {1, 0, 3, 2};
+ return __builtin_shuffle ( __a, __mask1) ;
+}
+
+uint16x4_t
+tst_vrev322_u16 (uint16x4_t __a)
+{
+ uint16x4_t __mask1 = { 1, 0, 3, 2 };
+ return __builtin_shuffle (__a, __mask1);
+}
+
+uint16x8_t
+tst_vrev32q2_u16 (uint16x8_t __a)
+{
+ uint16x8_t __mask1 = { 1, 0, 3, 2, 5, 4, 7, 6 };
+ return __builtin_shuffle (__a, __mask1);
+}
+
+uint8x8_t
+tst_vrev322_u8 (uint8x8_t __a)
+{
+ uint8x8_t __mask1 = { 3, 2, 1, 0, 7, 6, 5, 4};
+ return __builtin_shuffle (__a, __mask1);
+}
+
+uint8x16_t
+tst_vrev32q2_u8 (uint8x16_t __a)
+{
+ uint8x16_t __mask1 = { 3, 2, 1, 0, 7, 6, 5, 4, 11, 10, 9, 8, 15, 14, 13, 12};
+ return __builtin_shuffle (__a, __mask1);
+}
+
+uint8x8_t
+tst_vrev162_u8 (uint8x8_t __a)
+{
+ uint8x8_t __mask = { 1, 0, 3, 2, 5, 4, 7, 6};
+ return __builtin_shuffle (__a, __mask);
+}
+
+uint8x16_t
+tst_vrev16q2_u8 (uint8x16_t __a)
+{
+ uint8x16_t __mask = { 1, 0, 3, 2, 5, 4, 7, 6, 9, 8, 11, 10, 13, 12, 15, 14};
+ return __builtin_shuffle (__a, __mask);
+}
+
+/* { dg-final {scan-assembler-times "vrev32\.16\\t" 2} } */
+/* { dg-final {scan-assembler-times "vrev32\.8\\t" 2} } */
+/* { dg-final {scan-assembler-times "vrev16\.8\\t" 2} } */
+/* { dg-final {scan-assembler-times "vrev64\.8\\t" 2} } */
+/* { dg-final {scan-assembler-times "vrev64\.32\\t" 2} } */
+/* { dg-final {scan-assembler-times "vrev64\.16\\t" 2} } */
diff --git a/gcc/testsuite/gcc.target/cris/asm-other.S b/gcc/testsuite/gcc.target/cris/asm-other.S
new file mode 100644
index 00000000000..4fe7ebfc41c
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/asm-other.S
@@ -0,0 +1,15 @@
+/* { dg-do assemble } */
+/* { dg-options "-DOTHER_ISA=0 -march=v0" { target crisv32-*-* } } */
+/* { dg-options "-DOTHER_ISA=32 -march=v32" { target cris-*-* } } */
+
+/* Make sure we can assemble for the "other" variant, with the twist
+ that the gcc option -march=v0 isn't valid for the assembler. */
+ .text
+#if OTHER_ISA == 32
+ addoq 42,$r1,$acr
+#else
+0:
+ move.d [$r2=$r0+42],$r1
+ bwf 0b
+ nop
+#endif
diff --git a/gcc/testsuite/gcc.target/cris/asm-v10.S b/gcc/testsuite/gcc.target/cris/asm-v10.S
new file mode 100644
index 00000000000..c85ebe293bc
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/asm-v10.S
@@ -0,0 +1,6 @@
+/* { dg-do assemble } */
+/* { dg-options "-DOTHER_ISA=10 -march=v10" } */
+
+/* Check that -march=v10 is also recognized. */
+
+#include "asm-other.S"
diff --git a/gcc/testsuite/gcc.target/cris/asm-v8.S b/gcc/testsuite/gcc.target/cris/asm-v8.S
new file mode 100644
index 00000000000..3fba3188454
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/asm-v8.S
@@ -0,0 +1,6 @@
+/* { dg-do assemble } */
+/* { dg-options "-DOTHER_ISA=8 -march=v8" } */
+
+/* Check that -march=v8 is also recognized. */
+
+#include "asm-other.S"
diff --git a/gcc/testsuite/gcc.target/cris/inasm-other.c b/gcc/testsuite/gcc.target/cris/inasm-other.c
new file mode 100644
index 00000000000..c1c043f56d3
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/inasm-other.c
@@ -0,0 +1,23 @@
+/* { dg-do assemble } */
+/* { dg-options "-DOTHER_ISA=0 -march=v0" { target crisv32-*-* } } */
+/* { dg-options "-DOTHER_ISA=32 -march=v32" { target cris-*-* } } */
+
+/* Make sure we can (generate code and) assemble for the "other"
+ variant, with the twist that the gcc option -march=v0 isn't
+ valid for the assembler. We don't check that the generated code
+ is for the other variant; other tests cover that already, but they
+ don't *assemble* the result. We can't trust the prologue and
+ epilogue to contain incompatible insns (they actually deliberately
+ don't, usually and it'd be brittle to tweak the function signature
+ to make it so), so we force some with inline asm. */
+
+void f(void)
+{
+#if OTHER_ISA == 32
+ asm volatile ("addoq 42,$r11,$acr");
+#else
+ asm volatile ("0: move.d [$r12=$sp+42],$r10\n\t"
+ "bwf 0b\n\t"
+ "nop");
+#endif
+}
diff --git a/gcc/testsuite/gcc.target/cris/inasm-v10.c b/gcc/testsuite/gcc.target/cris/inasm-v10.c
new file mode 100644
index 00000000000..75379b3c8c2
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/inasm-v10.c
@@ -0,0 +1,6 @@
+/* { dg-do assemble } */
+/* { dg-options "-DOTHER_ISA=10 -march=v10" } */
+
+/* Check that -march=v10 is also recognized. */
+
+#include "inasm-other.c"
diff --git a/gcc/testsuite/gcc.target/cris/inasm-v8.c b/gcc/testsuite/gcc.target/cris/inasm-v8.c
new file mode 100644
index 00000000000..b2fb3053c40
--- /dev/null
+++ b/gcc/testsuite/gcc.target/cris/inasm-v8.c
@@ -0,0 +1,6 @@
+/* { dg-do assemble } */
+/* { dg-options "-DOTHER_ISA=8 -march=v8" } */
+
+/* Check that -march=v8 is also recognized. */
+
+#include "inasm-other.c"
diff --git a/gcc/testsuite/gcc.target/i386/shuf-concat.c b/gcc/testsuite/gcc.target/i386/shuf-concat.c
new file mode 100644
index 00000000000..04ed4a9dbb8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/shuf-concat.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O -msse2 -mfpmath=sse" } */
+
+typedef double v2df __attribute__ ((__vector_size__ (16)));
+
+v2df f(double d,double e){
+ v2df x={-d,d};
+ v2df y={-e,e};
+ return __builtin_ia32_shufpd(x,y,1);
+}
+
+/* { dg-final { scan-assembler-not "\tv?shufpd\[ \t\]" } } */
+/* { dg-final { scan-assembler-times "\tv?unpcklpd\[ \t\]" 1 } } */
diff --git a/gcc/testsuite/gcc.target/powerpc/powerpc.exp b/gcc/testsuite/gcc.target/powerpc/powerpc.exp
index adc59f5804d..c59e4c3ef4d 100644
--- a/gcc/testsuite/gcc.target/powerpc/powerpc.exp
+++ b/gcc/testsuite/gcc.target/powerpc/powerpc.exp
@@ -23,6 +23,7 @@ if { ![istarget powerpc*-*-*] && ![istarget rs6000-*-*] } then {
# Load support procs.
load_lib gcc-dg.exp
+load_lib torture-options.exp
# If a testcase doesn't have special options, use these.
global DEFAULT_CFLAGS
@@ -47,4 +48,5 @@ set-torture-options $SAVRES_TEST_OPTS
gcc-dg-runtest [list $srcdir/$subdir/savres.c] $alti
# All done.
+torture-finish
dg-finish
diff --git a/gcc/testsuite/gcc.target/sh/pr51340-1.c b/gcc/testsuite/gcc.target/sh/pr51340-1.c
new file mode 100644
index 00000000000..337d502b9f8
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51340-1.c
@@ -0,0 +1,13 @@
+/* Check that the fmac insn is generated when -funsafe-math-optimizations
+ is specified. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -funsafe-math-optimizations" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler "fmac" } } */
+
+float
+test_func (float a, float b, float c, float d, float e, float f)
+{
+ return a * b + c * d + e * f;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr51340-2.c b/gcc/testsuite/gcc.target/sh/pr51340-2.c
new file mode 100644
index 00000000000..ef9622ec47f
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51340-2.c
@@ -0,0 +1,12 @@
+/* Check that the fmac insn is not generated when -mno-fused-madd is specified. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -funsafe-math-optimizations -mno-fused-madd" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler-not "fmac" } } */
+
+float
+test_func (float a, float b, float c, float d, float e, float f)
+{
+ return a * b + c * d + e * f;
+}
+
diff --git a/gcc/testsuite/gcc.target/sh/pr51340-3.c b/gcc/testsuite/gcc.target/sh/pr51340-3.c
new file mode 100644
index 00000000000..d641ae3534e
--- /dev/null
+++ b/gcc/testsuite/gcc.target/sh/pr51340-3.c
@@ -0,0 +1,12 @@
+/* Check that the fmac insn is generated when -mfused-madd is specified. */
+/* { dg-do compile { target "sh*-*-*" } } */
+/* { dg-options "-O1 -mfused-madd" } */
+/* { dg-skip-if "" { "sh*-*-*" } { "-m1" "-m2" "-m4al" "*nofpu" "-m4-340*" "-m4-400*" "-m4-500*" "-m5*" } { "" } } */
+/* { dg-final { scan-assembler "fmac" } } */
+
+float
+test_func (float a, float b, float c, float d, float e, float f)
+{
+ return a * b + c * d + e * f;
+}
+
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index b93dc5cda59..568f6b1cc5d 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -3462,7 +3462,8 @@ proc check_effective_target_vect_char_mult { } {
set et_vect_char_mult_saved 0
if { [istarget ia64-*-*]
|| [istarget i?86-*-*]
- || [istarget x86_64-*-*] } {
+ || [istarget x86_64-*-*]
+ || [check_effective_target_arm32] } {
set et_vect_char_mult_saved 1
}
}
diff --git a/gcc/tlink.c b/gcc/tlink.c
index c4c6afc0148..4c3feca39d1 100644
--- a/gcc/tlink.c
+++ b/gcc/tlink.c
@@ -835,8 +835,8 @@ do_tlink (char **ld_argv, char **object_lst ATTRIBUTE_UNUSED)
{
if (tlink_verbose >= 3)
{
- dump_file (ldout, stdout);
- dump_file (lderrout, stderr);
+ dump_ld_file (ldout, stdout);
+ dump_ld_file (lderrout, stderr);
}
demangle_new_symbols ();
if (! scan_linker_output (ldout)
@@ -850,9 +850,9 @@ do_tlink (char **ld_argv, char **object_lst ATTRIBUTE_UNUSED)
}
}
- dump_file (ldout, stdout);
+ dump_ld_file (ldout, stdout);
unlink (ldout);
- dump_file (lderrout, stderr);
+ dump_ld_file (lderrout, stderr);
unlink (lderrout);
if (exit)
{
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 2ac0d68c9b5..583ebc45d40 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -59,13 +59,11 @@ along with GCC; see the file COPYING3. If not see
#include "reload.h"
#include "ira.h"
#include "dwarf2asm.h"
-#include "integrate.h"
#include "debug.h"
#include "target.h"
#include "common/common-target.h"
#include "langhooks.h"
-#include "cfglayout.h"
-#include "cfgloop.h"
+#include "cfgloop.h" /* for init_set_costs */
#include "hosthooks.h"
#include "cgraph.h"
#include "opts.h"
diff --git a/gcc/tracer.c b/gcc/tracer.c
index ce95f56bbbe..b350fc09b3a 100644
--- a/gcc/tracer.c
+++ b/gcc/tracer.c
@@ -42,7 +42,6 @@
#include "rtl.h"
#include "hard-reg-set.h"
#include "basic-block.h"
-#include "output.h"
#include "cfglayout.h"
#include "fibheap.h"
#include "flags.h"
diff --git a/gcc/trans-mem.c b/gcc/trans-mem.c
index aa4d7c0a06d..702682300d8 100644
--- a/gcc/trans-mem.c
+++ b/gcc/trans-mem.c
@@ -1778,7 +1778,7 @@ static struct tm_region *all_tm_regions;
static bitmap_obstack tm_obstack;
-/* A subroutine of tm_region_init. Record the existance of the
+/* A subroutine of tm_region_init. Record the existence of the
GIMPLE_TRANSACTION statement in a tree of tm_region elements. */
static struct tm_region *
diff --git a/gcc/tree-affine.c b/gcc/tree-affine.c
index 7bb1645d425..04f166dc5bf 100644
--- a/gcc/tree-affine.c
+++ b/gcc/tree-affine.c
@@ -21,7 +21,6 @@ along with GCC; see the file COPYING3. If not see
#include "system.h"
#include "coretypes.h"
#include "tree.h"
-#include "output.h"
#include "tree-pretty-print.h"
#include "tree-dump.h"
#include "pointer-set.h"
diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c
index cd68f1f86c4..fb7e300d149 100644
--- a/gcc/tree-cfg.c
+++ b/gcc/tree-cfg.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "flags.h"
#include "function.h"
#include "ggc.h"
@@ -40,7 +39,7 @@ along with GCC; see the file COPYING3. If not see
#include "diagnostic-core.h"
#include "except.h"
#include "cfgloop.h"
-#include "cfglayout.h"
+#include "cfglayout.h" /* for can_copy_bbs_p and copy_bbs */
#include "tree-ssa-propagate.h"
#include "value-prof.h"
#include "pointer-set.h"
diff --git a/gcc/tree-cfgcleanup.c b/gcc/tree-cfgcleanup.c
index d28783b6b98..78583c47e1b 100644
--- a/gcc/tree-cfgcleanup.c
+++ b/gcc/tree-cfgcleanup.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "diagnostic-core.h"
#include "flags.h"
#include "function.h"
@@ -37,7 +36,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-pass.h"
#include "except.h"
#include "cfgloop.h"
-#include "cfglayout.h"
#include "hashtab.h"
#include "tree-ssa-propagate.h"
#include "tree-scalar-evolution.h"
diff --git a/gcc/tree-data-ref.c b/gcc/tree-data-ref.c
index 90b6f70e4a9..45682462946 100644
--- a/gcc/tree-data-ref.c
+++ b/gcc/tree-data-ref.c
@@ -720,13 +720,12 @@ dr_analyze_innermost (struct data_reference *dr, struct loop *nest)
{
if (!integer_zerop (TREE_OPERAND (base, 1)))
{
+ double_int moff = mem_ref_offset (base);
+ tree mofft = double_int_to_tree (sizetype, moff);
if (!poffset)
- {
- double_int moff = mem_ref_offset (base);
- poffset = double_int_to_tree (sizetype, moff);
- }
+ poffset = mofft;
else
- poffset = size_binop (PLUS_EXPR, poffset, TREE_OPERAND (base, 1));
+ poffset = size_binop (PLUS_EXPR, poffset, mofft);
}
base = TREE_OPERAND (base, 0);
}
@@ -5255,26 +5254,33 @@ stores_from_loop (struct loop *loop, VEC (gimple, heap) **stmts)
bool
stmt_with_adjacent_zero_store_dr_p (gimple stmt)
{
- tree op0, op1;
+ tree lhs, rhs;
bool res;
struct data_reference *dr;
if (!stmt
|| !gimple_vdef (stmt)
- || !is_gimple_assign (stmt)
- || !gimple_assign_single_p (stmt)
- || !(op1 = gimple_assign_rhs1 (stmt))
- || !(integer_zerop (op1) || real_zerop (op1)))
+ || !gimple_assign_single_p (stmt))
+ return false;
+
+ lhs = gimple_assign_lhs (stmt);
+ rhs = gimple_assign_rhs1 (stmt);
+
+ /* If this is a bitfield store bail out. */
+ if (TREE_CODE (lhs) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (lhs, 1)))
+ return false;
+
+ if (!(integer_zerop (rhs) || real_zerop (rhs)))
return false;
dr = XCNEW (struct data_reference);
- op0 = gimple_assign_lhs (stmt);
DR_STMT (dr) = stmt;
- DR_REF (dr) = op0;
+ DR_REF (dr) = lhs;
res = dr_analyze_innermost (dr, loop_containing_stmt (stmt))
- && stride_of_unit_type_p (DR_STEP (dr), TREE_TYPE (op0));
+ && stride_of_unit_type_p (DR_STEP (dr), TREE_TYPE (lhs));
free_data_ref (dr);
return res;
diff --git a/gcc/tree-dfa.c b/gcc/tree-dfa.c
index 2c6393367d5..ecd496250f8 100644
--- a/gcc/tree-dfa.c
+++ b/gcc/tree-dfa.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "timevar.h"
#include "ggc.h"
#include "langhooks.h"
@@ -430,7 +429,10 @@ find_vars_r (tree *tp, int *walk_subtrees, void *data)
/* If T is a regular variable that the optimizers are interested
in, add it to the list of variables. */
- else if (SSA_VAR_P (*tp))
+ else if ((TREE_CODE (*tp) == VAR_DECL
+ && !is_global_var (*tp))
+ || TREE_CODE (*tp) == PARM_DECL
+ || TREE_CODE (*tp) == RESULT_DECL)
add_referenced_var_1 (*tp, fn);
/* Type, _DECL and constant nodes have no interesting children.
@@ -560,22 +562,24 @@ add_referenced_var_1 (tree var, struct function *fn)
|| TREE_CODE (var) == PARM_DECL
|| TREE_CODE (var) == RESULT_DECL);
- if (!(TREE_CODE (var) == VAR_DECL
- && VAR_DECL_IS_VIRTUAL_OPERAND (var))
- && is_global_var (var))
- return false;
+ gcc_checking_assert ((TREE_CODE (var) == VAR_DECL
+ && VAR_DECL_IS_VIRTUAL_OPERAND (var))
+ || !is_global_var (var));
- if (!*DECL_VAR_ANN_PTR (var))
- *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d ();
-
- /* Insert VAR into the referenced_vars hash table if it isn't present. */
+ /* Insert VAR into the referenced_vars hash table if it isn't present
+ and allocate its var-annotation. */
if (referenced_var_check_and_insert (var, fn))
- return true;
+ {
+ gcc_checking_assert (!*DECL_VAR_ANN_PTR (var));
+ *DECL_VAR_ANN_PTR (var) = ggc_alloc_cleared_var_ann_d ();
+ return true;
+ }
return false;
}
-/* Remove VAR from the list. */
+/* Remove VAR from the list of referenced variables and clear its
+ var-annotation. */
void
remove_referenced_var (tree var)
@@ -585,14 +589,16 @@ remove_referenced_var (tree var)
void **loc;
unsigned int uid = DECL_UID (var);
- /* Preserve var_anns of globals. */
- if (!is_global_var (var)
- && (v_ann = var_ann (var)))
- {
- ggc_free (v_ann);
- *DECL_VAR_ANN_PTR (var) = NULL;
- }
- gcc_assert (DECL_P (var));
+ gcc_checking_assert (TREE_CODE (var) == VAR_DECL
+ || TREE_CODE (var) == PARM_DECL
+ || TREE_CODE (var) == RESULT_DECL);
+
+ gcc_checking_assert (!is_global_var (var));
+
+ v_ann = var_ann (var);
+ ggc_free (v_ann);
+ *DECL_VAR_ANN_PTR (var) = NULL;
+
in.uid = uid;
loc = htab_find_slot_with_hash (gimple_referenced_vars (cfun), &in, uid,
NO_INSERT);
@@ -614,7 +620,8 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
HOST_WIDE_INT bitsize = -1;
HOST_WIDE_INT maxsize = -1;
tree size_tree = NULL_TREE;
- HOST_WIDE_INT bit_offset = 0;
+ double_int bit_offset = double_int_zero;
+ HOST_WIDE_INT hbit_offset;
bool seen_variable_array_ref = false;
tree base_type;
@@ -652,7 +659,9 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
switch (TREE_CODE (exp))
{
case BIT_FIELD_REF:
- bit_offset += TREE_INT_CST_LOW (TREE_OPERAND (exp, 2));
+ bit_offset
+ = double_int_add (bit_offset,
+ tree_to_double_int (TREE_OPERAND (exp, 2)));
break;
case COMPONENT_REF:
@@ -660,22 +669,23 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
tree field = TREE_OPERAND (exp, 1);
tree this_offset = component_ref_field_offset (exp);
- if (this_offset
- && TREE_CODE (this_offset) == INTEGER_CST
- && host_integerp (this_offset, 0))
+ if (this_offset && TREE_CODE (this_offset) == INTEGER_CST)
{
- HOST_WIDE_INT hthis_offset = TREE_INT_CST_LOW (this_offset);
- hthis_offset *= BITS_PER_UNIT;
- hthis_offset
- += TREE_INT_CST_LOW (DECL_FIELD_BIT_OFFSET (field));
- bit_offset += hthis_offset;
+ double_int doffset = tree_to_double_int (this_offset);
+ doffset = double_int_lshift (doffset,
+ BITS_PER_UNIT == 8
+ ? 3 : exact_log2 (BITS_PER_UNIT),
+ HOST_BITS_PER_DOUBLE_INT, true);
+ doffset = double_int_add (doffset,
+ tree_to_double_int
+ (DECL_FIELD_BIT_OFFSET (field)));
+ bit_offset = double_int_add (bit_offset, doffset);
/* If we had seen a variable array ref already and we just
referenced the last field of a struct or a union member
then we have to adjust maxsize by the padding at the end
of our field. */
- if (seen_variable_array_ref
- && maxsize != -1)
+ if (seen_variable_array_ref && maxsize != -1)
{
tree stype = TREE_TYPE (TREE_OPERAND (exp, 0));
tree next = DECL_CHAIN (field);
@@ -687,10 +697,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
tree fsize = DECL_SIZE_UNIT (field);
tree ssize = TYPE_SIZE_UNIT (stype);
if (host_integerp (fsize, 0)
- && host_integerp (ssize, 0))
+ && host_integerp (ssize, 0)
+ && double_int_fits_in_shwi_p (doffset))
maxsize += ((TREE_INT_CST_LOW (ssize)
- TREE_INT_CST_LOW (fsize))
- * BITS_PER_UNIT - hthis_offset);
+ * BITS_PER_UNIT
+ - double_int_to_shwi (doffset));
else
maxsize = -1;
}
@@ -702,8 +714,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
/* We need to adjust maxsize to the whole structure bitsize.
But we can subtract any constant offset seen so far,
because that would get us out of the structure otherwise. */
- if (maxsize != -1 && csize && host_integerp (csize, 1))
- maxsize = TREE_INT_CST_LOW (csize) - bit_offset;
+ if (maxsize != -1
+ && csize
+ && host_integerp (csize, 1)
+ && double_int_fits_in_shwi_p (bit_offset))
+ maxsize = TREE_INT_CST_LOW (csize)
+ - double_int_to_shwi (bit_offset);
else
maxsize = -1;
}
@@ -715,24 +731,26 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
{
tree index = TREE_OPERAND (exp, 1);
tree low_bound, unit_size;
- double_int doffset;
/* If the resulting bit-offset is constant, track it. */
if (TREE_CODE (index) == INTEGER_CST
&& (low_bound = array_ref_low_bound (exp),
TREE_CODE (low_bound) == INTEGER_CST)
&& (unit_size = array_ref_element_size (exp),
- host_integerp (unit_size, 1))
- && (doffset = double_int_sext
- (double_int_sub (TREE_INT_CST (index),
- TREE_INT_CST (low_bound)),
- TYPE_PRECISION (TREE_TYPE (index))),
- double_int_fits_in_shwi_p (doffset)))
+ TREE_CODE (unit_size) == INTEGER_CST))
{
- HOST_WIDE_INT hoffset = double_int_to_shwi (doffset);
- hoffset *= TREE_INT_CST_LOW (unit_size);
- hoffset *= BITS_PER_UNIT;
- bit_offset += hoffset;
+ double_int doffset
+ = double_int_sext
+ (double_int_sub (TREE_INT_CST (index),
+ TREE_INT_CST (low_bound)),
+ TYPE_PRECISION (TREE_TYPE (index)));
+ doffset = double_int_mul (doffset,
+ tree_to_double_int (unit_size));
+ doffset = double_int_lshift (doffset,
+ BITS_PER_UNIT == 8
+ ? 3 : exact_log2 (BITS_PER_UNIT),
+ HOST_BITS_PER_DOUBLE_INT, true);
+ bit_offset = double_int_add (bit_offset, doffset);
/* An array ref with a constant index up in the structure
hierarchy will constrain the size of any variable array ref
@@ -745,8 +763,12 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
/* We need to adjust maxsize to the whole array bitsize.
But we can subtract any constant offset seen so far,
because that would get us outside of the array otherwise. */
- if (maxsize != -1 && asize && host_integerp (asize, 1))
- maxsize = TREE_INT_CST_LOW (asize) - bit_offset;
+ if (maxsize != -1
+ && asize
+ && host_integerp (asize, 1)
+ && double_int_fits_in_shwi_p (bit_offset))
+ maxsize = TREE_INT_CST_LOW (asize)
+ - double_int_to_shwi (bit_offset);
else
maxsize = -1;
@@ -761,7 +783,8 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
break;
case IMAGPART_EXPR:
- bit_offset += bitsize;
+ bit_offset
+ = double_int_add (bit_offset, uhwi_to_double_int (bitsize));
break;
case VIEW_CONVERT_EXPR:
@@ -780,10 +803,10 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
BITS_PER_UNIT == 8
? 3 : exact_log2 (BITS_PER_UNIT),
HOST_BITS_PER_DOUBLE_INT, true);
- off = double_int_add (off, shwi_to_double_int (bit_offset));
+ off = double_int_add (off, bit_offset);
if (double_int_fits_in_shwi_p (off))
{
- bit_offset = double_int_to_shwi (off);
+ bit_offset = off;
exp = TREE_OPERAND (TREE_OPERAND (exp, 0), 0);
}
}
@@ -799,7 +822,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
if (TMR_INDEX (exp) || TMR_INDEX2 (exp))
{
exp = TREE_OPERAND (TMR_BASE (exp), 0);
- bit_offset = 0;
+ bit_offset = double_int_zero;
maxsize = -1;
goto done;
}
@@ -812,10 +835,10 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
BITS_PER_UNIT == 8
? 3 : exact_log2 (BITS_PER_UNIT),
HOST_BITS_PER_DOUBLE_INT, true);
- off = double_int_add (off, shwi_to_double_int (bit_offset));
+ off = double_int_add (off, bit_offset);
if (double_int_fits_in_shwi_p (off))
{
- bit_offset = double_int_to_shwi (off);
+ bit_offset = off;
exp = TREE_OPERAND (TMR_BASE (exp), 0);
}
}
@@ -830,6 +853,17 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
}
done:
+ if (!double_int_fits_in_shwi_p (bit_offset))
+ {
+ *poffset = 0;
+ *psize = bitsize;
+ *pmax_size = -1;
+
+ return exp;
+ }
+
+ hbit_offset = double_int_to_shwi (bit_offset);
+
/* We need to deal with variable arrays ending structures such as
struct { int length; int a[1]; } x; x.a[d]
struct { struct { int a; int b; } a[1]; } x; x.a[d].a
@@ -844,7 +878,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
if (seen_variable_array_ref
&& maxsize != -1
&& (!host_integerp (TYPE_SIZE (base_type), 1)
- || (bit_offset + maxsize
+ || (hbit_offset + maxsize
== (signed) TREE_INT_CST_LOW (TYPE_SIZE (base_type)))))
maxsize = -1;
@@ -856,7 +890,7 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
base decl. */
if (maxsize == -1
&& host_integerp (DECL_SIZE (exp), 1))
- maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - bit_offset;
+ maxsize = TREE_INT_CST_LOW (DECL_SIZE (exp)) - hbit_offset;
}
else if (CONSTANT_CLASS_P (exp))
{
@@ -864,13 +898,13 @@ get_ref_base_and_extent (tree exp, HOST_WIDE_INT *poffset,
base type constant. */
if (maxsize == -1
&& host_integerp (TYPE_SIZE (TREE_TYPE (exp)), 1))
- maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - bit_offset;
+ maxsize = TREE_INT_CST_LOW (TYPE_SIZE (TREE_TYPE (exp))) - hbit_offset;
}
/* ??? Due to negative offsets in ARRAY_REF we can end up with
negative bit_offset here. We might want to store a zero offset
in this case. */
- *poffset = bit_offset;
+ *poffset = hbit_offset;
*psize = bitsize;
*pmax_size = maxsize;
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index ef2b5848569..89b95fa78af 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -1346,7 +1346,7 @@ lower_try_finally_switch (struct leh_state *state, struct leh_tf_state *tf)
/* Begin inserting code for getting to the finally block. Things
are done in this order to correspond to the sequence the code is
- layed out. */
+ laid out. */
if (tf->may_fallthru)
{
@@ -1957,7 +1957,7 @@ lower_eh_constructs_2 (struct leh_state *state, gimple_stmt_iterator *gsi)
/* If the stmt can throw use a new temporary for the assignment
to a LHS. This makes sure the old value of the LHS is
available on the EH edge. Only do so for statements that
- potentially fall thru (no noreturn calls e.g.), otherwise
+ potentially fall through (no noreturn calls e.g.), otherwise
this new assignment might create fake fallthru regions. */
if (stmt_could_throw_p (stmt)
&& gimple_has_lhs (stmt)
@@ -2748,7 +2748,7 @@ maybe_clean_or_replace_eh_stmt (gimple old_stmt, gimple new_stmt)
return false;
}
-/* Given a statement OLD_STMT in OLD_FUN and a duplicate statment NEW_STMT
+/* Given a statement OLD_STMT in OLD_FUN and a duplicate statement NEW_STMT
in NEW_FUN, copy the EH table data from OLD_STMT to NEW_STMT. The MAP
operand is the return value of duplicate_eh_regions. */
@@ -3307,7 +3307,7 @@ lower_eh_dispatch (basic_block src, gimple stmt)
/* Collect the labels for a switch. Zero the post_landing_pad
field becase we'll no longer have anything keeping these labels
- in existance and the optimizer will be free to merge these
+ in existence and the optimizer will be free to merge these
blocks at will. */
for (c = r->u.eh_try.first_catch; c ; c = c->next_catch)
{
diff --git a/gcc/tree-emutls.c b/gcc/tree-emutls.c
index bae41ac62e6..25da389abbb 100644
--- a/gcc/tree-emutls.c
+++ b/gcc/tree-emutls.c
@@ -434,7 +434,6 @@ gen_emutls_addr (tree decl, struct lower_emutls_data *d)
addr = create_tmp_var (build_pointer_type (TREE_TYPE (decl)), NULL);
x = gimple_build_call (d->builtin_decl, 1, build_fold_addr_expr (cdecl));
gimple_set_location (x, d->loc);
- add_referenced_var (cdecl);
addr = make_ssa_name (addr, x);
gimple_call_set_lhs (x, addr);
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 0190aa953f5..ccda8c9a7f5 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -48,7 +48,6 @@ along with GCC; see the file COPYING3. If not see
#include "value-prof.h"
#include "tree-pass.h"
#include "target.h"
-#include "integrate.h"
#include "rtl.h" /* FIXME: For asm_str_count. */
@@ -3236,6 +3235,29 @@ inline_forbidden_p (tree fndecl)
pointer_set_destroy (visited_nodes);
return forbidden_p;
}
+
+/* Return false if the function FNDECL cannot be inlined on account of its
+ attributes, true otherwise. */
+static bool
+function_attribute_inlinable_p (const_tree fndecl)
+{
+ if (targetm.attribute_table)
+ {
+ const_tree a;
+
+ for (a = DECL_ATTRIBUTES (fndecl); a; a = TREE_CHAIN (a))
+ {
+ const_tree name = TREE_PURPOSE (a);
+ int i;
+
+ for (i = 0; targetm.attribute_table[i].name != NULL; i++)
+ if (is_attribute_p (targetm.attribute_table[i].name, name))
+ return targetm.function_attribute_inlinable_p (fndecl);
+ }
+ }
+
+ return true;
+}
/* Returns nonzero if FN is a function that does not have any
fundamental inline blocking properties. */
diff --git a/gcc/tree-into-ssa.c b/gcc/tree-into-ssa.c
index 86899feb532..102b699c500 100644
--- a/gcc/tree-into-ssa.c
+++ b/gcc/tree-into-ssa.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "langhooks.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
diff --git a/gcc/tree-loop-distribution.c b/gcc/tree-loop-distribution.c
index f4b03bd8394..3802467ac12 100644
--- a/gcc/tree-loop-distribution.c
+++ b/gcc/tree-loop-distribution.c
@@ -52,6 +52,34 @@ along with GCC; see the file COPYING3. If not see
#include "tree-scalar-evolution.h"
#include "tree-pass.h"
+typedef struct partition_s
+{
+ bitmap stmts;
+} *partition_t;
+
+DEF_VEC_P (partition_t);
+DEF_VEC_ALLOC_P (partition_t, heap);
+
+/* Allocate and initialize a partition from BITMAP. */
+
+static partition_t
+partition_alloc (bitmap stmts)
+{
+ partition_t partition = XCNEW (struct partition_s);
+ partition->stmts = stmts ? stmts : BITMAP_ALLOC (NULL);
+ return partition;
+}
+
+/* Free PARTITION. */
+
+static void
+partition_free (partition_t partition)
+{
+ BITMAP_FREE (partition->stmts);
+ free (partition);
+}
+
+
/* If bit I is not set, it means that this node represents an
operation that has already been performed, and that should not be
performed again. This is the subgraph of remaining important
@@ -80,32 +108,19 @@ ssa_name_has_uses_outside_loop_p (tree def, loop_p loop)
}
/* Returns true when STMT defines a scalar variable used after the
- loop. */
+ loop LOOP. */
static bool
-stmt_has_scalar_dependences_outside_loop (gimple stmt)
+stmt_has_scalar_dependences_outside_loop (loop_p loop, gimple stmt)
{
- tree name;
-
- switch (gimple_code (stmt))
- {
- case GIMPLE_CALL:
- case GIMPLE_ASSIGN:
- name = gimple_get_lhs (stmt);
- break;
+ def_operand_p def_p;
+ ssa_op_iter op_iter;
- case GIMPLE_PHI:
- name = gimple_phi_result (stmt);
- break;
-
- default:
- return false;
- }
+ FOR_EACH_SSA_DEF_OPERAND (def_p, stmt, op_iter, SSA_OP_DEF)
+ if (ssa_name_has_uses_outside_loop_p (DEF_FROM_PTR (def_p), loop))
+ return true;
- return (name
- && TREE_CODE (name) == SSA_NAME
- && ssa_name_has_uses_outside_loop_p (name,
- loop_containing_stmt (stmt)));
+ return false;
}
/* Update the PHI nodes of NEW_LOOP. NEW_LOOP is a duplicate of
@@ -205,7 +220,8 @@ create_bb_after_loop (struct loop *loop)
the code gen succeeded. */
static bool
-generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p)
+generate_loops_for_partition (struct loop *loop, partition_t partition,
+ bool copy_p)
{
unsigned i, x;
gimple_stmt_iterator bsi;
@@ -232,7 +248,7 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p)
basic_block bb = bbs[i];
for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi); gsi_next (&bsi))
- if (!bitmap_bit_p (partition, x++))
+ if (!bitmap_bit_p (partition->stmts, x++))
reset_debug_uses (gsi_stmt (bsi));
for (bsi = gsi_start_bb (bb); !gsi_end_p (bsi); gsi_next (&bsi))
@@ -240,7 +256,7 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p)
gimple stmt = gsi_stmt (bsi);
if (gimple_code (stmt) != GIMPLE_LABEL
&& !is_gimple_debug (stmt)
- && !bitmap_bit_p (partition, x++))
+ && !bitmap_bit_p (partition->stmts, x++))
reset_debug_uses (stmt);
}
}
@@ -250,7 +266,7 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p)
basic_block bb = bbs[i];
for (bsi = gsi_start_phis (bb); !gsi_end_p (bsi);)
- if (!bitmap_bit_p (partition, x++))
+ if (!bitmap_bit_p (partition->stmts, x++))
{
gimple phi = gsi_stmt (bsi);
if (!is_gimple_reg (gimple_phi_result (phi)))
@@ -265,7 +281,7 @@ generate_loops_for_partition (struct loop *loop, bitmap partition, bool copy_p)
gimple stmt = gsi_stmt (bsi);
if (gimple_code (stmt) != GIMPLE_LABEL
&& !is_gimple_debug (stmt)
- && !bitmap_bit_p (partition, x++))
+ && !bitmap_bit_p (partition->stmts, x++))
{
unlink_stmt_vdef (stmt);
gsi_remove (&bsi, true);
@@ -350,7 +366,7 @@ generate_memset_zero (gimple stmt, tree op0, tree nb_iter,
operation succeeded. */
static bool
-generate_builtin (struct loop *loop, bitmap partition, bool copy_p)
+generate_builtin (struct loop *loop, partition_t partition, bool copy_p)
{
bool res = false;
unsigned i, x = 0;
@@ -379,12 +395,19 @@ generate_builtin (struct loop *loop, bitmap partition, bool copy_p)
|| is_gimple_debug (stmt))
continue;
- if (!bitmap_bit_p (partition, x++))
+ if (!bitmap_bit_p (partition->stmts, x++))
continue;
- /* If the stmt has uses outside of the loop fail. */
- if (stmt_has_scalar_dependences_outside_loop (stmt))
- goto end;
+ /* If the stmt has uses outside of the loop fail.
+ ??? If the stmt is generated in another partition that
+ is not created as builtin we can ignore this. */
+ if (stmt_has_scalar_dependences_outside_loop (loop, stmt))
+ {
+ if (dump_file && (dump_flags & TDF_DETAILS))
+ fprintf (dump_file, "not generating builtin, partition has "
+ "scalar uses outside of the loop\n");
+ goto end;
+ }
if (is_gimple_assign (stmt)
&& !is_gimple_reg (gimple_assign_lhs (stmt)))
@@ -438,7 +461,8 @@ generate_builtin (struct loop *loop, bitmap partition, bool copy_p)
generate a built-in. */
static bool
-generate_code_for_partition (struct loop *loop, bitmap partition, bool copy_p)
+generate_code_for_partition (struct loop *loop, partition_t partition,
+ bool copy_p)
{
if (generate_builtin (loop, partition, copy_p))
return true;
@@ -550,14 +574,14 @@ has_upstream_mem_writes (int u)
return bitmap_bit_p (upstream_mem_writes, u);
}
-static void rdg_flag_vertex_and_dependent (struct graph *, int, bitmap, bitmap,
- bitmap, bool *);
+static void rdg_flag_vertex_and_dependent (struct graph *, int, partition_t,
+ bitmap, bitmap, bool *);
/* Flag the uses of U stopping following the information from
upstream_mem_writes. */
static void
-rdg_flag_uses (struct graph *rdg, int u, bitmap partition, bitmap loops,
+rdg_flag_uses (struct graph *rdg, int u, partition_t partition, bitmap loops,
bitmap processed, bool *part_has_writes)
{
use_operand_p use_p;
@@ -623,12 +647,12 @@ rdg_flag_uses (struct graph *rdg, int u, bitmap partition, bitmap loops,
in LOOPS. */
static void
-rdg_flag_vertex (struct graph *rdg, int v, bitmap partition, bitmap loops,
+rdg_flag_vertex (struct graph *rdg, int v, partition_t partition, bitmap loops,
bool *part_has_writes)
{
struct loop *loop;
- if (!bitmap_set_bit (partition, v))
+ if (!bitmap_set_bit (partition->stmts, v))
return;
loop = loop_containing_stmt (RDG_STMT (rdg, v));
@@ -645,7 +669,7 @@ rdg_flag_vertex (struct graph *rdg, int v, bitmap partition, bitmap loops,
Also flag their loop number in LOOPS. */
static void
-rdg_flag_vertex_and_dependent (struct graph *rdg, int v, bitmap partition,
+rdg_flag_vertex_and_dependent (struct graph *rdg, int v, partition_t partition,
bitmap loops, bitmap processed,
bool *part_has_writes)
{
@@ -692,7 +716,7 @@ collect_condition_stmts (struct loop *loop, VEC (gimple, heap) **conds)
RDG. */
static void
-rdg_flag_loop_exits (struct graph *rdg, bitmap loops, bitmap partition,
+rdg_flag_loop_exits (struct graph *rdg, bitmap loops, partition_t partition,
bitmap processed, bool *part_has_writes)
{
unsigned i;
@@ -726,12 +750,12 @@ rdg_flag_loop_exits (struct graph *rdg, bitmap loops, bitmap partition,
the strongly connected component C of the RDG are flagged, also
including the loop exit conditions. */
-static bitmap
+static partition_t
build_rdg_partition_for_component (struct graph *rdg, rdgc c,
bool *part_has_writes)
{
int i, v;
- bitmap partition = BITMAP_ALLOC (NULL);
+ partition_t partition = partition_alloc (NULL);
bitmap loops = BITMAP_ALLOC (NULL);
bitmap processed = BITMAP_ALLOC (NULL);
@@ -809,7 +833,7 @@ rdg_build_components (struct graph *rdg, VEC (int, heap) *starting_vertices,
zero pattern. */
static bool
-can_generate_builtin (struct graph *rdg, bitmap partition)
+can_generate_builtin (struct graph *rdg, partition_t partition)
{
unsigned i;
bitmap_iterator bi;
@@ -817,7 +841,7 @@ can_generate_builtin (struct graph *rdg, bitmap partition)
int nb_writes = 0;
int stores_zero = 0;
- EXECUTE_IF_SET_IN_BITMAP (partition, 0, i, bi)
+ EXECUTE_IF_SET_IN_BITMAP (partition->stmts, 0, i, bi)
if (RDG_MEM_READS_STMT (rdg, i))
nb_reads++;
else if (RDG_MEM_WRITE_STMT (rdg, i))
@@ -836,16 +860,16 @@ can_generate_builtin (struct graph *rdg, bitmap partition)
accesses in RDG. */
static bool
-similar_memory_accesses (struct graph *rdg, bitmap partition1,
- bitmap partition2)
+similar_memory_accesses (struct graph *rdg, partition_t partition1,
+ partition_t partition2)
{
unsigned i, j;
bitmap_iterator bi, bj;
- EXECUTE_IF_SET_IN_BITMAP (partition1, 0, i, bi)
+ EXECUTE_IF_SET_IN_BITMAP (partition1->stmts, 0, i, bi)
if (RDG_MEM_WRITE_STMT (rdg, i)
|| RDG_MEM_READS_STMT (rdg, i))
- EXECUTE_IF_SET_IN_BITMAP (partition2, 0, j, bj)
+ EXECUTE_IF_SET_IN_BITMAP (partition2->stmts, 0, j, bj)
if (RDG_MEM_WRITE_STMT (rdg, j)
|| RDG_MEM_READS_STMT (rdg, j))
if (rdg_has_similar_memory_accesses (rdg, i, j))
@@ -861,78 +885,24 @@ similar_memory_accesses (struct graph *rdg, bitmap partition1,
static void
fuse_partitions_with_similar_memory_accesses (struct graph *rdg,
- VEC (bitmap, heap) **partitions)
+ VEC (partition_t, heap) **partitions)
{
int p1, p2;
- bitmap partition1, partition2;
+ partition_t partition1, partition2;
- FOR_EACH_VEC_ELT (bitmap, *partitions, p1, partition1)
+ FOR_EACH_VEC_ELT (partition_t, *partitions, p1, partition1)
if (!can_generate_builtin (rdg, partition1))
- FOR_EACH_VEC_ELT (bitmap, *partitions, p2, partition2)
+ FOR_EACH_VEC_ELT (partition_t, *partitions, p2, partition2)
if (p1 != p2
&& !can_generate_builtin (rdg, partition2)
&& similar_memory_accesses (rdg, partition1, partition2))
{
- bitmap_ior_into (partition1, partition2);
- VEC_ordered_remove (bitmap, *partitions, p2);
+ bitmap_ior_into (partition1->stmts, partition2->stmts);
+ VEC_ordered_remove (partition_t, *partitions, p2);
p2--;
}
}
-/* Returns true when STMT will be code generated in a partition of RDG
- different than PART and that will not be code generated as a
- builtin. */
-
-static bool
-stmt_generated_in_another_partition (struct graph *rdg, gimple stmt, int part,
- VEC (bitmap, heap) *partitions)
-{
- int p;
- bitmap pp;
- unsigned i;
- bitmap_iterator bi;
-
- FOR_EACH_VEC_ELT (bitmap, partitions, p, pp)
- if (p != part
- && !can_generate_builtin (rdg, pp))
- EXECUTE_IF_SET_IN_BITMAP (pp, 0, i, bi)
- if (stmt == RDG_STMT (rdg, i))
- return true;
-
- return false;
-}
-
-/* For each partition in PARTITIONS that will be code generated using
- a builtin, add its scalar computations used after the loop to
- PARTITION. */
-
-static void
-add_scalar_computations_to_partition (struct graph *rdg,
- VEC (bitmap, heap) *partitions,
- bitmap partition)
-{
- int p;
- bitmap pp;
- unsigned i;
- bitmap_iterator bi;
- bitmap l = BITMAP_ALLOC (NULL);
- bitmap pr = BITMAP_ALLOC (NULL);
- bool f = false;
-
- FOR_EACH_VEC_ELT (bitmap, partitions, p, pp)
- if (can_generate_builtin (rdg, pp))
- EXECUTE_IF_SET_IN_BITMAP (pp, 0, i, bi)
- if (stmt_has_scalar_dependences_outside_loop (RDG_STMT (rdg, i))
- && !stmt_generated_in_another_partition (rdg, RDG_STMT (rdg, i), p,
- partitions))
- rdg_flag_vertex_and_dependent (rdg, i, partition, l, pr, &f);
-
- rdg_flag_loop_exits (rdg, l, partition, pr, &f);
-
- BITMAP_FREE (pr);
- BITMAP_FREE (l);
-}
-
/* Aggregate several components into a useful partition that is
registered in the PARTITIONS vector. Partitions will be
distributed in different loops. */
@@ -940,15 +910,15 @@ add_scalar_computations_to_partition (struct graph *rdg,
static void
rdg_build_partitions (struct graph *rdg, VEC (rdgc, heap) *components,
VEC (int, heap) **other_stores,
- VEC (bitmap, heap) **partitions, bitmap processed)
+ VEC (partition_t, heap) **partitions, bitmap processed)
{
int i;
rdgc x;
- bitmap partition = BITMAP_ALLOC (NULL);
+ partition_t partition = partition_alloc (NULL);
FOR_EACH_VEC_ELT (rdgc, components, i, x)
{
- bitmap np;
+ partition_t np;
bool part_has_writes = false;
int v = VEC_index (int, x->vertices, 0);
@@ -956,20 +926,20 @@ rdg_build_partitions (struct graph *rdg, VEC (rdgc, heap) *components,
continue;
np = build_rdg_partition_for_component (rdg, x, &part_has_writes);
- bitmap_ior_into (partition, np);
- bitmap_ior_into (processed, np);
- BITMAP_FREE (np);
+ bitmap_ior_into (partition->stmts, np->stmts);
+ bitmap_ior_into (processed, np->stmts);
+ partition_free (np);
if (part_has_writes)
{
if (dump_file && (dump_flags & TDF_DETAILS))
{
fprintf (dump_file, "ldist useful partition:\n");
- dump_bitmap (dump_file, partition);
+ dump_bitmap (dump_file, partition->stmts);
}
- VEC_safe_push (bitmap, heap, *partitions, partition);
- partition = BITMAP_ALLOC (NULL);
+ VEC_safe_push (partition_t, heap, *partitions, partition);
+ partition = partition_alloc (NULL);
}
}
@@ -996,13 +966,11 @@ rdg_build_partitions (struct graph *rdg, VEC (rdgc, heap) *components,
free_rdg_components (comps);
}
- add_scalar_computations_to_partition (rdg, *partitions, partition);
-
/* If there is something left in the last partition, save it. */
- if (bitmap_count_bits (partition) > 0)
- VEC_safe_push (bitmap, heap, *partitions, partition);
+ if (bitmap_count_bits (partition->stmts) > 0)
+ VEC_safe_push (partition_t, heap, *partitions, partition);
else
- BITMAP_FREE (partition);
+ partition_free (partition);
fuse_partitions_with_similar_memory_accesses (rdg, partitions);
}
@@ -1010,20 +978,20 @@ rdg_build_partitions (struct graph *rdg, VEC (rdgc, heap) *components,
/* Dump to FILE the PARTITIONS. */
static void
-dump_rdg_partitions (FILE *file, VEC (bitmap, heap) *partitions)
+dump_rdg_partitions (FILE *file, VEC (partition_t, heap) *partitions)
{
int i;
- bitmap partition;
+ partition_t partition;
- FOR_EACH_VEC_ELT (bitmap, partitions, i, partition)
- debug_bitmap_file (file, partition);
+ FOR_EACH_VEC_ELT (partition_t, partitions, i, partition)
+ debug_bitmap_file (file, partition->stmts);
}
/* Debug PARTITIONS. */
-extern void debug_rdg_partitions (VEC (bitmap, heap) *);
+extern void debug_rdg_partitions (VEC (partition_t, heap) *);
DEBUG_FUNCTION void
-debug_rdg_partitions (VEC (bitmap, heap) *partitions)
+debug_rdg_partitions (VEC (partition_t, heap) *partitions)
{
dump_rdg_partitions (stderr, partitions);
}
@@ -1051,13 +1019,13 @@ number_of_rw_in_rdg (struct graph *rdg)
the RDG. */
static int
-number_of_rw_in_partition (struct graph *rdg, bitmap partition)
+number_of_rw_in_partition (struct graph *rdg, partition_t partition)
{
int res = 0;
unsigned i;
bitmap_iterator ii;
- EXECUTE_IF_SET_IN_BITMAP (partition, 0, i, ii)
+ EXECUTE_IF_SET_IN_BITMAP (partition->stmts, 0, i, ii)
{
if (RDG_MEM_WRITE_STMT (rdg, i))
++res;
@@ -1073,13 +1041,13 @@ number_of_rw_in_partition (struct graph *rdg, bitmap partition)
write operations of RDG. */
static bool
-partition_contains_all_rw (struct graph *rdg, VEC (bitmap, heap) *partitions)
+partition_contains_all_rw (struct graph *rdg, VEC (partition_t, heap) *partitions)
{
int i;
- bitmap partition;
+ partition_t partition;
int nrw = number_of_rw_in_rdg (rdg);
- FOR_EACH_VEC_ELT (bitmap, partitions, i, partition)
+ FOR_EACH_VEC_ELT (partition_t, partitions, i, partition)
if (nrw == number_of_rw_in_partition (rdg, partition))
return true;
@@ -1095,9 +1063,10 @@ ldist_gen (struct loop *loop, struct graph *rdg,
{
int i, nbp;
VEC (rdgc, heap) *components = VEC_alloc (rdgc, heap, 3);
- VEC (bitmap, heap) *partitions = VEC_alloc (bitmap, heap, 3);
+ VEC (partition_t, heap) *partitions = VEC_alloc (partition_t, heap, 3);
VEC (int, heap) *other_stores = VEC_alloc (int, heap, 3);
- bitmap partition, processed = BITMAP_ALLOC (NULL);
+ partition_t partition;
+ bitmap processed = BITMAP_ALLOC (NULL);
remaining_stmts = BITMAP_ALLOC (NULL);
upstream_mem_writes = BITMAP_ALLOC (NULL);
@@ -1131,11 +1100,12 @@ ldist_gen (struct loop *loop, struct graph *rdg,
rdg_build_partitions (rdg, components, &other_stores, &partitions,
processed);
BITMAP_FREE (processed);
- nbp = VEC_length (bitmap, partitions);
+ nbp = VEC_length (partition_t, partitions);
if (nbp == 0
|| (nbp == 1
- && !can_generate_builtin (rdg, VEC_index (bitmap, partitions, 0)))
+ && !can_generate_builtin (rdg,
+ VEC_index (partition_t, partitions, 0)))
|| (nbp > 1
&& partition_contains_all_rw (rdg, partitions)))
goto ldist_done;
@@ -1143,7 +1113,7 @@ ldist_gen (struct loop *loop, struct graph *rdg,
if (dump_file && (dump_flags & TDF_DETAILS))
dump_rdg_partitions (dump_file, partitions);
- FOR_EACH_VEC_ELT (bitmap, partitions, i, partition)
+ FOR_EACH_VEC_ELT (partition_t, partitions, i, partition)
if (!generate_code_for_partition (loop, partition, i < nbp - 1))
goto ldist_done;
@@ -1156,11 +1126,11 @@ ldist_gen (struct loop *loop, struct graph *rdg,
BITMAP_FREE (remaining_stmts);
BITMAP_FREE (upstream_mem_writes);
- FOR_EACH_VEC_ELT (bitmap, partitions, i, partition)
- BITMAP_FREE (partition);
+ FOR_EACH_VEC_ELT (partition_t, partitions, i, partition)
+ partition_free (partition);
VEC_free (int, heap, other_stores);
- VEC_free (bitmap, heap, partitions);
+ VEC_free (partition_t, heap, partitions);
free_rdg_components (components);
return nbp;
}
diff --git a/gcc/tree-mudflap.c b/gcc/tree-mudflap.c
index edd7755a701..dfb0ae1ee7d 100644
--- a/gcc/tree-mudflap.c
+++ b/gcc/tree-mudflap.c
@@ -427,10 +427,6 @@ execute_mudflap_function_ops (void)
push_gimplify_context (&gctx);
- add_referenced_var (mf_cache_array_decl);
- add_referenced_var (mf_cache_shift_decl);
- add_referenced_var (mf_cache_mask_decl);
-
/* In multithreaded mode, don't cache the lookup cache parameters. */
if (! flag_mudflap_threads)
mf_decl_cache_locals ();
diff --git a/gcc/tree-nomudflap.c b/gcc/tree-nomudflap.c
index f204e2a064c..b7a41e1a857 100644
--- a/gcc/tree-nomudflap.c
+++ b/gcc/tree-nomudflap.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-inline.h"
#include "gimple.h"
#include "hashtab.h"
-#include "output.h"
#include "langhooks.h"
#include "tree-mudflap.h"
#include "tree-pass.h"
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index d69a504d7de..b48c5c50e48 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "flags.h"
#include "tree-flow.h"
#include "tree-dump.h"
diff --git a/gcc/tree-predcom.c b/gcc/tree-predcom.c
index 1566902e3d7..310fe3bd1d7 100644
--- a/gcc/tree-predcom.c
+++ b/gcc/tree-predcom.c
@@ -100,7 +100,7 @@ along with GCC; see the file COPYING3. If not see
and we can combine the chains for e and f into one chain.
5) For each root reference (end of the chain) R, let N be maximum distance
- of a reference reusing its value. Variables R0 upto RN are created,
+ of a reference reusing its value. Variables R0 up to RN are created,
together with phi nodes that transfer values from R1 .. RN to
R0 .. R(N-1).
Initial values are loaded to R0..R(N-1) (in case not all references
diff --git a/gcc/tree-pretty-print.c b/gcc/tree-pretty-print.c
index 6e6a5f8ae9e..f810d772d59 100644
--- a/gcc/tree-pretty-print.c
+++ b/gcc/tree-pretty-print.c
@@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "tree.h"
-#include "output.h"
#include "tree-pretty-print.h"
#include "hashtab.h"
#include "tree-flow.h"
diff --git a/gcc/tree-profile.c b/gcc/tree-profile.c
index 4136821bca6..dfd0ef04677 100644
--- a/gcc/tree-profile.c
+++ b/gcc/tree-profile.c
@@ -31,7 +31,6 @@ along with GCC; see the file COPYING3. If not see
#include "coretypes.h"
#include "tm.h"
#include "flags.h"
-#include "regs.h"
#include "function.h"
#include "basic-block.h"
#include "diagnostic-core.h"
@@ -45,7 +44,6 @@ along with GCC; see the file COPYING3. If not see
#include "cgraph.h"
#include "profile.h"
#include "target.h"
-#include "output.h"
static GTY(()) tree gcov_type_node;
static GTY(()) tree gcov_type_tmp_var;
diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c
index 0438084f2ff..2e3e97898fe 100644
--- a/gcc/tree-sra.c
+++ b/gcc/tree-sra.c
@@ -1081,7 +1081,7 @@ disqualify_ops_if_throwing_stmt (gimple stmt, tree lhs, tree rhs)
return false;
}
-/* Scan expressions occuring in STMT, create access structures for all accesses
+/* Scan expressions occurring in STMT, create access structures for all accesses
to candidates for scalarization and remove those candidates which occur in
statements or expressions that prevent them from being split apart. Return
true if any access has been inserted. */
@@ -1549,17 +1549,20 @@ build_user_friendly_ref_for_offset (tree *res, tree type, HOST_WIDE_INT offset,
for (fld = TYPE_FIELDS (type); fld; fld = DECL_CHAIN (fld))
{
HOST_WIDE_INT pos, size;
- tree expr, *expr_ptr;
+ tree tr_pos, expr, *expr_ptr;
if (TREE_CODE (fld) != FIELD_DECL)
continue;
- pos = int_bit_position (fld);
+ tr_pos = bit_position (fld);
+ if (!tr_pos || !host_integerp (tr_pos, 1))
+ continue;
+ pos = TREE_INT_CST_LOW (tr_pos);
gcc_assert (TREE_CODE (type) == RECORD_TYPE || pos == 0);
tr_size = DECL_SIZE (fld);
if (!tr_size || !host_integerp (tr_size, 1))
continue;
- size = tree_low_cst (tr_size, 1);
+ size = TREE_INT_CST_LOW (tr_size);
if (size == 0)
{
if (pos != offset)
diff --git a/gcc/tree-ssa-address.c b/gcc/tree-ssa-address.c
index e11da3eb869..9fc523e108f 100644
--- a/gcc/tree-ssa-address.c
+++ b/gcc/tree-ssa-address.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
#include "tree-dump.h"
@@ -868,7 +867,7 @@ copy_ref_info (tree new_ref, tree old_ref)
duplicate_ssa_name_ptr_info
(new_ptr_base, SSA_NAME_PTR_INFO (TREE_OPERAND (base, 0)));
new_pi = SSA_NAME_PTR_INFO (new_ptr_base);
- /* We have to be careful about transfering alignment information. */
+ /* We have to be careful about transferring alignment information. */
if (get_ptr_info_alignment (new_pi, &align, &misalign)
&& TREE_CODE (old_ref) == MEM_REF
&& !(TREE_CODE (new_ref) == TARGET_MEM_REF
diff --git a/gcc/tree-ssa-ccp.c b/gcc/tree-ssa-ccp.c
index feded5bfab8..c248cf23c73 100644
--- a/gcc/tree-ssa-ccp.c
+++ b/gcc/tree-ssa-ccp.c
@@ -118,7 +118,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c
index 45b5c92c999..696f3f33a22 100644
--- a/gcc/tree-ssa-copy.c
+++ b/gcc/tree-ssa-copy.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c
index d35297abbd7..19a1c7b01a2 100644
--- a/gcc/tree-ssa-dom.c
+++ b/gcc/tree-ssa-dom.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "cfgloop.h"
-#include "output.h"
#include "function.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c
index dfbf110a015..252020624b4 100644
--- a/gcc/tree-ssa-live.c
+++ b/gcc/tree-ssa-live.c
@@ -835,6 +835,9 @@ remove_unused_locals (void)
{
if (var_ann (var))
remove_referenced_var (var);
+ if (cfun->nonlocal_goto_save_area
+ && TREE_OPERAND (cfun->nonlocal_goto_save_area, 0) == var)
+ cfun->nonlocal_goto_save_area = NULL;
continue;
}
}
diff --git a/gcc/tree-ssa-loop-ch.c b/gcc/tree-ssa-loop-ch.c
index 84e5a7d250b..38450045408 100644
--- a/gcc/tree-ssa-loop-ch.c
+++ b/gcc/tree-ssa-loop-ch.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-flow.h"
#include "tree-dump.h"
#include "tree-pass.h"
diff --git a/gcc/tree-ssa-loop-im.c b/gcc/tree-ssa-loop-im.c
index 5a01e618da5..9c093f83dde 100644
--- a/gcc/tree-ssa-loop-im.c
+++ b/gcc/tree-ssa-loop-im.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "tree-flow.h"
@@ -52,7 +51,7 @@ along with GCC; see the file COPYING3. If not see
}
}
- Where COND and INV are is invariants, but evaluating INV may trap or be
+ Where COND and INV are invariants, but evaluating INV may trap or be
invalid from some other reason if !COND. This may be transformed to
if (cond)
@@ -1626,6 +1625,7 @@ gather_mem_refs_stmt (struct loop *loop, gimple stmt)
fprintf (dump_file, "\n");
}
}
+
if (is_stored)
mark_ref_stored (ref, loop);
@@ -1956,6 +1956,173 @@ get_lsm_tmp_name (tree ref, unsigned n)
return lsm_tmp_name;
}
+struct prev_flag_edges {
+ /* Edge to insert new flag comparison code. */
+ edge append_cond_position;
+
+ /* Edge for fall through from previous flag comparison. */
+ edge last_cond_fallthru;
+};
+
+/* Helper function for execute_sm. Emit code to store TMP_VAR into
+ MEM along edge EX.
+
+ The store is only done if MEM has changed. We do this so no
+ changes to MEM occur on code paths that did not originally store
+ into it.
+
+ The common case for execute_sm will transform:
+
+ for (...) {
+ if (foo)
+ stuff;
+ else
+ MEM = TMP_VAR;
+ }
+
+ into:
+
+ lsm = MEM;
+ for (...) {
+ if (foo)
+ stuff;
+ else
+ lsm = TMP_VAR;
+ }
+ MEM = lsm;
+
+ This function will generate:
+
+ lsm = MEM;
+
+ lsm_flag = false;
+ ...
+ for (...) {
+ if (foo)
+ stuff;
+ else {
+ lsm = TMP_VAR;
+ lsm_flag = true;
+ }
+ }
+ if (lsm_flag) <--
+ MEM = lsm; <--
+*/
+
+static void
+execute_sm_if_changed (edge ex, tree mem, tree tmp_var, tree flag)
+{
+ basic_block new_bb, then_bb, old_dest;
+ bool loop_has_only_one_exit;
+ edge then_old_edge, orig_ex = ex;
+ gimple_stmt_iterator gsi;
+ gimple stmt;
+ struct prev_flag_edges *prev_edges = (struct prev_flag_edges *) ex->aux;
+
+ /* ?? Insert store after previous store if applicable. See note
+ below. */
+ if (prev_edges)
+ ex = prev_edges->append_cond_position;
+
+ loop_has_only_one_exit = single_pred_p (ex->dest);
+
+ if (loop_has_only_one_exit)
+ ex = split_block_after_labels (ex->dest);
+
+ old_dest = ex->dest;
+ new_bb = split_edge (ex);
+ then_bb = create_empty_bb (new_bb);
+ if (current_loops && new_bb->loop_father)
+ add_bb_to_loop (then_bb, new_bb->loop_father);
+
+ gsi = gsi_start_bb (new_bb);
+ stmt = gimple_build_cond (NE_EXPR, flag, boolean_false_node,
+ NULL_TREE, NULL_TREE);
+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+
+ gsi = gsi_start_bb (then_bb);
+ /* Insert actual store. */
+ stmt = gimple_build_assign (unshare_expr (mem), tmp_var);
+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+
+ make_edge (new_bb, then_bb, EDGE_TRUE_VALUE);
+ make_edge (new_bb, old_dest, EDGE_FALSE_VALUE);
+ then_old_edge = make_edge (then_bb, old_dest, EDGE_FALLTHRU);
+
+ set_immediate_dominator (CDI_DOMINATORS, then_bb, new_bb);
+
+ if (prev_edges)
+ {
+ basic_block prevbb = prev_edges->last_cond_fallthru->src;
+ redirect_edge_succ (prev_edges->last_cond_fallthru, new_bb);
+ set_immediate_dominator (CDI_DOMINATORS, new_bb, prevbb);
+ set_immediate_dominator (CDI_DOMINATORS, old_dest,
+ recompute_dominator (CDI_DOMINATORS, old_dest));
+ }
+
+ /* ?? Because stores may alias, they must happen in the exact
+ sequence they originally happened. Save the position right after
+ the (_lsm) store we just created so we can continue appending after
+ it and maintain the original order. */
+ {
+ struct prev_flag_edges *p;
+
+ if (orig_ex->aux)
+ orig_ex->aux = NULL;
+ alloc_aux_for_edge (orig_ex, sizeof (struct prev_flag_edges));
+ p = (struct prev_flag_edges *) orig_ex->aux;
+ p->append_cond_position = then_old_edge;
+ p->last_cond_fallthru = find_edge (new_bb, old_dest);
+ orig_ex->aux = (void *) p;
+ }
+
+ if (!loop_has_only_one_exit)
+ for (gsi = gsi_start_phis (old_dest); !gsi_end_p (gsi); gsi_next (&gsi))
+ {
+ gimple phi = gsi_stmt (gsi);
+ unsigned i;
+
+ for (i = 0; i < gimple_phi_num_args (phi); i++)
+ if (gimple_phi_arg_edge (phi, i)->src == new_bb)
+ {
+ tree arg = gimple_phi_arg_def (phi, i);
+ add_phi_arg (phi, arg, then_old_edge, UNKNOWN_LOCATION);
+ update_stmt (phi);
+ }
+ }
+ /* Remove the original fall through edge. This was the
+ single_succ_edge (new_bb). */
+ EDGE_SUCC (new_bb, 0)->flags &= ~EDGE_FALLTHRU;
+}
+
+/* Helper function for execute_sm. On every location where REF is
+ set, set an appropriate flag indicating the store. */
+
+static tree
+execute_sm_if_changed_flag_set (struct loop *loop, mem_ref_p ref)
+{
+ unsigned i;
+ mem_ref_loc_p loc;
+ tree flag;
+ VEC (mem_ref_loc_p, heap) *locs = NULL;
+ char *str = get_lsm_tmp_name (ref->mem, ~0);
+
+ lsm_tmp_name_add ("_flag");
+ flag = make_rename_temp (boolean_type_node, str);
+ get_all_locs_in_loop (loop, ref, &locs);
+ FOR_EACH_VEC_ELT (mem_ref_loc_p, locs, i, loc)
+ {
+ gimple_stmt_iterator gsi;
+ gimple stmt;
+
+ gsi = gsi_for_stmt (loc->stmt);
+ stmt = gimple_build_assign (flag, boolean_true_node);
+ gsi_insert_after (&gsi, stmt, GSI_CONTINUE_LINKING);
+ }
+ VEC_free (mem_ref_loc_p, heap, locs);
+ return flag;
+}
+
/* Executes store motion of memory reference REF from LOOP.
Exits from the LOOP are stored in EXITS. The initialization of the
temporary variable is put to the preheader of the loop, and assignments
@@ -1964,12 +2131,13 @@ get_lsm_tmp_name (tree ref, unsigned n)
static void
execute_sm (struct loop *loop, VEC (edge, heap) *exits, mem_ref_p ref)
{
- tree tmp_var;
+ tree tmp_var, store_flag;
unsigned i;
- gimple load, store;
+ gimple load;
struct fmt_data fmt_data;
- edge ex;
+ edge ex, latch_edge;
struct lim_aux_data *lim_data;
+ bool multi_threaded_model_p = false;
if (dump_file && (dump_flags & TDF_DETAILS))
{
@@ -1985,23 +2153,47 @@ execute_sm (struct loop *loop, VEC (edge, heap) *exits, mem_ref_p ref)
fmt_data.orig_loop = loop;
for_each_index (&ref->mem, force_move_till, &fmt_data);
+ if ((flag_tm && block_in_transaction (loop_preheader_edge (loop)->src))
+ || !PARAM_VALUE (PARAM_ALLOW_STORE_DATA_RACES))
+ multi_threaded_model_p = true;
+
+ if (multi_threaded_model_p)
+ store_flag = execute_sm_if_changed_flag_set (loop, ref);
+
rewrite_mem_refs (loop, ref, tmp_var);
- /* Emit the load & stores. */
+ /* Emit the load code into the latch, so that we are sure it will
+ be processed after all dependencies. */
+ latch_edge = loop_latch_edge (loop);
+
+ /* FIXME/TODO: For the multi-threaded variant, we could avoid this
+ load altogether, since the store is predicated by a flag. We
+ could, do the load only if it was originally in the loop. */
load = gimple_build_assign (tmp_var, unshare_expr (ref->mem));
lim_data = init_lim_data (load);
lim_data->max_loop = loop;
lim_data->tgt_loop = loop;
+ gsi_insert_on_edge (latch_edge, load);
- /* Put this into the latch, so that we are sure it will be processed after
- all dependencies. */
- gsi_insert_on_edge (loop_latch_edge (loop), load);
-
- FOR_EACH_VEC_ELT (edge, exits, i, ex)
+ if (multi_threaded_model_p)
{
- store = gimple_build_assign (unshare_expr (ref->mem), tmp_var);
- gsi_insert_on_edge (ex, store);
+ load = gimple_build_assign (store_flag, boolean_false_node);
+ lim_data = init_lim_data (load);
+ lim_data->max_loop = loop;
+ lim_data->tgt_loop = loop;
+ gsi_insert_on_edge (latch_edge, load);
}
+
+ /* Sink the store to every exit from the loop. */
+ FOR_EACH_VEC_ELT (edge, exits, i, ex)
+ if (!multi_threaded_model_p)
+ {
+ gimple store;
+ store = gimple_build_assign (unshare_expr (ref->mem), tmp_var);
+ gsi_insert_on_edge (ex, store);
+ }
+ else
+ execute_sm_if_changed (ex, ref->mem, tmp_var, store_flag);
}
/* Hoists memory references MEM_REFS out of LOOP. EXITS is the list of exit
@@ -2410,6 +2602,8 @@ tree_ssa_lim_initialize (void)
if (flag_tm)
compute_transaction_bits ();
+
+ alloc_aux_for_edges (0);
}
/* Cleans up after the invariant motion pass. */
@@ -2421,6 +2615,8 @@ tree_ssa_lim_finalize (void)
unsigned i;
bitmap b;
+ free_aux_for_edges ();
+
FOR_EACH_BB (bb)
SET_ALWAYS_EXECUTED_IN (bb, NULL);
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c
index 3016f08e7e3..9ce3a42f182 100644
--- a/gcc/tree-ssa-loop-ivopts.c
+++ b/gcc/tree-ssa-loop-ivopts.c
@@ -4704,7 +4704,7 @@ may_eliminate_iv (struct ivopts_data *data,
period_value = tree_to_double_int (period);
if (double_int_ucmp (max_niter, period_value) > 0)
{
- /* See if we can take advantage of infered loop bound information. */
+ /* See if we can take advantage of inferred loop bound information. */
if (data->loop_single_exit_p)
{
if (!max_loop_iterations (loop, &max_niter))
@@ -4817,7 +4817,7 @@ determine_use_iv_cost_condition (struct ivopts_data *data,
/* When the condition is a comparison of the candidate IV against
zero, prefer this IV.
- TODO: The constant that we're substracting from the cost should
+ TODO: The constant that we're subtracting from the cost should
be target-dependent. This information should be added to the
target costs for each backend. */
if (!infinite_cost_p (elim_cost) /* Do not try to decrease infinite! */
diff --git a/gcc/tree-ssa-loop-manip.c b/gcc/tree-ssa-loop-manip.c
index a0123ffcd17..e2e76058251 100644
--- a/gcc/tree-ssa-loop-manip.c
+++ b/gcc/tree-ssa-loop-manip.c
@@ -25,13 +25,11 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-flow.h"
#include "tree-dump.h"
#include "timevar.h"
#include "cfgloop.h"
#include "tree-pass.h"
-#include "cfglayout.h"
#include "tree-scalar-evolution.h"
#include "params.h"
#include "tree-inline.h"
diff --git a/gcc/tree-ssa-loop-niter.c b/gcc/tree-ssa-loop-niter.c
index 8d99408d54b..c7c4a15bef4 100644
--- a/gcc/tree-ssa-loop-niter.c
+++ b/gcc/tree-ssa-loop-niter.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "intl.h"
@@ -591,7 +590,7 @@ number_of_iterations_ne_max (mpz_t bnd, bool no_overflow, tree c, tree s,
overflow, ... */
if (exit_must_be_taken)
{
- /* ... then we can strenghten this to C / S, and possibly we can use
+ /* ... then we can strengthen this to C / S, and possibly we can use
the upper bound on C given by BNDS. */
if (TREE_CODE (c) == INTEGER_CST)
mpz_set_double_int (bnd, tree_to_double_int (c), true);
diff --git a/gcc/tree-ssa-loop-prefetch.c b/gcc/tree-ssa-loop-prefetch.c
index 00f30a1f31b..0f592a1f099 100644
--- a/gcc/tree-ssa-loop-prefetch.c
+++ b/gcc/tree-ssa-loop-prefetch.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-pretty-print.h"
#include "tree-flow.h"
#include "tree-dump.h"
diff --git a/gcc/tree-ssa-loop-unswitch.c b/gcc/tree-ssa-loop-unswitch.c
index b6b32dcd99a..48cb7e06a39 100644
--- a/gcc/tree-ssa-loop-unswitch.c
+++ b/gcc/tree-ssa-loop-unswitch.c
@@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-flow.h"
#include "tree-dump.h"
#include "timevar.h"
diff --git a/gcc/tree-ssa-loop.c b/gcc/tree-ssa-loop.c
index 3d650bfcbfd..c6304c4cccb 100644
--- a/gcc/tree-ssa-loop.c
+++ b/gcc/tree-ssa-loop.c
@@ -25,7 +25,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "tree-flow.h"
#include "tree-dump.h"
#include "tree-pass.h"
diff --git a/gcc/tree-ssa-math-opts.c b/gcc/tree-ssa-math-opts.c
index f54d08dffee..a8aaed3962a 100644
--- a/gcc/tree-ssa-math-opts.c
+++ b/gcc/tree-ssa-math-opts.c
@@ -2533,7 +2533,7 @@ convert_mult_to_fma (gimple mul_stmt, tree op1, tree op2)
a*b-c -> fma(a,b,-c): we've exchanged MUL+SUB for FMA+NEG, which
is still two operations. Consider -(a*b)-c -> fma(-a,b,-c): we
still have 3 operations, but in the FMA form the two NEGs are
- independant and could be run in parallel. */
+ independent and could be run in parallel. */
}
FOR_EACH_IMM_USE_STMT (use_stmt, imm_iter, mul_result)
diff --git a/gcc/tree-ssa-pre.c b/gcc/tree-ssa-pre.c
index c63acec556d..9adf55d18cf 100644
--- a/gcc/tree-ssa-pre.c
+++ b/gcc/tree-ssa-pre.c
@@ -4069,7 +4069,7 @@ compute_avail (void)
if (TREE_CODE (nary->op[i]) == SSA_NAME)
add_to_exp_gen (block, nary->op[i]);
- /* If the NARY traps and there was a preceeding
+ /* If the NARY traps and there was a preceding
point in the block that might not return avoid
adding the nary to EXP_GEN. */
if (BB_MAY_NOTRETURN (block)
diff --git a/gcc/tree-ssa-propagate.c b/gcc/tree-ssa-propagate.c
index a057ad72bed..d58ec11e159 100644
--- a/gcc/tree-ssa-propagate.c
+++ b/gcc/tree-ssa-propagate.c
@@ -27,7 +27,6 @@
#include "flags.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "gimple-pretty-print.h"
#include "timevar.h"
@@ -723,7 +722,7 @@ update_gimple_call (gimple_stmt_iterator *si_p, tree fn, int nargs, ...)
call. This can only be done if EXPR is a CALL_EXPR with valid
GIMPLE operands as arguments, or if it is a suitable RHS expression
for a GIMPLE_ASSIGN. More complex expressions will require
- gimplification, which will introduce addtional statements. In this
+ gimplification, which will introduce additional statements. In this
event, no update is performed, and the function returns false.
Note that we cannot mutate a GIMPLE_CALL in-place, so we always
replace the statement at *SI_P with an entirely new statement.
diff --git a/gcc/tree-ssa-reassoc.c b/gcc/tree-ssa-reassoc.c
index 9c363931b76..b4f442de7a8 100644
--- a/gcc/tree-ssa-reassoc.c
+++ b/gcc/tree-ssa-reassoc.c
@@ -1245,15 +1245,15 @@ build_and_add_sum (tree tmpvar, tree op1, tree op2, enum tree_code opcode)
in the candidates bitmap with relevant indices into *OPS.
- Second we build the chains of multiplications or divisions for
- these candidates, counting the number of occurences of (operand, code)
+ these candidates, counting the number of occurrences of (operand, code)
pairs in all of the candidates chains.
- - Third we sort the (operand, code) pairs by number of occurence and
+ - Third we sort the (operand, code) pairs by number of occurrence and
process them starting with the pair with the most uses.
* For each such pair we walk the candidates again to build a
second candidate bitmap noting all multiplication/division chains
- that have at least one occurence of (operand, code).
+ that have at least one occurrence of (operand, code).
* We build an alternate addition chain only covering these
candidates with one (operand, code) operation removed from their
diff --git a/gcc/tree-ssa-sccvn.c b/gcc/tree-ssa-sccvn.c
index ad9460b9411..ae912d732a8 100644
--- a/gcc/tree-ssa-sccvn.c
+++ b/gcc/tree-ssa-sccvn.c
@@ -998,7 +998,7 @@ vn_reference_fold_indirect (VEC (vn_reference_op_s, heap) **ops,
HOST_WIDE_INT addr_offset;
/* The only thing we have to do is from &OBJ.foo.bar add the offset
- from .foo.bar to the preceeding MEM_REF offset and replace the
+ from .foo.bar to the preceding MEM_REF offset and replace the
address with &OBJ. */
addr_base = get_addr_base_and_unit_offset (TREE_OPERAND (op->op0, 0),
&addr_offset);
@@ -1043,7 +1043,7 @@ vn_reference_maybe_forwprop_address (VEC (vn_reference_op_s, heap) **ops,
off = double_int_sext (off, TYPE_PRECISION (TREE_TYPE (mem_op->op0)));
/* The only thing we have to do is from &OBJ.foo.bar add the offset
- from .foo.bar to the preceeding MEM_REF offset and replace the
+ from .foo.bar to the preceding MEM_REF offset and replace the
address with &OBJ. */
if (code == ADDR_EXPR)
{
@@ -1379,7 +1379,7 @@ vn_reference_lookup_or_insert_for_pieces (tree vuse,
/* Callback for walk_non_aliased_vuses. Tries to perform a lookup
from the statement defining VUSE and if not successful tries to
- translate *REFP and VR_ through an aggregate copy at the defintion
+ translate *REFP and VR_ through an aggregate copy at the definition
of VUSE. */
static void *
diff --git a/gcc/tree-ssa-structalias.c b/gcc/tree-ssa-structalias.c
index e2fdff34e7b..cb3e54b1110 100644
--- a/gcc/tree-ssa-structalias.c
+++ b/gcc/tree-ssa-structalias.c
@@ -28,7 +28,6 @@
#include "bitmap.h"
#include "flags.h"
#include "basic-block.h"
-#include "output.h"
#include "tree.h"
#include "tree-flow.h"
#include "tree-inline.h"
diff --git a/gcc/tree-ssa-tail-merge.c b/gcc/tree-ssa-tail-merge.c
index 210cb134624..da5878ad797 100644
--- a/gcc/tree-ssa-tail-merge.c
+++ b/gcc/tree-ssa-tail-merge.c
@@ -187,7 +187,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "flags.h"
#include "function.h"
#include "tree-flow.h"
diff --git a/gcc/tree-ssa-ter.c b/gcc/tree-ssa-ter.c
index af8aae04a74..c4a50f5d329 100644
--- a/gcc/tree-ssa-ter.c
+++ b/gcc/tree-ssa-ter.c
@@ -473,7 +473,7 @@ finished_with_expr (temp_expr_table_p tab, int version, bool free_expr)
bitmap_iterator bi;
/* Remove this expression from its dependent lists. The partition dependence
- list is retained and transfered later to whomever uses this version. */
+ list is retained and transferred later to whomever uses this version. */
if (tab->partition_dependencies[version])
{
EXECUTE_IF_SET_IN_BITMAP (tab->partition_dependencies[version], 0, i, bi)
diff --git a/gcc/tree-ssa-threadedge.c b/gcc/tree-ssa-threadedge.c
index 707c8df3ec5..514ffd0a1b6 100644
--- a/gcc/tree-ssa-threadedge.c
+++ b/gcc/tree-ssa-threadedge.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "basic-block.h"
#include "cfgloop.h"
-#include "output.h"
#include "function.h"
#include "timevar.h"
#include "tree-dump.h"
diff --git a/gcc/tree-ssa-threadupdate.c b/gcc/tree-ssa-threadupdate.c
index 018092a7a3a..65be1b926a6 100644
--- a/gcc/tree-ssa-threadupdate.c
+++ b/gcc/tree-ssa-threadupdate.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "tree-flow.h"
#include "tree-dump.h"
diff --git a/gcc/tree-ssa-uncprop.c b/gcc/tree-ssa-uncprop.c
index 6f603ffc895..f74bad6b8e6 100644
--- a/gcc/tree-ssa-uncprop.c
+++ b/gcc/tree-ssa-uncprop.c
@@ -26,7 +26,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "tm_p.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "timevar.h"
#include "tree-dump.h"
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index f1ec31527c2..109578fa555 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -28,7 +28,6 @@ along with GCC; see the file COPYING3. If not see
#include "tm_p.h"
#include "langhooks.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "gimple-pretty-print.h"
#include "bitmap.h"
@@ -1756,7 +1755,7 @@ normalize_preds (VEC(use_pred_info_t, heap) **preds, size_t *n)
/* Computes the predicates that guard the use and checks
if the incoming paths that have empty (or possibly
- empty) defintion can be pruned/filtered. The function returns
+ empty) definition can be pruned/filtered. The function returns
true if it can be determined that the use of PHI's def in
USE_STMT is guarded with a predicate set not overlapping with
predicate sets of all runtime paths that do not have a definition.
@@ -1764,7 +1763,7 @@ normalize_preds (VEC(use_pred_info_t, heap) **preds, size_t *n)
the bb of the use (for phi operand use, the bb is not the bb of
the phi stmt, but the src bb of the operand edge). UNINIT_OPNDS
is a bit vector. If an operand of PHI is uninitialized, the
- correponding bit in the vector is 1. VISIED_PHIS is a pointer
+ corresponding bit in the vector is 1. VISIED_PHIS is a pointer
set of phis being visted. */
static bool
diff --git a/gcc/tree-ssa.c b/gcc/tree-ssa.c
index 2655d26e5e2..d545ffd21d2 100644
--- a/gcc/tree-ssa.c
+++ b/gcc/tree-ssa.c
@@ -29,7 +29,6 @@ along with GCC; see the file COPYING3. If not see
#include "ggc.h"
#include "langhooks.h"
#include "basic-block.h"
-#include "output.h"
#include "function.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
diff --git a/gcc/tree-ssanames.c b/gcc/tree-ssanames.c
index 64455af9604..ac63bc671eb 100644
--- a/gcc/tree-ssanames.c
+++ b/gcc/tree-ssanames.c
@@ -281,7 +281,7 @@ set_ptr_info_alignment (struct ptr_info_def *pi, unsigned int align,
pi->misalign = misalign;
}
-/* If pointer decribed by PI has known alignment, increase its known
+/* If pointer described by PI has known alignment, increase its known
misalignment by INCREMENT modulo its current alignment. */
void
diff --git a/gcc/tree-vect-data-refs.c b/gcc/tree-vect-data-refs.c
index a5ed0533db6..e34f41a3f1f 100644
--- a/gcc/tree-vect-data-refs.c
+++ b/gcc/tree-vect-data-refs.c
@@ -2972,10 +2972,6 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
return false;
}
- base = unshare_expr (DR_BASE_ADDRESS (dr));
- offset = unshare_expr (DR_OFFSET (dr));
- init = unshare_expr (DR_INIT (dr));
-
if (stmt_can_throw_internal (stmt))
{
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
@@ -2997,6 +2993,32 @@ vect_analyze_data_refs (loop_vec_info loop_vinfo,
return false;
}
+ if (TREE_CODE (DR_REF (dr)) == COMPONENT_REF
+ && DECL_BIT_FIELD (TREE_OPERAND (DR_REF (dr), 1)))
+ {
+ if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
+ {
+ fprintf (vect_dump, "not vectorized: statement is bitfield "
+ "access ");
+ print_gimple_stmt (vect_dump, stmt, 0, TDF_SLIM);
+ }
+
+ if (bb_vinfo)
+ {
+ STMT_VINFO_VECTORIZABLE (stmt_info) = false;
+ stop_bb_analysis = true;
+ continue;
+ }
+
+ if (gather)
+ free_data_ref (dr);
+ return false;
+ }
+
+ base = unshare_expr (DR_BASE_ADDRESS (dr));
+ offset = unshare_expr (DR_OFFSET (dr));
+ init = unshare_expr (DR_INIT (dr));
+
if (is_gimple_call (stmt))
{
if (vect_print_dump_info (REPORT_UNVECTORIZED_LOCATIONS))
diff --git a/gcc/tree-vect-generic.c b/gcc/tree-vect-generic.c
index a865fec5d81..10e194fcf1e 100644
--- a/gcc/tree-vect-generic.c
+++ b/gcc/tree-vect-generic.c
@@ -508,7 +508,7 @@ type_for_widest_vector_mode (tree type, optab op)
returns either the element itself, either BIT_FIELD_REF, or an
ARRAY_REF expression.
- GSI is requred to insert temporary variables while building a
+ GSI is required to insert temporary variables while building a
refernece to the element of the vector VECT.
PTMPVEC is a pointer to the temporary variable for caching
diff --git a/gcc/tree-vect-loop-manip.c b/gcc/tree-vect-loop-manip.c
index f0bb2416cbf..810c17cf347 100644
--- a/gcc/tree-vect-loop-manip.c
+++ b/gcc/tree-vect-loop-manip.c
@@ -32,7 +32,7 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-dump.h"
#include "cfgloop.h"
-#include "cfglayout.h"
+#include "cfglayout.h" /* for can_copy_bbs_p and copy_bbs */
#include "diagnostic-core.h"
#include "tree-scalar-evolution.h"
#include "tree-vectorizer.h"
diff --git a/gcc/tree-vect-loop.c b/gcc/tree-vect-loop.c
index 305ea7ea5a8..ea48b4ba514 100644
--- a/gcc/tree-vect-loop.c
+++ b/gcc/tree-vect-loop.c
@@ -32,7 +32,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-dump.h"
#include "cfgloop.h"
-#include "cfglayout.h"
#include "expr.h"
#include "recog.h"
#include "optabs.h"
diff --git a/gcc/tree-vect-slp.c b/gcc/tree-vect-slp.c
index 4690a4e9211..0692d0b7007 100644
--- a/gcc/tree-vect-slp.c
+++ b/gcc/tree-vect-slp.c
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-dump.h"
#include "cfgloop.h"
-#include "cfglayout.h"
#include "expr.h"
#include "recog.h"
#include "optabs.h"
@@ -1291,7 +1290,7 @@ vect_supported_load_permutation_p (slp_instance slp_instn, int group_size,
FORNOW: not supported in loop SLP because of realignment compications. */
bb_vinfo = STMT_VINFO_BB_VINFO (vinfo_for_stmt (stmt));
bad_permutation = false;
- /* Check that for every node in the instance teh loads form a subchain. */
+ /* Check that for every node in the instance the loads form a subchain. */
if (bb_vinfo)
{
FOR_EACH_VEC_ELT (slp_tree, SLP_INSTANCE_LOADS (slp_instn), i, node)
diff --git a/gcc/tree-vect-stmts.c b/gcc/tree-vect-stmts.c
index 98e5d4594ec..0aa42577c09 100644
--- a/gcc/tree-vect-stmts.c
+++ b/gcc/tree-vect-stmts.c
@@ -33,7 +33,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-dump.h"
#include "cfgloop.h"
-#include "cfglayout.h"
#include "expr.h"
#include "recog.h"
#include "optabs.h"
diff --git a/gcc/tree-vectorizer.c b/gcc/tree-vectorizer.c
index 7df31f7c9d2..2522e02259d 100644
--- a/gcc/tree-vectorizer.c
+++ b/gcc/tree-vectorizer.c
@@ -65,7 +65,6 @@ along with GCC; see the file COPYING3. If not see
#include "tree-flow.h"
#include "tree-dump.h"
#include "cfgloop.h"
-#include "cfglayout.h"
#include "tree-vectorizer.h"
#include "tree-pass.h"
#include "timevar.h"
diff --git a/gcc/tree.c b/gcc/tree.c
index e5c19bccabf..d3fa39ea9e0 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -3057,7 +3057,7 @@ push_without_duplicates (tree exp, VEC (tree, heap) **queue)
VEC_safe_push (tree, heap, *queue, exp);
}
-/* Given a tree EXP, find all occurences of references to fields
+/* Given a tree EXP, find all occurrences of references to fields
in a PLACEHOLDER_EXPR and place them in vector REFS without
duplicates. Also record VAR_DECLs and CONST_DECLs. Note that
we assume here that EXP contains only arithmetic expressions
diff --git a/gcc/tree.h b/gcc/tree.h
index 5f2204b8e06..5645fbc0d9c 100644
--- a/gcc/tree.h
+++ b/gcc/tree.h
@@ -4700,7 +4700,7 @@ typedef struct record_layout_info_s
/* The alignment of the record so far, ignoring #pragma pack and
__attribute__ ((packed)), in bits. */
unsigned int unpacked_align;
- /* The previous field layed out. */
+ /* The previous field laid out. */
tree prev_field;
/* The static variables (i.e., class variables, as opposed to
instance variables) encountered in T. */
@@ -4933,7 +4933,7 @@ extern bool contains_placeholder_p (const_tree);
extern bool type_contains_placeholder_p (tree);
-/* Given a tree EXP, find all occurences of references to fields
+/* Given a tree EXP, find all occurrences of references to fields
in a PLACEHOLDER_EXPR and place them in vector REFS without
duplicates. Also record VAR_DECLs and CONST_DECLs. Note that
we assume here that EXP contains only arithmetic expressions
@@ -5658,10 +5658,6 @@ extern tree decl_attributes (tree *, tree, int);
extern void apply_tm_attr (tree, tree);
-/* In integrate.c */
-extern void set_decl_abstract_flags (tree, int);
-extern void set_decl_origin_self (tree);
-
/* In stor-layout.c */
extern void set_min_and_max_values_for_integral_type (tree, int, bool);
extern void fixup_signed_type (tree);
@@ -5682,6 +5678,8 @@ extern void set_user_assembler_name (tree, const char *);
extern void process_pending_assemble_externals (void);
extern bool decl_replaceable_p (tree);
extern bool decl_binds_to_current_def_p (tree);
+extern enum tls_model decl_default_tls_model (const_tree);
+
/* In stmt.c */
extern void expand_computed_goto (tree);
extern bool parse_output_constraint (const char **, int, int, int,
@@ -5693,7 +5691,6 @@ extern tree resolve_asm_operand_names (tree, tree, tree, tree);
extern bool expand_switch_using_bit_tests_p (tree, tree, unsigned int,
unsigned int);
extern void expand_case (gimple);
-extern void expand_decl (tree);
#ifdef HARD_CONST
/* Silly ifdef to avoid having all includers depend on hard-reg-set.h. */
extern tree tree_overlaps_hard_reg_set (tree, HARD_REG_SET *);
diff --git a/gcc/value-prof.c b/gcc/value-prof.c
index 10a5319d3ec..dabe4195100 100644
--- a/gcc/value-prof.c
+++ b/gcc/value-prof.c
@@ -27,7 +27,6 @@ along with GCC; see the file COPYING3. If not see
#include "hard-reg-set.h"
#include "basic-block.h"
#include "value-prof.h"
-#include "output.h"
#include "flags.h"
#include "insn-config.h"
#include "recog.h"
diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
index 69e6847d022..07cabe79305 100644
--- a/gcc/var-tracking.c
+++ b/gcc/var-tracking.c
@@ -96,7 +96,6 @@
#include "hard-reg-set.h"
#include "basic-block.h"
#include "flags.h"
-#include "output.h"
#include "insn-config.h"
#include "reload.h"
#include "sbitmap.h"
diff --git a/gcc/varasm.c b/gcc/varasm.c
index 098421518b2..2428686b9fe 100644
--- a/gcc/varasm.c
+++ b/gcc/varasm.c
@@ -50,9 +50,6 @@ along with GCC; see the file COPYING3. If not see
#include "targhooks.h"
#include "tree-mudflap.h"
#include "cgraph.h"
-#include "cfglayout.h"
-#include "basic-block.h"
-#include "tree-iterator.h"
#include "pointer-set.h"
#ifdef XCOFF_DEBUGGING_INFO
@@ -546,7 +543,7 @@ default_function_section (tree decl, enum node_frequency freq,
return NULL;
/* Startup code should go to startup subsection unless it is
unlikely executed (this happens especially with function splitting
- where we can split away unnecesary parts of static constructors. */
+ where we can split away unnecessary parts of static constructors. */
if (startup && freq != NODE_FREQUENCY_UNLIKELY_EXECUTED)
return get_named_text_section (decl, ".text.startup", NULL);
@@ -1374,25 +1371,6 @@ assemble_asm (tree string)
fprintf (asm_out_file, "\t%s\n", TREE_STRING_POINTER (string));
}
-/* Record an element in the table of global destructors. SYMBOL is
- a SYMBOL_REF of the function to be called; PRIORITY is a number
- between 0 and MAX_INIT_PRIORITY. */
-
-void
-default_stabs_asm_out_destructor (rtx symbol ATTRIBUTE_UNUSED,
- int priority ATTRIBUTE_UNUSED)
-{
-#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
- /* Tell GNU LD that this is part of the static destructor set.
- This will work for any system that uses stabs, most usefully
- aout systems. */
- dbxout_begin_simple_stabs ("___DTOR_LIST__", 22 /* N_SETT */);
- dbxout_stab_value_label (XSTR (symbol, 0));
-#else
- sorry ("global destructors not supported on this target");
-#endif
-}
-
/* Write the address of the entity given by SYMBOL to SEC. */
void
assemble_addr_to_section (rtx symbol, section *sec)
@@ -1442,23 +1420,6 @@ default_dtor_section_asm_out_destructor (rtx symbol,
}
#endif
-/* Likewise for global constructors. */
-
-void
-default_stabs_asm_out_constructor (rtx symbol ATTRIBUTE_UNUSED,
- int priority ATTRIBUTE_UNUSED)
-{
-#if defined DBX_DEBUGGING_INFO || defined XCOFF_DEBUGGING_INFO
- /* Tell GNU LD that this is part of the static destructor set.
- This will work for any system that uses stabs, most usefully
- aout systems. */
- dbxout_begin_simple_stabs ("___CTOR_LIST__", 22 /* N_SETT */);
- dbxout_stab_value_label (XSTR (symbol, 0));
-#else
- sorry ("global constructors not supported on this target");
-#endif
-}
-
void
default_named_section_asm_out_constructor (rtx symbol, int priority)
{
diff --git a/gcc/varpool.c b/gcc/varpool.c
index 487413ded6d..b0063c16328 100644
--- a/gcc/varpool.c
+++ b/gcc/varpool.c
@@ -259,7 +259,7 @@ varpool_analyze_node (struct varpool_node *node)
node->analyzed = true;
}
-/* Assemble thunks and aliases asociated to NODE. */
+/* Assemble thunks and aliases associated to NODE. */
static void
assemble_aliases (struct varpool_node *node)
@@ -449,7 +449,7 @@ add_new_static_var (tree type)
tree new_decl;
struct varpool_node *new_node;
- new_decl = create_tmp_var (type, NULL);
+ new_decl = create_tmp_var_raw (type, NULL);
DECL_NAME (new_decl) = create_tmp_var_name (NULL);
TREE_READONLY (new_decl) = 0;
TREE_STATIC (new_decl) = 1;
@@ -508,7 +508,7 @@ varpool_extra_name_alias (tree alias, tree decl)
return alias_node;
}
-/* Call calback on NODE and aliases asociated to NODE.
+/* Call calback on NODE and aliases associated to NODE.
When INCLUDE_OVERWRITABLE is false, overwritable aliases and thunks are
skipped. */
diff --git a/gcc/web.c b/gcc/web.c
index 9044fc68d04..4394731ca9a 100644
--- a/gcc/web.c
+++ b/gcc/web.c
@@ -45,7 +45,6 @@ along with GCC; see the file COPYING3. If not see
#include "flags.h"
#include "obstack.h"
#include "basic-block.h"
-#include "output.h"
#include "df.h"
#include "function.h"
#include "insn-config.h"