https://llvm.org/bugs/show_bug.cgi?id=26905
Bug ID: 26905 Summary: novtable support Product: new-bugs Version: trunk Hardware: PC OS: Windows NT Status: NEW Severity: normal Priority: P Component: new bugs Assignee: unassignedb...@nondot.org Reporter: adam...@gmail.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified Created attachment 16019 --> https://llvm.org/bugs/attachment.cgi?id=16019&action=edit source code When I tried to use Crypto++ (as static library) with Clang on Windows then I noticed crash of my application. (without errors during compilation) The issue was in novtable usage. If I remove novtable then everything works well. The example below shows how to reproduce this problem. The names are connected to class names in Crypto++ where I found the problem. 1. Create static library with class MyClass.h / MyClass.cpp (source also in Attahcment). Whole program optimization should be disabled. Source code: #pragma once class __declspec(novtable) IteratedHashBase { virtual void Init() = 0; }; class __declspec(novtable) IteratedHashWithStaticTransform : public IteratedHashBase { public: IteratedHashWithStaticTransform() { this->Init(); } void Init() {} }; class MD5 : public IteratedHashWithStaticTransform { public: static void InitState() {} }; 2. Create another .exe application, and link this static library. Source code: #include "MyClass.h" #include <cstdio> int main() { MD5 pY; int i; scanf("%d", &i); } Finally the program compiles properly. If I use Visual Studio then everything works well. If I use clang compiler then the program crashes. In assembly I can see the problem in execution of this->Init(); statement. I tested it on the last clang snapshot build r262937 (8 March 2016). -- You are receiving this mail because: You are on the CC list for the bug.
_______________________________________________ llvm-bugs mailing list llvm-bugs@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs