Project

General

Profile

Actions

Bug #16930

closed

Excessive deprecation warnings for c++ compile units

Added by anatolik (Anatol Pomozov) almost 4 years ago. Updated about 3 years ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:98610]

Description

I am using Arch Linux with the latest Ruby 2.7.1.

I am compiling a simple C++ program like this

#include <ruby.h>

int main() {
    return 0;
}

And then compile as g++ -c main.cxx -I/usr/include/ruby-2.7.0 -I/usr/include/ruby-2.7.0/x86_64-linux.

I see a lot of warnings are printed to the user:

/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:222:1: note: declared here
  222 | rb_rescue2(type *q, VALUE w, type *e, VALUE r, ...)
      | ^~~~~~~~~~
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp: In function ‘VALUE ruby::backward::cxxanyargs::rb_ensure(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’:
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:251:14: warning: ‘VALUE ruby::backward::cxxanyargs::rb_ensure(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’ is deprecated: Use of ANYARGS in this function is deprecated [-Wdeprecated-declarations]
  251 |     func1_t *t = reinterpret_cast<func1_t*>(q);
      |              ^
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:248:1: note: declared here
  248 | rb_ensure(type *q, VALUE w, type *e, VALUE r)
      | ^~~~~~~~~
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:251:42: warning: ‘VALUE ruby::backward::cxxanyargs::rb_ensure(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’ is deprecated: Use of ANYARGS in this function is deprecated [-Wdeprecated-declarations]
  251 |     func1_t *t = reinterpret_cast<func1_t*>(q);
      |                                          ^
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:248:1: note: declared here
  248 | rb_ensure(type *q, VALUE w, type *e, VALUE r)
      | ^~~~~~~~~
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:252:14: warning: ‘VALUE ruby::backward::cxxanyargs::rb_ensure(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’ is deprecated: Use of ANYARGS in this function is deprecated [-Wdeprecated-declarations]
  252 |     func1_t *y = reinterpret_cast<func1_t*>(e);
      |              ^
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:248:1: note: declared here
  248 | rb_ensure(type *q, VALUE w, type *e, VALUE r)
      | ^~~~~~~~~
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:252:42: warning: ‘VALUE ruby::backward::cxxanyargs::rb_ensure(VALUE (*)(...), VALUE, VALUE (*)(...), VALUE)’ is deprecated: Use of ANYARGS in this function is deprecated [-Wdeprecated-declarations]
  252 |     func1_t *y = reinterpret_cast<func1_t*>(e);
      |                                          ^
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:248:1: note: declared here
  248 | rb_ensure(type *q, VALUE w, type *e, VALUE r)
      | ^~~~~~~~~
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp: In function ‘VALUE ruby::backward::cxxanyargs::rb_thread_create(VALUE (*)(...), void*)’:
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:343:12: warning: ‘VALUE ruby::backward::cxxanyargs::rb_thread_create(VALUE (*)(...), void*)’ is deprecated: Use of ANYARGS in this function is deprecated [-Wdeprecated-declarations]
  343 |     ptr_t *e = reinterpret_cast<ptr_t*>(q);
      |            ^
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:340:1: note: declared here
  340 | rb_thread_create(type *q, void *w)
      | ^~~~~~~~~~~~~~~~
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:343:38: warning: ‘VALUE ruby::backward::cxxanyargs::rb_thread_create(VALUE (*)(...), void*)’ is deprecated: Use of ANYARGS in this function is deprecated [-Wdeprecated-declarations]
  343 |     ptr_t *e = reinterpret_cast<ptr_t*>(q);
      |                                      ^
/usr/include/ruby-2.7.0/ruby/backward/cxxanyargs.hpp:340:1: note: declared here
  340 | rb_thread_create(type *q, void *w)
      | ^~~~~~~~~~~~~~~~

These warnings are coming include/ruby/backward/cxxanyargs.hpp where
RUBY_CXX_DEPRECATED("Use of ANYARGS in this function is deprecated") are included across the file. These deprecation warnings are printed only because the backward compatibility file is included. But there seems no way to disable backward compatibility inclusion.

These warnings should be printed only when the deprecated code is used by the user. Otherwise the compiler should be silent.

Updated by mame (Yusuke Endoh) almost 4 years ago

  • Status changed from Open to Third Party's Issue

According to @shyouhei (Shyouhei Urabe), it is apparently a bug of GCC 10. He has already reported: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95302. They are just warnings, so please ignore.

Updated by cfis (Charlie Savage) about 3 years ago

I also agree the number of warnings is excessive. Could the cxxanyargs.hpp include be removed?

Updated by shyouhei (Shyouhei Urabe) about 3 years ago

  • Status changed from Third Party's Issue to Closed

06321ea26c186434e5b943a6739ffd6bd1eb06d9 is a workaround. To trigger our backporting process I change the status to Closed.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0