* [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).