openjdk/jdk · warning

%s: Found %d warning

Error message

%s:  Found %d warning

What it means

Phase-1 ADLC summary '"%s: Found %d warning(s)."' printed when only _AD._warnings > 0 (no errors). Warnings are non-fatal hygiene messages about the .ad description (e.g. unused operands at archDesc.cpp:776, ThreadLocal naming at formssel.cpp:304). The build continues and generated output is produced.

Source

Thrown at src/hotspot/share/adlc/adlparse.cpp:73

  }
#endif
  if( _AD._syntax_errs + _AD._semantic_errs + _AD._warnings == 0 ) {
    if (!_AD._quiet_mode)
      fprintf(stderr,"No errors or warnings to report from phase-1 parse.\n" );
  }
  else {
    if( _AD._syntax_errs ) {      // Any syntax errors?
      fprintf(stderr,"%s:  Found %d syntax error", _buf._fp->_name, _AD._syntax_errs);
      if( _AD._syntax_errs > 1 ) fprintf(stderr,"s.\n\n");
      else fprintf(stderr,".\n\n");
    }
    if( _AD._semantic_errs ) {    // Any semantic errors?
      fprintf(stderr,"%s:  Found %d semantic error", _buf._fp->_name, _AD._semantic_errs);
      if( _AD._semantic_errs > 1 ) fprintf(stderr,"s.\n\n");
      else fprintf(stderr,".\n\n");
    }
    if( _AD._warnings ) {         // Any warnings?
      fprintf(stderr,"%s:  Found %d warning", _buf._fp->_name, _AD._warnings);
      if( _AD._warnings > 1 ) fprintf(stderr,"s.\n\n");
      else fprintf(stderr,".\n\n");
    }
  }
  if (!_AD._quiet_mode)
    fprintf(stderr,"-----------------------------------------------------------------------------\n");
  _AD._TotalLines += linenum()-1;     // -1 for overshoot in "nextline" routine

  // Write out information we have stored
  // // UNIXism == fsync(stderr);
}

//------------------------------parse------------------------------------------
// Each top-level keyword should appear as the first non-whitespace on a line.
//
void ADLParser::parse() {
  char *ident;

View on GitHub (pinned to 88dfb74bbe)

Solutions

  1. Read each warning line; remove or use the flagged construct if it is your code
  2. For upstream files, warnings can usually be ignored — verify the build otherwise succeeds
  3. Pass quiet mode (_AD._quiet_mode, e.g. via -q flag in adlc) if you only want errors
Defensive patterns

Strategy: validation

Validate before calling

make adlc 2>&1 | grep -c '^Warning' # CI: fail or annotate when warning count grows vs baseline

Prevention

When it happens

Trigger: Any ADLParser warning path incrementing _AD._warnings — unused operand definitions, instructions matching ThreadLocal without the tlsLoadP_ name prefix, and similar lint-level checks on the platform description.

Common situations: Upstream .ad files that carry intentionally unused compatibility operands; developers adding new vector operands without wiring them into any instruction.

Related errors


AI-assisted analysis of openjdk/jdk@88dfb74bbe (2026-08-14). Data as JSON: /api/errors/d0d42f38c046f5ef. Report an issue: GitHub.