From: "naruse (Yui NARUSE)" Date: 2013-03-12T15:10:43+09:00 Subject: [ruby-core:53329] [ruby-trunk - Bug #7756] clang 3.2 sees through UNINITIALIZED_VAR macro, gives warning Issue #7756 has been updated by naruse (Yui NARUSE). GCC 4.6 and clang (2.8?) supports pragma diagnostic, but its syntax is different from current UNINITIALIZED_VAR(). #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wuninitialized" blah blah #pragma GCC diagnostic pop http://gcc.gnu.org/gcc-4.6/changes.html http://gcc.gnu.org/onlinedocs/gcc/Diagnostic-Pragmas.html http://clang.llvm.org/docs/UsersManual.html#controlling-diagnostics-via-pragmas ---------------------------------------- Bug #7756: clang 3.2 sees through UNINITIALIZED_VAR macro, gives warning https://bugs.ruby-lang.org/issues/7756#change-37525 Author: drbrain (Eric Hodel) Status: Open Priority: Normal Assignee: mame (Yusuke Endoh) Category: core Target version: next minor ruby -v: - =begin In clang 3.2, the UNINITIALIZED_VAR macro does not prevent the compiler from producing a warning. Apple clang 3.2: $ clang -v Apple LLVM version 4.2 (clang-425.0.24) (based on LLVM 3.2svn) Target: x86_64-apple-darwin12.2.1 Thread model: posix When compiling thread.c: compiling ../trunk/thread.c ../trunk/thread.c:3261:34: warning: variable 'orig_read' is uninitialized when used within its own initialization [-Wuninitialized] rb_fdset_t UNINITIALIZED_VAR(orig_read); ^~~~~~~~~ ../trunk/vm_core.h:119:34: note: expanded from macro 'UNINITIALIZED_VAR' #define UNINITIALIZED_VAR(x) x = x ^ ../trunk/thread.c:3262:34: warning: variable 'orig_write' is uninitialized when used within its own initialization [-Wuninitialized] rb_fdset_t UNINITIALIZED_VAR(orig_write); ^~~~~~~~~~ ../trunk/vm_core.h:119:34: note: expanded from macro 'UNINITIALIZED_VAR' #define UNINITIALIZED_VAR(x) x = x ^ ../trunk/thread.c:3263:34: warning: variable 'orig_except' is uninitialized when used within its own initialization [-Wuninitialized] rb_fdset_t UNINITIALIZED_VAR(orig_except); ^~~~~~~~~~~ ../trunk/vm_core.h:119:34: note: expanded from macro 'UNINITIALIZED_VAR' #define UNINITIALIZED_VAR(x) x = x ^ 3 warnings generated. =end -- http://bugs.ruby-lang.org/