7061101: adlc should complain about mixing block and expression forms of ins_encode
authornever
Wed, 06 Jul 2011 09:27:54 -0700
changeset 10016 8020d5b49663
parent 10015 ddfb84d0d0c1
child 10017 34ddce3361b7
7061101: adlc should complain about mixing block and expression forms of ins_encode Reviewed-by: kvn
hotspot/src/share/vm/adlc/adlparse.cpp
--- a/hotspot/src/share/vm/adlc/adlparse.cpp	Tue Jul 05 16:07:54 2011 -0700
+++ b/hotspot/src/share/vm/adlc/adlparse.cpp	Wed Jul 06 09:27:54 2011 -0700
@@ -2812,6 +2812,13 @@
     params->add_entry(param);
   }
 
+  // Check for duplicate ins_encode sections after parsing the block
+  // so that parsing can continue and find any other errors.
+  if (inst._insencode != NULL) {
+    parse_err(SYNERR, "Multiple ins_encode sections defined\n");
+    return;
+  }
+
   // Set encode class of this instruction.
   inst._insencode = encrule;
 }
@@ -3044,6 +3051,13 @@
   next_char();                     // move past ';'
   skipws();                        // be friendly to oper_parse()
 
+  // Check for duplicate ins_encode sections after parsing the block
+  // so that parsing can continue and find any other errors.
+  if (inst._insencode != NULL) {
+    parse_err(SYNERR, "Multiple ins_encode sections defined\n");
+    return;
+  }
+
   // Debug Stuff
   if (_AD._adl_debug > 1) fprintf(stderr,"Instruction Encode: %s\n", ec_name);