[llvm-bugs] [Bug 24291] clang-cl imports an incorrect data symbol for dllimported classes inside a namespace with a default ctor which have a local static member
    via llvm-bugs 
    llvm-bugs at lists.llvm.org
       
    Sun Feb  7 19:32:27 PST 2016
    
    
  
https://llvm.org/bugs/show_bug.cgi?id=24291
Ehsan Akhgari [:ehsan] <ehsan at mozilla.com> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|WORKSFORME                  |---
            Summary|clang-cl doesn't respect    |clang-cl imports an
                   |noinline on methods of      |incorrect data symbol for
                   |dllimported classes         |dllimported classes inside
                   |                            |a namespace with a default
                   |                            |ctor which have a local
                   |                            |static member
--- Comment #8 from Ehsan Akhgari [:ehsan] <ehsan at mozilla.com> ---
It turns out that the test case in comment 0 was completely wrong, sorry for
the red herring.  Here is a minimized test case that demonstrates the
difference between cl and clang-cl:
$ cat test.cpp
namespace foo {
class __declspec(dllimport) S {
public:
  static S* Instance() {
    static S s;
    return &s;
  }
  S() {}
};
}
void use() {
  foo::S::Instance();
}
$ clang-cl -c -O1 test.cpp && llvm-nm test.obj
00000000 T ?use@@YAXXZ
00000001 a @feat.00
         U __imp_??_B?1??Instance at S@foo@@SAPAV12 at XZ@51
$ cl -nologo -c -O1 test.cpp && llvm-nm test.obj
test.cpp
00000000 T ?use@@YAXXZ
00e1797d a @comp.id
80000191 a @feat.00
         U __imp_?Instance at S@foo@@SAPAV12 at XZ
Note that if you drop the default ctor from S, or move S to the global
namespace, the bug goes away!
-- 
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/20160208/226da880/attachment.html>
    
    
More information about the llvm-bugs
mailing list