[LLVMbugs] [Bug 16093] New: -Wshadow not suppressed in Macro defined in system header

bugzilla-daemon at llvm.org bugzilla-daemon at llvm.org
Tue May 21 08:50:06 PDT 2013


http://llvm.org/bugs/show_bug.cgi?id=16093

            Bug ID: 16093
           Summary: -Wshadow not suppressed in Macro defined in system
                    header
           Product: clang
           Version: trunk
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P
         Component: C++
          Assignee: unassignedclangbugs at nondot.org
          Reporter: jonathan.sauer at gmx.de
                CC: dgregor at apple.com, llvmbugs at cs.uiuc.edu
    Classification: Unclassified

The following program (which must be saved as clang.cpp for the self-inclusion
to work) results in a warning when compiled with clang r182233 and -Wshadow:

#ifdef IS_INCLUDE_FILE
#pragma clang system_header

#define M(a) \
    __extension__({ int v = a; v; })

#else
#define IS_INCLUDE_FILE
#include "clang.cpp"

int main()
{
    int i = M(M(1));
}
#endif


This results in:

% % ~/LLVM/build/Release+Asserts/bin/clang++ -Wshadow -v clang.cpp
clang version 3.4 (trunk 182233)
[...]
clang.cpp:13:12: warning: declaration shadows a local variable [-Wshadow]
        int i = M(M(1));
                  ^
clang.cpp:5:22: note: expanded from macro 'M'
        __extension__({ int v = a; v; })
                            ^
clang.cpp:5:26: note: expanded from macro 'M'
        __extension__({ int v = a; v; })
                                ^
clang.cpp:13:10: note: previous declaration is here
        int i = M(M(1));
                ^
clang.cpp:5:22: note: expanded from macro 'M'
        __extension__({ int v = a; v; })
                            ^
1 warning generated.


I'm filing this bug mainly because the SSE2 header file emmintrin.h provided
with clang contains (among others) the macro _mm_shufflelo_epi16 which when
nested trips this warning; the original code that caused the warning was:

  _mm_shufflelo_epi16(_mm_shufflehi_epi16(v, MASK_HI), MASK_LO)

(I'm actually not sure if the macros in emmintrin.h really need to define a
local variable to store the macro's parameter in, as the parameter is used only
once in the macro.)

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-bugs/attachments/20130521/dd1fe5e6/attachment.html>


More information about the llvm-bugs mailing list