@@ -107,6 +107,20 @@ void EnvironmentOptions::CheckOptions(std::vector<std::string>* errors) {
107107
108108namespace options_parser {
109109
110+ // Explicitly access the singelton instances in their dependancy order.
111+ // This was moved here to workaround a compiler bug.
112+ // Refs: https://github.com/nodejs/node/issues/25593
113+
114+ #if HAVE_INSPECTOR
115+ const DebugOptionsParser DebugOptionsParser::instance;
116+ #endif // HAVE_INSPECTOR
117+
118+ const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
119+
120+ const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
121+
122+ const PerProcessOptionsParser PerProcessOptionsParser::instance;
123+
110124// XXX: If you add an option here, please also add it to doc/node.1 and
111125// doc/api/cli.md
112126// TODO(addaleax): Make that unnecessary.
@@ -143,10 +157,6 @@ DebugOptionsParser::DebugOptionsParser() {
143157 AddAlias (" --debug-brk=" , { " --inspect-port" , " --debug-brk" });
144158}
145159
146- #if HAVE_INSPECTOR
147- const DebugOptionsParser DebugOptionsParser::instance;
148- #endif // HAVE_INSPECTOR
149-
150160EnvironmentOptionsParser::EnvironmentOptionsParser () {
151161 AddOption (" --experimental-modules" ,
152162 " experimental ES Module support and caching modules" ,
@@ -275,8 +285,6 @@ EnvironmentOptionsParser::EnvironmentOptionsParser() {
275285#endif // HAVE_INSPECTOR
276286}
277287
278- const EnvironmentOptionsParser EnvironmentOptionsParser::instance;
279-
280288PerIsolateOptionsParser::PerIsolateOptionsParser () {
281289 AddOption (" --track-heap-objects" ,
282290 " track heap object allocations for heap snapshots" ,
@@ -334,8 +342,6 @@ PerIsolateOptionsParser::PerIsolateOptionsParser() {
334342 &PerIsolateOptions::get_per_env_options);
335343}
336344
337- const PerIsolateOptionsParser PerIsolateOptionsParser::instance;
338-
339345PerProcessOptionsParser::PerProcessOptionsParser () {
340346 AddOption (" --title" ,
341347 " the process title to use on startup" ,
@@ -442,8 +448,6 @@ PerProcessOptionsParser::PerProcessOptionsParser() {
442448 &PerProcessOptions::get_per_isolate_options);
443449}
444450
445- const PerProcessOptionsParser PerProcessOptionsParser::instance;
446-
447451inline std::string RemoveBrackets (const std::string& host) {
448452 if (!host.empty () && host.front () == ' [' && host.back () == ' ]' )
449453 return host.substr (1 , host.size () - 2 );
0 commit comments