[#120073] [Ruby master Feature#20925] Allow boolean operators at beginning of line to continue previous line — "Dan0042 (Daniel DeLorme) via ruby-core" <ruby-core@...>

Issue #20925 has been reported by Dan0042 (Daniel DeLorme).

12 messages 2024/12/01

[#120141] [Ruby master Bug#20937] "can't set length of shared string" error when using OpenSSL::Cipher#update with buffer — "akiellor (Andrew Kiellor) via ruby-core" <ruby-core@...>

Issue #20937 has been reported by akiellor (Andrew Kiellor).

9 messages 2024/12/09

[#120174] [Ruby master Bug#20943] Constant defined in `Data` block — "nobu (Nobuyoshi Nakada) via ruby-core" <ruby-core@...>

Issue #20943 has been reported by nobu (Nobuyoshi Nakada).

8 messages 2024/12/11

[#120183] [Ruby master Misc#20946] Proposing tomoya ishida (@tompng) as a Ruby committer — "matsuda (Akira Matsuda) via ruby-core" <ruby-core@...>

Issue #20946 has been reported by matsuda (Akira Matsuda).

10 messages 2024/12/12

[#120189] [Ruby master Misc#20947] Propose ydah (Yudai Takada) as a Ruby committer — "yui-knk (Kaneko Yuichiro) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwOTQ3IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHl1aS1rbmsgKEthbmVrbyBZdWljaGly

7 messages 2024/12/12

[#120232] [Ruby master Misc#20951] Confusing handling of timezone object's `#utc_to_local` results — "andrykonchin (Andrew Konchin) via ruby-core" <ruby-core@...>

Issue #20951 has been reported by andrykonchin (Andrew Konchin).

7 messages 2024/12/13

[#120250] [Ruby master Feature#20953] Array#fetch_values vs #values_at protocols — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

Issue #20953 has been reported by zverok (Victor Shepelev).

11 messages 2024/12/15

[#120252] [Ruby master Bug#20955] Subtle differences with Proc#parameters for anonymous parameters — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

SXNzdWUgIzIwOTU1IGhhcyBiZWVuIHJlcG9ydGVkIGJ5IHp2ZXJvayAoVmljdG9yIFNoZXBlbGV2

9 messages 2024/12/15

[#120283] [Ruby master Bug#20961] MMTk build on macOS missing librubygc.mmtk.bundle — "shan (Shannon Skipper) via ruby-core" <ruby-core@...>

Issue #20961 has been reported by shan (Shannon Skipper).

8 messages 2024/12/17

[#120303] [Ruby master Bug#20965] `it` vs `binding.local_variables` — "zverok (Victor Shepelev) via ruby-core" <ruby-core@...>

Issue #20965 has been reported by zverok (Victor Shepelev).

10 messages 2024/12/18

[#120315] [Ruby master Bug#20968] `Array#fetch_values` unexpected method name in stack trace — "koic (Koichi ITO) via ruby-core" <ruby-core@...>

Issue #20968 has been reported by koic (Koichi ITO).

22 messages 2024/12/19

[#120325] [Ruby master Bug#20970] `it /1/i` raises undefined method 'it' for main (NoMethodError) even if binding.local_variables includes `it` — "tompng (tomoya ishida) via ruby-core" <ruby-core@...>

Issue #20970 has been reported by tompng (tomoya ishida).

11 messages 2024/12/19

[#120335] [Ruby master Feature#20971] Deprecate `rb_path_check` — "Earlopain (Earlopain _) via ruby-core" <ruby-core@...>

Issue #20971 has been reported by Earlopain (Earlopain _).

13 messages 2024/12/19

[#120458] [Ruby master Misc#20995] exception escapes block given to IO.popen("-") in child process — "martin.dorey@... (Martin Dorey) via ruby-core" <ruby-core@...>

Issue #20995 has been reported by martin.dorey@hds.com (Martin Dorey).

7 messages 2024/12/31

[ruby-core:120300] [Ruby master Bug#20964] Oracle Developer Studio 12.5 on Solaris failed to compile "prism/extension.c", line 499: internal compiler error: Wasted space

From: "ngoto (Naohisa Goto) via ruby-core" <ruby-core@...>
Date: 2024-12-18 17:27:09 UTC
List: ruby-core #120300
Issue #20964 has been reported by ngoto (Naohisa Goto).

----------------------------------------
Bug #20964: Oracle Developer Studio 12.5 on Solaris failed to compile "prism/extension.c", line 499: internal compiler error: Wasted space
https://bugs.ruby-lang.org/issues/20964

* Author: ngoto (Naohisa Goto)
* Status: Open
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
Oracle Developer Studio 12.5 and 12.6 on Solaris 10 failed to compile prism/extension.c with the following error:

```
cc  -errtags=yes -xO4 -xtarget=sparc64xplus -m64 -xatomic=gcc   -g -erroff=E_STATEMENT_NOT_REACHED -erroff=E_INIT_SIGN_EXTEND -erroff=E_INIT_DOES_NOT_FIT -erroff=E_INITIALIZATION_TYPE_MISMATCH   -DRUBY_EXPORT -I. -I.ext/include/sparc64-solaris2.10 -I../ruby.devel/include -I../ruby.devel -I../ruby.devel/prism -I../ruby.devel/enc/unicode/15.0.0   -D_XOPEN_SOURCE=600  -I/usr/local/64/lib/libffi-3.0.10/include -I/usr/local/64/include  -o prism/extension.o -c ../ruby.devel/prism/extension.c
"../ruby.devel/prism/extension.c", line 499: internal compiler error: Wasted space
cc: acomp failed for ../ruby.devel/prism/extension.c
make: *** [prism/extension.o] Error 2
```

The line 499 in prism/extension.c is located at the end of parser_errors() function.

It seems that the error message `internal compiler error: Wasted space` strongly suggests the compiler's bug.

Changing optimization level did not solve the error.

After some trial and error, I found that the following patch dismisses the error.

```
--- a/prism/extension.c
+++ b/prism/extension.c
@@ -464,11 +464,11 @@ parser_errors(pm_parser_t *parser, rb_encoding *encoding, VALUE source) {
     pm_diagnostic_t *error;
 
     for (error = (pm_diagnostic_t *) parser->error_list.head; error != NULL; error = (pm_diagnostic_t *) error->node.next) {
-        VALUE location_argv[] = {
-            source,
-            LONG2FIX(error->location.start - parser->start),
-            LONG2FIX(error->location.end - error->location.start)
-        };
+        VALUE location_argv[3];
+
+        location_argv[0] = source;
+        location_argv[1] = LONG2FIX(error->location.start - parser->start);
+        location_argv[2] = LONG2FIX(error->location.end - error->location.start);
 
         VALUE level = Qnil;
         switch (error->level) {
@@ -485,12 +485,12 @@ parser_errors(pm_parser_t *parser, rb_encoding *encoding, VALUE source) {
                 rb_raise(rb_eRuntimeError, "Unknown level: %" PRIu8, error->level);
         }
 
-        VALUE error_argv[] = {
-            ID2SYM(rb_intern(pm_diagnostic_id_human(error->diag_id))),
-            rb_enc_str_new_cstr(error->message, encoding),
-            rb_class_new_instance(3, location_argv, rb_cPrismLocation),
-            level
-        };
+        VALUE error_argv[4];
+
+        error_argv[0] = ID2SYM(rb_intern(pm_diagnostic_id_human(error->diag_id)));
+        error_argv[1] = rb_enc_str_new_cstr(error->message, encoding);
+        error_argv[2] = rb_class_new_instance(3, location_argv, rb_cPrismLocation);
+        error_argv[3] = level;
 
         rb_ary_push(errors, rb_class_new_instance(4, error_argv, rb_cPrismParseError));
     }
@@ -507,11 +507,11 @@ parser_warnings(pm_parser_t *parser, rb_encoding *encoding, VALUE source) {
     pm_diagnostic_t *warning;
 
     for (warning = (pm_diagnostic_t *) parser->warning_list.head; warning != NULL; warning = (pm_diagnostic_t *) warning->node.next) {
-        VALUE location_argv[] = {
-            source,
-            LONG2FIX(warning->location.start - parser->start),
-            LONG2FIX(warning->location.end - warning->location.start)
-        };
+        VALUE location_argv[3];
+
+        location_argv[0] = source;
+        location_argv[1] = LONG2FIX(warning->location.start - parser->start);
+        location_argv[2] = LONG2FIX(warning->location.end - warning->location.start);
 
         VALUE level = Qnil;
         switch (warning->level) {
@@ -525,12 +525,12 @@ parser_warnings(pm_parser_t *parser, rb_encoding *encoding, VALUE source) {
                 rb_raise(rb_eRuntimeError, "Unknown level: %" PRIu8, warning->level);
         }
 
-        VALUE warning_argv[] = {
-            ID2SYM(rb_intern(pm_diagnostic_id_human(warning->diag_id))),
-            rb_enc_str_new_cstr(warning->message, encoding),
-            rb_class_new_instance(3, location_argv, rb_cPrismLocation),
-            level
-        };
+        VALUE warning_argv[4];
+
+        warning_argv[0] = ID2SYM(rb_intern(pm_diagnostic_id_human(warning->diag_id)));
+        warning_argv[1] = rb_enc_str_new_cstr(warning->message, encoding);
+        warning_argv[2] = rb_class_new_instance(3, location_argv, rb_cPrismLocation);
+        warning_argv[3] = level;
 
         rb_ary_push(warnings, rb_class_new_instance(4, warning_argv, rb_cPrismParseWarning));
     }
```

However, I don't like to add the patch because this change significantly decreases maintainability of code.
I also think that the compiler's bug should be fixed in the compiler side and such dirty workaround should not be included.

P.S.
GCC 7.5.0 on Solaris 10 can compile the original code (without the workaround patch) with no errors.
Therefore, it seems that this is not Solaris OS problem but the problem of Oracle Developer Studio 12.5/12.6 compiler.



-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/


In This Thread

Prev Next