7061101: adlc should complain about mixing block and expression forms of ins_encode
Reviewed-by: kvn
--- 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);