JDK-8057129 : Fix AIX build after the Extend CompileCommand=option change 8055286
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-09-03
  • Updated: 2015-06-03
  • Resolved: 2014-09-03
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u40Fixed 9 b31Fixed
Related Reports
Relates :  
Description
The change "8055286: Extend CompileCommand=option to handle numeric parameters" broke the AIX build because the AIX xlC compiler is overly picky with regard to section 14.6.4.2 "Candidate functions" of the C++ standard (see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf) which states:

If the function name is an unqualified-id and the call would be ill-formed or would find a better match had the lookup within the associated namespaces considered all the function declarations with external linkage introduced in those namespaces in all translation units, not just considering those declarations found in the template definition and template instantiation contexts, then the program has undefined behavior.

xlC interprets this by not taking into account static functions which have internal linkage and terminates with the error message:

"hotspot-comp/src/share/vm/compiler/compilerOracle.cpp", line 364.10: 1540-0274 (S) The name lookup for "get_option_value" did not find a declaration.
"hotspot-comp/src/share/vm/compiler/compilerOracle.cpp", line 364.10: 1540-1292 (I) Static declarations are not considered for a function call if the function is not qualified.

The fix is trivial - just qualify the call to "get_option_value" like this:

  return ::get_option_value(method, option, value);