ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:120299] [Ruby master Bug#20963] compile error due to lack of MAYBE_UNUSED macro e.g. Oracle Developer Studio 12.x on Solaris 10
@ 2024-12-18 14:31 ngoto (Naohisa Goto) via ruby-core
  0 siblings, 0 replies; only message in thread
From: ngoto (Naohisa Goto) via ruby-core @ 2024-12-18 14:31 UTC (permalink / raw)
  To: ruby-core; +Cc: ngoto (Naohisa Goto)

Issue #20963 has been reported by ngoto (Naohisa Goto).

----------------------------------------
Bug #20963: compile error due to lack of MAYBE_UNUSED macro e.g. Oracle Developer Studio 12.x on Solaris 10
https://bugs.ruby-lang.org/issues/20963

* Author: ngoto (Naohisa Goto)
* Status: Open
* Assignee: ngoto (Naohisa Goto)
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
On Solaris 10, by using Oracle Developer Studio 12.5, strange compile error occurred.

```
cc   -errtags=yes -xO4 -xtarget=sparc64xplus -m64   -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 main.o -c ../ruby.devel/main.c
"../ruby.devel/include/ruby/internal/value.h", line 128: only "register" valid as formal parameter storage class
"../ruby.devel/include/ruby/internal/value.h", line 128: warning: old-style declaration or incorrect type for: MAYBE_UNUSED (E_OLD_STYLE_DECL_OR_BAD_TYPE)
"../ruby.devel/include/ruby/internal/value.h", line 129: only "register" valid as formal parameter storage class
"../ruby.devel/include/ruby/internal/value.h", line 129: warning: old-style declaration or incorrect type for: MAYBE_UNUSED (E_OLD_STYLE_DECL_OR_BAD_TYPE)
"../ruby.devel/include/ruby/internal/value.h", line 130: only "register" valid as formal parameter storage class
"../ruby.devel/include/ruby/internal/value.h", line 130: warning: old-style declaration or incorrect type for: MAYBE_UNUSED (E_OLD_STYLE_DECL_OR_BAD_TYPE)
"../ruby.devel/include/ruby/internal/value.h", line 131: only "register" valid as formal parameter storage class
"../ruby.devel/include/ruby/internal/value.h", line 131: warning: old-style declaration or incorrect type for: MAYBE_UNUSED (E_OLD_STYLE_DECL_OR_BAD_TYPE)
cc: acomp failed for ../ruby.devel/main.c
make: *** [main.o] Error 2
```

In include/ruby/internal/static_assert.h, MAYBE_UNUSED is used without considering the possibility  that it may not be defined.
The macro MAYBE_UNUSED is defined in config.h after checking existence of `__unused__` attribute by ./configure, but the attribute is only available in GCC or GCC-like compilers.

The following patch resolves the issue.
I think it is good to use `RBIMPL_ATTR_MAYBE_UNUSED()` macro which is defined in ruby/internal/attr/maybe_unused.h.

```
--- a/include/ruby/internal/static_assert.h
+++ b/include/ruby/internal/static_assert.h
@@ -23,6 +23,7 @@
 #include <assert.h>
 #include "ruby/internal/has/extension.h"
 #include "ruby/internal/compiler_since.h"
+#include "ruby/internal/attr/maybe_unused.h"
 
 /** @cond INTERNAL_MACRO */
 #if defined(__cplusplus) && defined(__cpp_static_assert)
@@ -71,7 +72,7 @@
 
 #else
 # define RBIMPL_STATIC_ASSERT(name, expr) \
-    MAYBE_UNUSED(typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)])
+    RBIMPL_ATTR_MAYBE_UNUSED() typedef int static_assert_ ## name ## _check[1 - 2 * !(expr)]
 #endif
 
 #endif /* RBIMPL_STATIC_ASSERT_H */
```




-- 
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/

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-12-18 14:31 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-12-18 14:31 [ruby-core:120299] [Ruby master Bug#20963] compile error due to lack of MAYBE_UNUSED macro e.g. Oracle Developer Studio 12.x on Solaris 10 ngoto (Naohisa Goto) via ruby-core

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).