OSDN Git Service

Specify isa(s) when doing ifield, operand, insn lookups.
[pf3gnuchains/pf3gnuchains4x.git] / cgen / ChangeLog
index 83c5d79..c3f5b86 100644 (file)
+2009-11-02  Doug Evans  <dje@sebabeach.org>
+
+       Specify isa(s) when doing ifield, operand, insn lookups.
+       ACU = all callers updated.
+       * attr.scm (/attr-eval): Call rtx-value instead of rtx-eval-with-estate.
+       * enum.scm (define-full-insn-enum): Pass isa-name-list to
+       current-ifld-lookup.
+       * html.scm (get-insn-properties): Pass isa-name-list to
+       current-op-lookup.
+       * ifield.scm (/ifld-parse-follows): New arg isas, ACU.
+       * insn.scm (/parse-insn-format-symbol): New arg isa-name-list, ACU.
+       (/parse-insn-format-list, /parse-insn-iformat-iflds): Ditto.
+       (/parse-insn-format, syntax-break-out): Ditto.
+       * mach.scm (obj-filter-by-isa): New function.
+       (current-ifld-lookup): New optional arg maybe-isa-name-list.
+       (/ifld-already-defined?, /op-already-defined?): Simplify.
+       (current-op-lookup): New optional arg maybe-isa-name-list.
+       (current-insn-lookup): New arg isa-name-list, ACU.
+       (/insn-already-defined?, /minsn-already-defined?): Simplify.
+       (current-minsn-lookup): New arg isa-name-list, ACU.
+       * minsn.scm (/minsn-compute-iflds): Pass isa-name-list to
+       current-op-lookup.
+       * opc-itab.scm (compute-syntax): New arg isa-name-list, ACU.
+       (gen-syntax-entry): Ditto.
+       * operand.scm (/operand-parse): Pass isa-name-list to
+       current-ifld-lookup.
+       (/derived-parse-encoding): New arg isa-name-list, ACU.
+       (/derived-parse-ifield-assertion): Ditto.
+       (/derived-operand-parse): Pass isa-name-list to current-op-lookup.
+       (/anyof-parse-choice): Ditto.
+       (anyof-satisfies-assertions?): Pass context to rtx-solve.
+       (/anyof-merge-syntax): New arg container, ACU.
+       (operand-builtin!): Add pc to all isas.
+       * rtl-c.scm (estate-make-for-rtl-c): Delete arg extra-vars-alist, ACU.
+       (estate-make-for-rtl-c++, rtl-c-expr-parsed): Ditto.
+       (rtl-c-parsed, rtl-c++-parsed): Ditto.
+       (rtl-c): New arg isa-name-list, ACU.
+       (rtl-c-expr, rtl-c++): Ditto.
+       (closure): New arg isa-name-list, ACU.
+       * rtl-traverse.scm (/make-cstate): New arg isa-name-list, ACU.
+       (/cstate-isas): New function.
+       (/rtx-canon-symbol-list): New function.
+       (/rtx-canon-env-stack): Renamed from /rtx-canon-env, ACU.
+       updated.
+       (/rtx-make-canon-table): Rename ENV to ENVSTACK, new entry SYMBOLLIST.
+       (/rtx-canon-rtx-operand): Pass isa list to current-op-lookup.
+       (/rtx-canon-rtx-ref, /rtx-canon): Ditto.
+       (rtx-canonicalize): New arg isa-name-list, ACU.
+       (rtx-canonicalize-stmt): Delete.
+       (tstate-make): New arg isas, ACU.
+       (tstate-isas, tstate--set-isas!): New functions.
+       (tstate-env-stack): Renamed from tstate-env, ACU.
+       (tstate-set-env-stack!): Renamed from tstate-set-env!, ACU.
+       (tstate-make-closure): Renamed from tstate-new-env, new arg
+       isa-name-list, ACU.
+       (/rtx-traverse-env): Delete.
+       (/rtx-make-traverser-table): Rename ENV to ENVSTACK, new entry
+       SUMBOLLIST.
+       (/rtx-traverse): Include conditional flag in dump output.
+       Update isa,envstack for closures.  Pass isa list to current-op-lookup.
+       (<eval-state>): New member isas.  Rename env to env-stack.
+       (<eval-state> vmake!): Handle #:isas.  #:env renamed to #:env-stack.
+       (<eval-state>): New getter/setter for isas.  Rename env getter/setter
+       to env-stack.
+       (estate-make-for-eval): Provide #:isas.
+       (estate-make-closure): Renamed from estate-new-env.  New arg
+       isa-name-list, ACU.
+       * rtl-xform.scm (/rtx-simplify-expr-fn): Handle closures.
+       (/rtx-trim-args): ENV renamed to ENVSTACK.  Ad ITERATION, SYMBOLLIST.
+       (/rtx-trim-for-doc): Handle closures.
+       * rtl.scm (/rtx-valid-types): Rename ENV to ENVSTACK.  Add ITERATION,
+       SYMBOLLIST.
+       (rtx-env-var-list): Delete.
+       (rtx-env-make): Handle already-compiled environments.
+       (rtx-var-alist-to-env): New function.
+       (rtx-var-alist-to-closure-env-stack, rtx-make-env-stack): New functions.
+       (rtx-env-stack-dump): Renamed from rtx-env-dump, ACU.
+       (rtx-operand-obj): New arg isa-name-list, ACU.
+       (rtx-closure-isas, rtx-closure-env-stack, rtx-closure-expr): New
+       functions.
+       * rtx-funcs.scm (closure): New arg isa-name-list, reorder args, ACU.
+       * sem-frags.scm (<sfrag>): Delete member compiled-semantics.
+       (/frag-compute-desired-frags): Minor simplification.
+       (/frag-pick-best): Ditto.
+       * sid-cpu.scm (gen-semantic-code): Require canonical rtl.
+       (/gen-sfrag-code): Update.
+       * sim-cpu.scm (gen-semantic-code): Require canonical rtl.
+       * utils-cgen.scm (sanitize): New arg isa-name-list, ACU.
+       * utils.scm (non-null-intersection?): New function.
+
+       * gen-all (do_src): Manually run cgen-all for sid.
+
+2009-11-01  Doug Evans  <dje@sebabeach.org>
+
+       * gen-all: New file.
+
+       * rtl-traverse.scm (/rtx-canon): Issue better error message for
+       invalid rtx function names.
+
+2009-10-28  Doug Evans  <dje@sebabeach.org>
+
+       * cos.scm (object-assign!): New function.
+       * mode.scm (/mode-set-word-params!): Call it.
+
+2009-10-25  Doug Evans  <dje@sebabeach.org>
+
+       Record bitset attributes internally as a list.
+       Record rtx attribute values internally as ((rtx-expr)).
+       * attr.scm (bitset-attr?): Delete, unused.
+       (<bitset-attribute> parse-value): Rewrite.
+       (/attr-parse): Rewrite bitset default value processing.
+       (/attr-read): Pick out values of scalar attributes to distinguish
+       them from bitset values which are a list.
+       Fix spelling errors for processing of default values.
+       Handle string attributes.
+       (bitset-attr->list): Delete, all callers updated.
+       (/bitset-attr->charmask): Renamed from bitset-attr->charmask.
+       All callers updated.
+       (atlist-source-form): Rewrite.
+       * hardware.scm (<hardware-base> 'get-isas): Update recognition
+       of all isas.
+       (hardware-builtin!): Update spec of ISA attribute, (ISA foo,bar)
+       -> (ISA foo bar).
+       * intrinsics.scm (target:belongs-to-group?): Update, bitset attribute
+       values are now lists.
+       * mach.scm (def-isa-attr!): Update, bitset attribute values,
+       including the default, are now lists.
+       (all-isas-attr-value): Result is now a list.
+       * doc/rtl.texi: Clean up pass over attribute docs.
+
+       Change internal representation of rtx attribute values.
+       * attr.scm (/attr-val-is-rtx?): New function.
+       (attr-value): Call it.
+       (atlist-attr-value-no-default, attr-lookup-default): Ditto.
+       (/attr-parse): Use /attr-val-is-rtx? to detect rtx values.
+       Disallow rtx values for bitset attributes.
+       (/attr-read): Record rtx in default value as ((rtx-expr)).
+       (/attr-eval): Update.
+
+2009-10-24  Doug Evans  <dje@sebabeach.org>
+
+       * gen-all-doc: Add sh.cpu.
+       * gen-all-desc: Use cpu/sh.cpu instead of ../cpu/sh.cpu
+       (until ../cpu/sh.cpu is updated and cpu/sh.cpu is deleted).
+
+       * sid-cpu.scm (/gen-sem-case): Tweaking debugging printf.
+       (/gen-sfrag-case): Ditto.
+       * sim-cpu.scm (/gen-sem-case): Ditto.
+
+       * doc/rtl.texi: Add note that different ifields, operands, insns,
+       and minsns may occur with the same name in different isas.
+       Add note on the canonical form of rtl expressions.
+
+2009-10-23  Doug Evans  <dje@sebabeach.org>
+
+       * desc-cpu.scm (/gen-hash-defines): Remove #include of cgen-bitset.h.
+       * sid-cpu.scm (cgen-desc.h): Update location of cgen's bitset.h.
+
+       * decode.scm: Tweak various comments.
+       (/opcode-slots): Add FIXME.
+       (/build-decode-table-guts): Add assert.
+       * utils-sim.scm (/gen-set-itype-and-extract): New function.
+       (/gen-bracketed-set-itype-and-extract): New function.
+       (/gen-decode-default-entry): Rewrite.
+       (/table-guts-to-mask, /all-opcode-bits-used?): New functions.
+       (/gen-decode-insn-entry): New arg table-guts-thus-far, all callers
+       updated.  Don't unnecessarily emit check for whether all opcode bits
+       have been examined.
+       (/gen-decode-expr-set-itype): Delete.
+       (/gen-decode-expr-entry): Update.
+       (/gen-decode-table-entry): New arg table-guts-thus-far, all callers
+       updated.  Keep track of decoder tables used thus far.
+       (/gen-decoder-switch): Ditto.
+       * utils.scm (word-bit-value): New function.
+
+2009-10-14  Doug Evans  <dje@sebabeach.org>
+
+       * ifield.scm (<ifield>, value): Provide default initial value.
+       (ifield-encode-mode): Delete
+       (ifield-decode-mode): Delete duplicate definition.
+       (<derived-ifield>, 'make!): Initialize members encode, decode.
+       * opcode.scm (<ifield>, 'gen-insert): Use ifld-decode-mode instead of
+       ifld-encode-mode.
+       (<multi-ifield>, 'gen-insert): Ditto.
+       
+2009-10-05  Dave Korn  <dave.korn.cygwin@googlemail.com>
+
+       * sim-model.scm (@cpu@_prepare_run): Use @prefix@, not @cpu@,
+       for @foo@_init_idesc_table.
+
+2009-09-30  Doug Evans  <dje@sebabeach.org>
+
+       * doc/intro.texi: Mention SID.
+       * doc/sim.texi: Ditto.
+       * doc/porting.text (Doing a simulator port): Add some text.
+
+2009-09-27  Doug Evans  <dje@sebabeach.org>
+
+       * cos.scm (/class-table): New global.
+       (/class-uid, /class-set-uid!): New functions.
+       (/class-parent-name): Renamed from /class-parents.
+       (/class-make!): Change parents arg to parent-name, all callers updated.
+       Assign uid to class.
+       (/class-lookup-uid): New function.
+       (/class-parent-classes): Rewrite.
+       (/class-mi?): Delete.
+       (/class-desc-mi?, /class-desc-offset-case, /class-desc-offset-case):
+       Delete.
+       (/class-desc-offset, /class-desc-child, /class-desc-parents): Update.
+       (/class-compute-class-desc, class-desc-dump): Update.
+       (/object-make!): Update.
+       (/object-make-with-values!): Delete arg class-desc, all callers
+       updated.
+       (/object-copy): Delete arg top?, all callers updated.
+       (/object-specialize): Delete.
+       (/object-elements, /object-top-class): Delete.
+       (/object-class-name, /object-class-desc): Update.
+       (/object-class-uid): New function.
+       (/object-elm-get, /object-elm-set!, object?, /class-check-init!,
+       class-make, /class-subclass? /class-lookup-element,
+       Update.
+       (/elm-delta, elm-list): Delete.
+       (/elm-make-method-getter, elm-get, elm-xget): Update.
+       (/elm-make-method-setter, elm-set!, elm-xset!): Update.
+       (elm-make-getter, elm-make-setter): Update.
+       (/method-lookup-next): Update.
+       (send): Don't specialize class passed to method.
+       (send-next): New arg class-name, all callers updated.
+       (/class-parent, /class-parent-via-path, object-parent): Delete.
+       (class-cons-parent!, class-append-parent!): Delete.
+       (object-reset!): Init /class-table.
+
+       * cos.scm (/object-debug-classes): Delete.
+       (/object-debug-elements, /object-debug-methods): Delete.
+
+       * cos.scm (/method-lookup): Delete arg virtual?, all callers updated.
+       (method-proc): Delete.
+       (method-make-virtual!, method-make-virtual-forward!): Delete.
+       * ifield.scm (<ifield> field-start): Update.
+       (<ifield> field-length, pretty-print): Update.
+       (<multi-ifield> field-length, field-start, pretty-print): Update.
+       * sid-cpu.scm (/gen-hardware-struct): Use gen-defn instead of gen-decl.
+       * sid.scm (<scalar> gen-sym-defn): Renamed from gen-sym-decl.
+       (<array> gen-sym-defn): Ditto.
+       (<hardware-base> gen-defn): Renamed from gen-defn.
+       (<hw-register> gen-type): Update.
+       (<hw-register> gen-defn): Renamed from gen-sym-decl, rewrite.
+       (<hw-memory>, <hw-address>, <hw-iaddress> gen-type): Update.
+       (<hw-memory>, <hw-address> gen-defn): Renamed from gen-sym-decl.
+       (<hw-immediate> gen-type): Update.
+       (<hw-immediate> gen-defn): Renamed from gen-sym-decl, rewrite.
+       * sim-cpu.scm (/gen-hardware-struct): Use gen-defn instead of gen-decl.
+       * sim.scm (<scalar> gen-sym-defn): Renamed from gen-sym-decl.
+       (<array> gen-sym-defn): Ditto.
+       (<hardware-base> gen-defn): Renamed from gen-defn.
+       (<hw-register> gen-type): Update.
+       (<hw-register> gen-defn): Renamed from gen-sym-decl, rewrite.
+       (<hw-memory>, <hw-address>, <hw-iaddress> gen-type): Update.
+       (<hw-memory>, <hw-address> gen-defn): Renamed from gen-sym-decl.
+       (<hw-immediate> gen-type): Update.
+       (<hw-immediate> gen-defn): Renamed from gen-sym-decl, rewrite.
+
+2009-09-25  Doug Evans  <dje@sebabeach.org>
+
+       * operand.scm (/anyof-merge-setter): Handle set-quiet.
+       * rtl.scm (rtx-single-set?): Handle set-quiet.
+
+       * rtl-c.scm (estate-make-for-rtl-c): Delete args context, owner,
+       rtl-cover-fns?, macro?.  All callers updated.
+       (estate-make-for-normal-rtl-c): Delete, have all callers call
+       estate-make-for-rtl-c directly.
+       (rtl-c-parsed): Pass #:outer-expr to estate-make-for-rtl-c.
+       (rtl-c, rtl-c-expr-parsed, rtl-c-expr, rtl-c++-parsed, rtl-c++): Ditto.
+
+       * rtl-c.scm (/par-replace-set-dest-expr-fn): New function,
+       replaces /par-replace-set-dests.
+       (/par-replace-set-src-expr-fn): New function, replaces
+       /par-replace-set-srcs.
+       (s-parallel): Rewrite.
+
+       * rtl.scm (rtx-pretty-strdump): New function.
+       * rtl-traverse.scm (/rtx-canon-error): Use it.
+       (<eval-state>): New member outer-expr.
+       (estate-error): Include outer expression in error message if present.
+
+2009-09-23  Doug Evans  <dje@sebabeach.org>
+
+       * xc16x.cpu (h-cr): New hardware.
+       (muls): Comment out parts that won't compile, add fixme.
+       (mulu, divl, divlu, jmpabs, jmpa-, jmprel, jbc, jnbs, callr): Ditto.
+       (scxti, scxtmg, scxtm, bclear, bclr18, bset19, bitset, bmov): Ditto.
+       (bmovn, band, bor, bxor, bcmp, bfldl, bfldh): Ditto.
+
+       Rewrite rtl processing to require it to be "canonicalized" first,
+       and write a full canonicalizer / expression checker.
+       Remove all appearances of DFLT in canonical rtl.
+       * attr.scm (/attr-eval atval owner): Call rtx-canonicalize,
+       then rtx-simplify.
+       * iformat.scm (ifmt-analyze) Use canonical semantics.
+       * insn (<insn>): New member canonical-semantics.
+       * mach.scm (<arch>): New member multi-insns-instantiated?.
+       (/instantiate-multi-insns!): New function.
+       (/canonicalize-insns!): New function.
+       (arch-analyze-insns!): Canonicalize insn semantics before processing
+       them.
+       * mode.scm (/mode-set-word-params!): New function.
+       (mode-void?): New function.
+       (mode-compatible?): VOID is compatible with VOID.
+       (/mode-word-sizes-defined?): New global.
+       (mode-set-word-modes!): Use/set it.
+       (mode-ensure-word-sizes-defined): Update.
+       (mode-builtin!): New builtin "modes" SYM, INSN, MACH.
+       Redo WI/UWI/AI/IAI handling.
+       (op:new-mode): No longer accept DFLT.
+       (<derived-operand> constructor): Ensure all fields are initialized.
+       (<anyof-operand> constructor): Ditto.
+       (/derived-parse-ifield-assertion): Delete arg `args'.
+       All callers updated.
+       * rtl-c.scm (<rtl-c-eval-state>): New member `for-insn?'.
+       (rtl-c): Call rtx-canonicalize instead of rtx-compile.
+       (rtl-c-expr, rtl-c++): Ditto.
+       (/rtl-c-get): Use mode of operand, not containing expression.
+       (rtl-c-set-quiet, rtl-c-set-trace): Remove DFLT support.
+       (/rtx-use-sem-fn?): Don't check for (insn? owner), check
+       estate-for-insn? instead.
+       (s-unop): Use mode of expression, not first operand.
+       (s-binop, s-binop-with-bit, s-shop, s-cmpop): Ditto.
+       (s-sequence): Remove DFLT support.
+       (ifield): Use mode of expression, not UINT.
+       (pc): Comment out, unused.
+       (int-attr): New rtx kind.
+       (attr): Deprecate.
+       (set, set-quiet): Pass src to rtl-c-set-{trace,quiet} for expansion.
+       * rtl-traverse.scm (/rtx-canon-debug?): New global.
+       (/make-cstate): New function.
+       (/cstate-context, /cstate-outer-expr): New functions.
+       (/rtx-canon-error): New function.
+       (/rtx-lookup-hw, /rtx-pick-mode, /rtx-pick-mode3, /rtx-pick-op-mode,
+       /rtx-get-last-cond-case-rtx): New functions.
+       (/rtx-canon-*): New functions.
+       (/rtx-canner-table, /rtx-operand-canoners): New globals.
+       (/rtx-make-canon-table, /rtx-special-expr-canoners): New functions.
+       (/rtx-option, /rtx-option-list?): Rewrite.
+       (rtx-munge-mode&options): Replaces /rtx-munge-mode&options.
+       Rewritten, all callers updated.
+       (/rtx-canon-expr, /rtx-canon): New functions.
+       (rtx-canonicalize): Move here from rtl-xform.scm and rewrite.
+       (rtx-canonicalize-stmt): New function.
+       (tstate-make): Remove arg `set?'.  All callers updated.
+       (tstate-new-set?): Delete.
+       (/rtx-traverse-options, /rtx-traverse-*mode): Delete,
+       moved to /rtx-canon-*.
+       (/rtx-traverse-normal-operand): New function.
+       (/rtx-traverse-rtx-list): Delete arg `mode', all callers updated.
+       (/rtx-traverse-rtx, /rtx-traverse-setrtx,, /rtx-traverse-testrtx,
+       /rtx-traverse-condrtx, /rtx-traverse-casertx, /rtx-traverse-locals,
+       /rtx-traverse-iteration, /rtx-traverse-env, /rtx-traverse-attrs):
+       Ditto.
+       (/rtx-traverse-symbol, /rtx-traverse-string, /rtx-traverse-number,
+       /rtx-traverse-symornum, /rtx-traverse-object): Delete.
+       (/rtx-make-traverser-table): Update.
+       (/rtx-traverse-operands): Remove mode processing, now done during
+       canonicalization.
+       (/rtx-traverse-expr): Delete arg `mode', all callers updated.
+       (/rtx-traverse): Ditto.
+       (rtx-init-traverser-tables!): New function.
+       * rtl-xform (/rtx-verify-no-dflt-modes-expr-fn): New function.
+       (rtx-verify-no-dflt-modes): New function.
+       (/rtx-simplify-expr-fn): Update, `arg' mode deleted.
+       (rtx-simplify-insn): Use insn-canonical-semantics.
+       (rtx-canonicalize): Moved to rtl-traverse.scm.
+       (/compile-expr-fn, rtx-compile): Delete.
+       (/rtx-trim-rtx-list): New function.
+       (/rtx-trim-for-doc): Handle set, if.
+       * rtl.scm (<rtx-func>): New members result-mode, matchexpr-index.
+       (/rtx-valid-mode-types): Update.
+       (/rtx-valid-matches): Update.
+       (/rtx-find-matchexpr-index): New function.
+       (rtx-lookup): Require rtx-kind to be the rtx name.
+       (def-rtx-node): New arg result-mode, all callers updated.
+       (def-rtx-syntax-node, def-rtx-operand-node): Ditto.
+       (rtx-lazy-sem-mode): Delete.
+       (/rtx-closure-make): New arg `mode', all callers updated.
+       (rtx-make-ifield, rtx-make-operand, rtx-make-local): Ditto.
+       (rtx-operand-obj): Rewrite.
+       (rtx-make-xop): New functions.
+       (/hw): Renamed from `hw', all callers updated.
+       Use the correct mode instead of DFLT for the index.
+       (rtl-builtin!): Call rtx-init-traversal-tables!.
+       (rtl-finish!): Update.
+       * rtx-funcs.scm (all rtx functions): New parameter: result-mode.
+       Update mode arg-type.
+       (pc): Comment out.
+       (int-attr): New rtx kind.
+       (attr): Deprecate.
+       * sem-frags.scm (/frag-hash-compute!): Update, mode arg deleted.
+       (/frag-cost-compute!): Ditto.
+       * semantics.scm (/build-operand!): Delete args op-name, op.
+       New arg op-expr.  All callers updated.
+       (/build-mem-operand!): Remove DFLT support.
+       (semantic-compile): Update process-expr!, mode arg deleted.
+       * sid-cpu.scm (gen-semantic-code): Specify #:for-insn? in
+       rtl-c++ calls.
+       (/gen-sem-case, /gen-sfrag-code): Ditto.
+       * sid.scm (/op-gen-set-trace1): Renamed from /op-gen-set-trace.
+       (/op-gen-set-trace): New function.  If not doing profiling, or using
+       the pbb engine, call /op-gen-set-quiet.
+       * sim-cpu.scm (gen-semantic-code): Specify #:for-insn? in rtl-c calls.
+       * utils-gen.scm (/gen-ifld-extract-base): Update call to rtl-c.
+       (/gen-ifld-extract-beyond, gen-multi-ifld-extract): Ditto.
+       * utils.scm (find-first-index): New function.
+       * doc/rtl.texi: Delete docs for `attr'.  Add `int-attr'.
+
+       * rtx-funcs.scm (eq,ne,lt,gt,le,ge,ltu,leu,gtu,geu): Change class
+       to COMPARE.
+       * sem-frags.scm (/frag-cost-compute!): Add COMPARE.
+
+2009-09-21  Doug Evans  <dje@sebabeach.org>
+
+       * rtl-c.scm (/rtl-c-build-table): Renamed from rtl-c-build-table.
+       All callers updated.  Add FIXME.
+       (all rtx functions): Rename local estate to *estate*.  It's an
+       artificial argument added to the rtx, so make it stand out.
+
+       * openrisc.cpu (or32 isa): Fix setup-semantics.
+
+       * rtl.scm (rtx-class-*?): Delete, unused.
+       (rtx-style-function?, rtx-style-operand?, rtx-style-macro?): Ditto.
+
+       * read.scm (/CGEN-RTL-VERSION): Initialize to #f.
+       (init-reader!): Set /CGEN-RTL-VERSION to default.
+
+       * read.scm (cpu-load): Print load parameters.
+
+       * dev.scm (load-doc): Set verbose-level to 2.
+
+2009-09-20  Doug Evans  <dje@sebabeach.org>
+
+       * rtl.scm (rtx-strdump): Use write instead of display.
+
+2009-09-17  Doug Evans  <dje@sebabeach.org>
+
+       * utils-cgen.scm (obj-csv-names): New function.
+       * utils-sim.scm (/sfmt-contents): Use it in logging message.
+
+2009-09-12  Doug Evans  <dje@sebabeach.org>
+
+       Clean up pass of mode handling.
+       Make use of mode name vs <mode> object more consistent and clear.
+       * hardware.scm (/keyword-read): Default mode to the mode name,
+       not the <mode> object.
+       (/hw-parse-indices): Parse mode name and pass mode object to
+       <hw-asm> constructor.
+       (/hw-parse-values): Ditto.
+       (<hw-register> parse!): Pass mode name to /hw-parse-indices
+       and /hw-parse-values.
+       (<hw-memory> parse!): Ditto.
+       (<hw-address> parse!): Ditto.
+       * mode.scm (/mode-table): New global, replaces mode-list.
+       Modes stored in hashtable instead of list.
+       (/mode-class-table): New global.
+       (mode-list-non-alias-values): Update.
+       (mode:eq?, mode-compatible?, mode:add!): Update.
+       (mode:lookup): Restrict arg to the mode's name.  All callers updated.
+       (mode-maybe-lookup): New function.
+       (mode-real-name): Restrict arg to a <mode> object.  All callers updated.
+       (mode-real-mode, mode-sem-mode, mode-bigger?): Ditto.
+       (mode-find, mode-set-word-modes!): Update
+       (mode-ensure-word-sizes-defined): Update.
+       (/sort-mode-classes!): New function.
+       (mode-builtin!): Update.  Sort mode classes here.
+       (mode-finish!): Sort mode classes here too.
+       * rtl-c.scm (/rtl-c-get): Restrict mode arg to a <mode> object.
+       All callers updated.
+       (rtl-c-set-quiet): Allow mode to be name of object.
+       (rtl-c-set-trace): Ditto.
+       * rtl-traverse.scm (rtl-eval-with-estate): Restrict mode arg to
+       <mode> object.  All callers updated.
+       * rtl.scm (rtx-sem-mode): Restrict arg to <mode> object.
+       (rtx-lazy-sem-mode): Ditto.
+       (<rtx-temp> make!): Assert mode arg is a <mode> object.
+       (rtx-env-make): Allow var-list modes to be name or object.
+       * sem-frags.scm (/frag-expr-assq-locals): New function.
+       (/frag-compute-locals!): Call it.
+       (/sfrag-create-cse-mapping): Renamed from sfrag-create-cse-mapping.
+       All callers updated.
+       * semantics.scm (/build-mem-operand!): Handle mode aliases.
+
+       * sim-test.scm (*): Symbols no longer can be passed to string-append.
+
+2009-09-10  Doug Evans  <dje@sebabeach.org>
+
+       * insn.scm (/parse-insn-format): New arg `verify?', all callers updated.
+       Improve error message for missing or too many bits.
+       (/insn-parse): Don't verify iformat for virtual insns.
+       
+       * sid-decode.scm (cgen-decode.cxx): Remove redundant call to
+       non-multi-insns.
+       * sid-model.scm (/gen-model-insn-fn-decls): Ditto.
+       (/gen-model-insn-fns, /gen-model-class-decls): Ditto.
+       * sid.scm (pbb-engine-insns): Ditto.
+       * sim-decode.scm (cgen-decode.c): Ditto.
+
+2009-09-09  Doug Evans  <dje@sebabeach.org>
+
+       * rtl-traverse.scm: Comment tweaks.
+       * rtl-xform.scm: Comment and reformatting tweaks.
+       * doc/rtl.texi: Add text to docs on ifield-assertions.
+
+       * insn.scm (/insn-parse): Canonicalize the ifield-assertion before
+       saving.
+
+       Add support for controlling warnings/errors.
+       Add tests for iformat description errors.
+       * dev.scm (cload): New option #:diag.
+       * read.scm (<reader>): New member verify-iformat?.
+       (/parse-diagnostic, parse-warning): New functions.
+       (parse-error): Guts moved to /parse-diagnostic.
+       (/set-diagnostic-options!): New function.
+       (cpu-load): New arg diagnostic-options, all callers updated.
+       Recognize -w diagnostic-option-list.
+       * ifield.scm (ifields-base-ifields): Move here from iformat.scm.
+       (ifld-simple-ifields, ifields-simple-ifields): New function.
+       * insn.scm (/parse-insn-format-iflds): New function.
+       (/parse-insn-format): Guts moved to /parse-insn-format-iflds.
+       New arg isa, all callers updated.  Do some basic validation of the
+       ifield list if requested.
+       * mach.scm (/sanity-check-insns): Improve error message text.
+       * doc/running.texi: Document -w option.
+       * doc/porting.texi: Document #:trace, #:diag options to cload.
+
+       * ifield.scm (/multi-ifield-parse): Initialize bitrange.
+
+       * dev.scm (*): Change default verbosity level to 2.
+
+       * ifield.scm (<ifield> pretty-print): New method.
+       (ifld-pretty-print): New function.
+       (<multi-ifield> pretty-print): New method.
+
+       * ifield.scm (<ifield> field-start): Delete word-len arg.
+       All callers updated.
+       (ifld-start): Ditto.
+       (<multi-ifield> field-start): Ditto.
+       * operand.scm (<hw-index> field-start): Ditto.
+
+       * ifield.scm (ifld-beyond-base?): Remove args base-bitsize,
+       total-bitsize.  All callers updated.
+       * insn.scm (<insn>): Rename member ifld-values to /insn-value.
+       New member /insn-base-value.
+       (insn-base-value): New function.
+       * mach.scm (/sanity-check-insns): New function.
+       (arch-analyze-insns!): Call it.
+
+2009-09-08  Doug Evans  <dje@sebabeach.org>
+
+       * iformat.scm (ifields-base-ifields): Simplify.
+       (compute-insn-length): Simplify, call ifields-base-ifields.
+       (compute-insn-base-mask): Ditto.
+       * ifield.scm (ifld-known-values): Ditto.
+       (ifld-base-ifields): Ditto.
+       * insn.scm (insn-value): Ditto.
+       * pgmr-tools.scm (pgmr-pretty-print-insn-format): Ditto.
+
+2009-09-08  DJ Delorie  <dj@redhat.com>
+
+       * cpu/mep.opc (mep_cgen_insn_supported_asm): Change the test to a
+       preprocessor macro, not an enum.
+
+2009-09-08  Doug Evans  <dje@sebabeach.org>
+
+       * rtl-c.scm (/rtl-c-get): Convert symbols to strings before passing
+       to string-append.
+       (*): Remove trailing ":" from error messages passed to estate-error.
+
+2009-09-07  Doug Evans  <dje@sebabeach.org>
+
+       * types.scm (<struct>): Delete.
+
+       * pmacros.scm (/pmacro-env-make): New argument `loc', all callers
+       updated.
+       (/pmacro-loc-error): New function.
+
+       * mach.scm (/isa-parse-decode-assist): New function.
+       (/isa-parse): Call it.
+
+       * decode.scm (/get-subopcode-value): New function.
+       (/opcode-slots): Call it.
+       (/fill-slot!): Add logging message.
+
+       * cos.scm (/object-error): Convert symbols to strings before passing
+       to string-append.
+
+       * read.scm (rtl-version-equal?): New function.
+       (rtl-version-at-least?, rtl-version-older?): New functions.
+
+       * *.scm: Use / to prefix "local" vars/fns, for r6rs compliance.
+       * pmacros.scm (/pmacro-builtin-splice): Refer to $unsplice for
+       rtl versions >= 0.9.
+       (pmacros-init!): Tweak to prepare for $<pmacro> for builtin pmacros.
+
+2009-09-03  Doug Evans  <dje@sebabeach.org>
+
+       * rtl.scm (rtx-pretty-name): Fix thinko, don't assume (car rtx)
+       is simple.
+
+2009-09-01  DJ Delorie  <dj@redhat.com>
+
+       * cpu/mep.opc (parse_signed16_range): Mark as potentially unused.
+       (parse_unsigned16_range): Likewise.
+       (mep_cgen_insn_supported_asm): Make BSR12 check dependent on VLIW
+       isa.
+
+2009-09-01  Doug Evans  <dje@sebabeach.org>
+
+       Pmacro .equals -> .equal?
+       * pmacros.scm (-pmacro-builtin-equal?): Renamed from
+       -pmacro-builtin-equals.  All callers updated.
+       (pmacros-init!): Rename .equals to .equal?.
+       * doc/pmacros.texi: Update.
+       * testsuite/pmacros-1.test: Update.
+
+       * doc/porting.texi: Work around texi2html bug where it doesn't
+       properly escape <> inside double-quotes inside @code.
+
+       * doc/porting.texi (Doing an opcodes port): Add step to specify
+       the .opc file.
+
+2009-08-29  Doug Evans  <dje@sebabeach.org>
+
+       * hardware.scm (-keyword-parse): Fix `enum-prefix' default for
+       rtl version 0.7.
+       * doc/rtl.texi: Improve docs on rtl 0.7 vs 0.8 differences.
+
+2009-08-27  Doug Evans  <dje@sebabeach.org>
+
+       Add do-count rtl function.
+       * rtl-c.scm (s-do-count): New function.
+       (do-count): New rtl handler.
+       * rtl-traverse.scm (-rtx-traverse-iteration): New function.
+       (-rtx-make-traverser-table): Add ITERATION.
+       * rtl.scm (rtx-make-iteration-limit-var): New function.
+       (rtx-env-make-iteration-locals): New function.
+       * rtx-funcs.scm (do-count): New rtl function.
+       * cpu/play.cpu: Add do-count-test insn.
+       * doc/rtl.texi: Add docs on do-count.
+
+2009-08-26  Doug Evans  <dje@sebabeach.org>
+
+       * read.scm (parse-error): Change error message output format
+       to match context-owner-error.
+       * rtl-c.scm (-rtl-c-get): Call estate-error instead of error.
+       (rtl-c-set-quiet, rtl-c-set-trace): Ditto.
+       (s-if, s-cond, -gen-non-vm-case-test): Ditto.
+       (operand): Call estate-error instead of context-error.
+       (local, delay): Ditto.
+       (ref, attr): Call estate-error instead of error.
+       * rtl-traverse.scm (tstate-error): New function.
+       (-rtx-traverse-error): Call tstate-error instead of context-error.
+       (-rtx-traverse-operands, -rtx-traverse): Ditto.
+       (estate-error): New function.
+       * rtl.scm (rtx-lvalue-mode-name): Handle locals.  Call estate-error
+       instead of error.
+       (e-if): Call estate-error instead of error.
+       * rtx-funcs.scm (error): Call estate-error instead of context-error.
+       (member): Ditto.
+       * utils-cgen.scm (context-error): New arg `intro', all callers updated.
+       Rewrite to call context-owner-error.
+       (context-owner-error): New function.
+
+       * ifield.scm (<ifield> constructor): New arg `location',
+       all callers updated.
+       * insn.scm (<insn> constructor): Ditto.
+       (<multi-insn> constructor): Ditto.
+       * minsn.scm (<macro-insn> constructor): Ditto.
+       * operand.scm (<operand> constructor): Ditto.
+       * utils-cgen.scm (builtin-location): New function.
+       (<source-ident>): Fix default value of member `location'.
+       (source-ident?): New function.
+
+       * rtl-traverse.scm (estate-new-env): Rename arg state -> estate.
+       (estate-push-env, estate-with-modifiers): Ditto.
+       (estate-deepen): New function.
+
+2009-08-25  Dave Korn  <dave.korn.cygwin@googlemail.com>
+
+       * sim-model.scm (-gen-mach-defns): Use @PREFIX@_INSN__MAX instead of
+       @CPU@_INSN__MAX.  Use @prefix@ instead of @cpu@ for engine_run
+       routines.
+
+2009-08-25  Doug Evans  <dje@sebabeach.org>
+
+       * doc/pmacros.texi (pmacro default argument values): Add text.
+
+2009-08-23  Doug Evans  <dje@sebabeach.org>
+
+       * hardware.scm (<keyword>): Rename member print-name -> enum-prefix.
+       Rename member prefix -> name-prefix.
+       (<keyword> getters): Update.
+       (-keyword-parse): Update.  Default enum-prefix to NAME-.
+       (-keyword-read): Update.  Don't compute default value for
+       enum-prefix here.
+       (define-keyword): Update.
+       (-hw-parse-keyword): Pass "UNUSED" for enum-prefix to -keyword-parse.
+       * read.scm (cgen-rtl-version): New function.
+       (-supported-rtl-versions): Add (0 8).
+       * desc-cpu.scm (-gen-hw-decl): Remove cruft.
+       * desc.scm (<keyword> gen-defn): prefix -> name-prefix.
+       * gas-test.scm (<keyword> test-data): prefix -> name-prefix.
+       * cpu/arm.cpu (gr-names, shift-type): Call define-rtl-version.
+       Update, print-name -> enum-prefix, make uppercase.
+       Remove unnecessary name-prefix spec.
+       * cpu/fr30.cpu (gr-names, cr-names, dr-names): Ditto.
+       * cpu/ip2k.cpu (register-names): Ditto.
+       * cpu/m68k.cpu (dr-names, ar-names): Ditto.
+       * cpu/sparc.cpu (gr-names): Ditto.
+       * cpu/xc16x.cpu (gr-names, ext-names,psw-names): Ditto.
+       (grb-names, conditioncode-names, extconditioncode-names): Ditto.
+       (grb8-names, r8-names, regmem8-names, regdiv8-names): Ditto.
+       (reg0-name, reg0-name1, regbmem8-names, memgr8-names): Ditto.
+       * cpu/ia32.cpu (gr8-names, gr16-names, gr-names): Call
+       define-rtl-version.  Update, print-name -> enum-prefix, make uppercase,
+       prefix -> name-prefix.
+       * cpu/sh64-compact.cpu (frc-names): Call define-rtl-version.
+       Update, print-name -> enum-prefix, make uppercase.
+       (drc-names, xf-names): Ditto.
+       * cpu/xstormy16.cpu (gr-names, gr-Rb-names): Ditto.
+       * doc/rtl.texi (Keywords): New section.
+       (hardware indices): Update text.
+       (rtl versions): Add 0.8.
+
+       Add define-rtl-version.
+       * read.scm (-CGEN-RTL-VERSION): Renamed from -CGEN-LANG-VERSION.
+       (cgen-rtl-major, cgen-rtl-minor): Similarly renamed.
+       (cgen-lang-fixlevel): Delete.
+       (-supported-rtl-versions): New variable.
+       (-cmd-define-rtl-version): New function.
+       (init-reader!): New command define-rtl-version.
+       (-cgen): Add rtl version to --version output.
+       * doc/rtl.texi: Document rtl version support.
+       * cpu/play.cpu: Add define-rtl-version.
+
+2009-08-22  Doug Evans  <dje@sebabeach.org>
+
+       * Makefile.am (OPTIONS): Define.
+       (desc): Just generate <arch>-desc.[ch] files.
+       * Makefile.in: Regenerate.
+       * desc-cpu.scm (cgen-desc.h): Skip call to gen-extra-cpu.h if there's
+       no .opc file.
+       (cgen-desc.c): Similarly.
+       * gen-all-desc: New file.
+       * opcodes.scm (opc-file-provided?): New function.
+
+       * mach.scm (current-*-add!): Update calls to parse-error.
+       * operand.scm (op:new-mode): Update call to parse-error.
+       * utils-cgen.scm (make-obj-context): New function.
+
+       * NEWS: Copy over entries from 1.1 branch.
+
+2009-08-20  Doug Evans  <dje@sebabeach.org>
+
+       * gas-test.scm (<keyword> test-data): Catch invalid requests,
+       flag a warning and compensate.
+       (<hw-address test-data): Tweak for readability.
+       (<hw-iaddress test-data): Ditto.
+       (cgen-build.sh): Convert symbols to strings before passing to
+       string-append.
+       (cgen-allinsn.exp): Ditto.
+
+       * doc/pmacros.texi (.splice): Add more text.
+
+2009-08-19  Doug Evans  <dje@sebabeach.org>
+
+       * configure.in (AM_INIT_AUTOMAKE): Change version to 1.1.50 to
+       distinguish from 1.1.
+       * configure: Regenerate.
+       * read.scm (-CGEN-VERSION): Update.
+       * doc/version.texi: Update.
+
+       New builtin .pmacro?.
+       * pmacros.scm (-pmacro-builtin-pmacro?): New function.
+       (pmacros-init!): Add .pmacro?.
+       * doc/pmacros.text: Document .pmacro?.
+       * testsuite/pmacros-1.test: Test .pmacro?.
+
+       * pmacros.scm (scan-list1): Reorganize tracing so that the tracing
+       of a pmacro begins before its arguments are evaluated, improves
+       readability.
+
+       * pmacros.scm (.sll, .srl, .sra): Fix thinko.
+       * testsuite/pmacros-1.test: Ditto.  Add better tests.
+
+       * doc/rtl.texi (Instructions): Improve docs of when ${...} is needed
+       in assembler syntax.
+       (Operands): Similarly.
+
+2009-08-18  Doug Evans  <dje@sebabeach.org>
+
+       * ifield.scm (ifld-encode-mode): Add FIXME.
+       * opcodes.scm (<ifield> gen-insert): Handle encode parameters with
+       modes.
+       (<ifield> gen-extract): Similarly.
+
+       * read.scm (parse-error): Handle #f for context-location.
+       * utils-cgen.scm (unspecified-location): Fix building of
+       single-location.
+
+       * doc/rtl.texi: Document how to write hex and boolean values.
+
+       * gas-test.scm (<hw-asm> test-data): Handle () values.
+       (<keyword> test-data): Convert symbols to strings before passing
+       to string-append.
+       (<hw-index> test-data): Enumerate all cases.  Emit correctly sized
+       result for scalars.
+
+       * operand.scm (hw-index-scalar): Set `name'.
+       (hw-index-anyof, hw-index-derived): Ditto.
+
+2009-08-17  Doug Evans  <dje@sebabeach.org>
+
+       * pmacros.scm (-pmacro-builtin-internal-test): New function.
+       (pmacros-init!): Add .internal-test.
+       * testsuite/test-utils.sh.in (post_process): Tweak FAIL output.
+       * testsuite/testsuite.cpu (internal-verify): New pmacro.
+       * doc/pmacros.text: Document .internal-test.
+
+       * utils-cgen.scm (parse-name): Handle (add 3) -> add3.
+       (parse-comment): Allow numbers.
+       * doc/porting.texi: Document that names and comments may be lists.
+
+       * insn.scm (-insn-parse): Fix typo.
+
+       Rename .eval -> .exec.  Add new .eval.
+       * pmacros.scm (-pmacro-built-exec): Renamed from -pmacro-builtin-eval.
+       (-pmacro-builtin-eval): New function.
+       (pmacros-init!): Add .exec.
+       * doc/pmacros.texi: Update, .exec -> .eval.  Document new .eval.
+       * testsuite/location-1.test: Update.
+       * testsuite/pmacros-1.test: Add test for .eval.
+
+2009-08-16  Doug Evans  <dje@sebabeach.org>
+
+       * doc/porting.texi: Remove support for Guile 1.4.
+
+       * read.scm (current-reader-location): Return unspecified location
+       if reader hasn't been initialized yet.
+
+2009-08-13  Doug Evans  <dje@sebabeach.org>
+
+       * dev.scm: Document tracing options.
+
+       * pmacros.scm (pmacro-dump): New function.
+       (check-pmacro): Tweak debugging output.
+       * doc/cgenint.texi: Mention pmacro-dump, pmacro-debug.
+       * doc/pmacros.texi (.splice): Use pmacro-dump instead of pmacro-expand.
+
+       Add .let* pmacro builtin.
+       * pmacros.scm (-pmacro-builtin-let*): New function.
+       (pmacros-init!): Add .let*.
+       * doc/pmacros.texi: Document .let*.
+       * testsuite/pmacros-1.test: Test .let*.
+
+2009-08-12  Doug Evans  <dje@sebabeach.org>
+
+       Clean up cpu file parsing, pass context consistently instead of the
+       old "errtxt" argument.
+       NOTE: ACU == "All Callers Updated".
+       * attr.scm (-parse-simple-attribute): Renamed from
+       parse-simple-attribute, ACU.
+       (-attr-parse): Change errtxt argument to context, ACU.
+       (-attr-read): Ditto.
+       (atlist-parse): Ditto.  Put context arg first.
+       (attr-parse): Use parse-error instead of context-error.
+       * enum.scm (parse-enum-vals): Change errtxt argument to context, ACU.
+       (-enum-parse-prefix, -enum-parse, -enum-read): Ditto.
+       * hardware.scm (-keyword-parse): Renamed from keyword-parse.
+       `context' arg is now a <context> object.  ACU.
+       (-keyword-read): `context' arg is now a <context> object.  ACU.
+       (-hw-parse-indices): Change errtxt argument to context, ACU.
+       (-hw-parse-values, -hw-parse-handlers): Ditto.
+       (-hw-parse-getter, -hw-parse-setter, -hw-parse, -hw-read): Ditto.
+       (-hw-validate-layout, -hw-create-getter-from-layout,
+       -hw-create-setter-from-layout): Ditto.
+       (<hw-register>:parse!, <hw-pc>:parse!): Ditto.
+       (<hw-memory>:parse!, <hw-immediate>:parse!): Ditto.
+       (<hw-address>:parse!): Ditto.
+       * ifield.scm (-ifield-parse, ifield-read): Ditto.
+       (-ifld-parse-follows, -ifld-parse-encode-decode): Ditto.
+       (-ifld-parse-encode, -ifld-parse-decode): Ditto.
+       (-multi-ifield-parse, -multi-ifield-read): Ditto.
+       * insn.scm (-insn-parse, -insn-read): Ditto.
+       (parse-syntax): Ditto.  Put context arg first.
+       (-parse-insn-format-symbol): Change errtxt argument to context, ACU.
+       (-parse-insn-format-ifield-spec, -parse-insn-format-list): Ditto.
+       (-parse-insn-format): Ditto.
+       * mach.scm (-arch-parse-alignment, -arch-parse-machs): Ditto.
+       (-arch-parse-isas): Ditto.
+       (-isa-read): Add context arg, ACU.
+       (-cpu-parse, -cpu-read, -mach-read): Ditto.
+       * minsn.scm (-minsn-parse-expansion): Change errtxt argument to
+       context, ACU.
+       (-minsn-parse, -minsn-read, -minsn-compute-iflds): Ditto.
+       (minsn-make-alias): Ditto.
+       * mode.scm (-mode-parse): Ditto.
+       (parse-mode-name): Ditto.  Put context arg first.
+       * model.scm (-prefetch-parse, -retire-parse, -pipeline-parse): Change
+       errtxt argument to context, ACU.
+       (-unit-parse, -model-parse, -model-read): Ditto.
+       * operand.scm (-operand-parse-getter): Use parse-error instead of
+       context-error.
+       (-operand-parse-setter): Ditto.
+       (-operand-parse): Change errtxt argument to context, ACU.
+       (-operand-read, -derived-operand-parse, -derived-operand-read): Ditto.
+       (-anyof-operand-parse, -anyof-operand-read): Ditto.
+       * read.scm (reader-error): Delete.  Use parse-error instead.
+       (parse-error): Change errtxt argument to context, ACU.  Split args
+       argument into expr and maybe-help-text.
+       (-reader-process-expanded-1!): Reorganize.
+       * rtl.scm (-subr-read): Change errtxt argument to context, ACU.
+       * types.scm (parse-type): Ditto.
+       * utils-cgen.scm (single-location->simple-string): New function.
+       (<context>): Replace members file,lineno with location.
+       (make-prefix-context): Renamed from context-make-prefix, ACU.
+       (make-current-context): New function.
+       (context-append, context-append-name): New functions.
+       (context-make-reader): Delete.
+       (parse-name): Change errtxt argument to context, ACU.
+       Put context arg first.
+       (parse-comment): Ditto.
+       (parse-number): Change errtxt argument to context, ACU.
+       (arg-list-validate-name, arg-list-check-no-args,
+       arg-list-symbol-arg): Ditto.
+
+       * read.scm (-cmd-if): Don't assume test is a list.
+
+       * html.scm (get-insn-properties): Delete errtxt, unused.
+
+2009-08-11  Doug Evans  <dje@sebabeach.org>
+
+       * doc/rtl.texi (hardware types): Add pc.
+
+2009-08-07  Doug Evans  <dje@sebabeach.org>
+
+       Add -t option for tracing things like commands, pmacro expansion.
+       * dev.scm (cload): New arg #:trace.
+       * pmacros.scm (-pmacro-expand): Rewrite pmacro tracing.
+       (pmacro-trace): New arg `loc'.  Rewrite pmacro tracing.
+       (pmacro-debug): Call pmacro-trace instead of -pmacro-expand.
+       * read.scm (<reader>): New members trace-commands?, trace-pmacros?.
+       (-reader-process-expanded-1!): Trace commands if requested.
+       (-reader-process!): Call pmacro-trace of pmacro tracing requested.
+       (-set-trace-options!): New function.
+       (-init-reader!): New function.
+       (cpu-load): New arg trace-options, all callers updated.
+       Call -init-reader! and -set-trace-options!.
+       (cgen-usage): Improve output formatting.
+       (common-arguments): New option -t.
+       (-cgen): Process -t.
+       * utils-cgen.scm (single-location->string): Renamed from
+       pretty-print-single-location.  All callers updated.
+       (location->string): Renamed from pretty-print-location.
+       All callers updated.
+       (source-properties-location->string): New function.
+       * doc/running.texi: Document -t.
+
+2009-08-06  Doug Evans  <dje@sebabeach.org>
+
+       * read.scm (debug-env, debug-var-names, debug-var, debug-tty,
+       debug-tty-port, debug-repl, debug-quit, debug-repl-env): Move to ...
+       * utils.scm: ... here.
+
+2009-08-05  Doug Evans  <dje@sebabeach.org>
+
+       Track source location better, for better error messages.
+       * pmacros.scm (-pmacro-eval): Delete, unused.
+       (pmacro-expand, -pmacro-expand): New arg `loc', all callers updated.
+       (-pmacro-expand-expr-list, -smacro-apply): Ditto.
+       (scan-list, scan): Ditto.
+       (-pmacro-builtin-pmacro, -pmacro-builtin-let, -pmacro-builtin-if,
+       -pmacro-builtin-case, -pmacro-builtin-cond, -pmacro-builtin-begin,
+       -pmacro-builtin-andif, -pmacro-builtin-orif): Ditto.
+       (scan-list1): New function.
+       (-pmacro-build-lambda): New arg `loc', all callers updated.  Rewrite.
+       * read.scm (<reader>): New member `location'.
+       (-reader-lookup-command): Renamed from reader-lookup-command,
+       all callers updated.
+       (reader-error): Rewrite to produce better source location info.
+       (current-reader-location): New function.
+       (-reader-process-expanded-1!): Renamed from -reader-process-expanded-1.
+       All callers updated.  Record source location of expression.
+       (reader-process-expanded!): Renamed from reader-process-expanded.
+       All callers updated.
+       (-reader-process!): Renamed from reader-process.  New arg `loc'.
+       All callers updated.  Record source location of define-pmacro.
+       * utils-cgen.scm (<location>): New class.
+       (single-location): New (pseudo) class.
+       (pretty-print-single-location, pretty-print-location): New functions.
+       (location-top, location-push-single, location-push): New functions.
+       (unspecified-location, current-input-location): New functions.
+       (location-property): New object property.
+       (location-property-set!): New function.
+       (<source-ident>): Renamed from <ordered-ident>.  New member `location'.
+       All uses updated.
+       * testsuite/location-1.test: New testcase.
+       * testsuite/run-tests.sh: Fix fail count handling.
+       * testsuite/test-utils.sh.in (run_cgen): New option `-f'.  Allow tests
+       to expect cgen to fail.
+
+       * pmacros.scm (*): Use "pmacro" instead of "macro" more consistently.
+
+       * read.scm (-cmd-include): Renamed from include.  All callers updated.
+       (-cmd-if): Renamed from cmd-if.  All callers updated.
+       Use reader-process-expanded! on then/else clauses instead of eval1.
+
+2009-07-22  Doug Evans  <dje@sebabeach.org>
+
+       * modes.scm (TI,OI): New modes.
+       * types.scm (parse-type): Improve error checking.  Don't hardwire
+       mode names here.
+       * utils.scm (non-negative-integer?): New function.
+
+       * pmacros.scm (-pmacro-builtin-find): New predicate.
+       (pmacros-init!): Add .find.
+       * doc/pmacros.tex: Document .find.
+       * testsuite/pmacros-1.test: Test .find.
+
 2009-07-20  Doug Evans  <dje@sebabeach.org>
 
        * insn.scm (multi-insn-instantiate!): Use logging messages instead of