https://llvm.org/bugs/show_bug.cgi?id=24655
Bug ID: 24655 Summary: The preprocessor returns incorrect ranges of macros with certain combinations of headers Product: clang Version: unspecified Hardware: PC OS: Windows NT Status: NEW Severity: normal Priority: P Component: Frontend Assignee: unassignedclangb...@nondot.org Reporter: dpldob...@yahoo.com CC: llvm-bugs@lists.llvm.org Classification: Unclassified Created attachment 14804 --> https://llvm.org/bugs/attachment.cgi?id=14804&action=edit A test case My name is Dimitar Dobrev and I develop a project that creates C# wrappers for C++ code. We use Clang to parse C++ and we have this bug - https://github.com/mono/CppSharp/issues/543 . In short, a function (QAbstractSlider::wheelEvent) is reported as having macros above itself while in fact it has none. You can see the headers involved at http://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/accessible/complexwidgets.h and http://code.qt.io/cgit/qt/qtbase.git/tree/src/widgets/widgets/qabstractslider.h . The project leader, Joao Matos, and I have been working on it for more than a week now and we think there may be a bug in PreprocessingRecord::getPreprocessedEntitiesInRange. There is a comment in that code where it is acknowledged that endings may not be ordered. However, we believe that unlike what the comments states, that order is actually important. Furthermore, we have discovered that replacing getEnd() with getBegin() in findBeginLocalPreprocessedEntity eliminates our bug. This is, however, just a workaround because Argyrios Kyrtzidis was kind enough to tell us the change breaks some of your tests. We thought it made sense because you use binary search which requires elements to be sorted, and the list is, evident from PreprocessingRecord::addPreprocessedEntity, sorted by beginnings and therefore - because of macro expansion - not necessarily by endings at the same time. I have attached a test case generated by running Clang with -frewrite-includes. Let me know if I can help further. -- 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