OSDN Git Service

* insn.scm (/parse-insn-format): Improve error message for missing or
authordevans <devans>
Thu, 10 Sep 2009 08:07:04 +0000 (08:07 +0000)
committerdevans <devans>
Thu, 10 Sep 2009 08:07:04 +0000 (08:07 +0000)
too many bits.

cgen/ChangeLog
cgen/insn.scm

index 48d766b..7824b94 100644 (file)
@@ -1,6 +1,7 @@
 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
index 6068240..984425d 100644 (file)
 
     (if verify?
 
-       (let ((base-len (isa-base-insn-bitsize isa)))
+       (let ((base-len (isa-base-insn-bitsize isa))
+             (pretty-print-iflds (lambda (iflds)
+                                   (if (null? iflds)
+                                       " none provided"
+                                       (string-map (lambda (f)
+                                                     (string-append " "
+                                                                    (ifld-pretty-print f)))
+                                                   iflds)))))
 
          ;; Perform some error checking.
          ;; Look for overlapping ifields and missing bits.
            ;; have problems, and I don't have time to fix them right now.
            (cond ((< base-iflds-length base-len)
                   (parse-warning context
-                                 "insufficient number of bits specified in base insn"
+                                 (string-append
+                                  "insufficient number of bits specified in base insn\n"
+                                  "ifields:"
+                                  (pretty-print-iflds parsed-ifld-list)
+                                  "\nprovided spec")
                                  ifld-list))
                  ((> base-iflds-length base-len)
                   (parse-warning context
-                                 "too many or duplicated bits specified in base insn"
+                                 (string-append
+                                  "too many or duplicated bits specified in base insn\n"
+                                  "ifields:"
+                                  (pretty-print-iflds parsed-ifld-list)
+                                  "\nprovided spec")
                                  ifld-list)))
            )
          ))