Skip to content

Bugs reported and fixed

Pavel I. Kryukov edited this page Dec 9, 2019 · 70 revisions

MIPT-MIPS is an educational project, so we always want to teach most modern technologies and tools. However, they often contain bugs or some features are not implemented. That's why we report them in our nearest convenience.

Compiler and tools bugs reported

LLVM

  • Clang++ bugs:
    • PR 36283 — False positive dead code detection for C++17 structured binding, found by Pavel Kryukov during refactoring activity.
    • PR 36284 — False positive detection of unneeded declaration for user-defined literals used inside class templates. Bug observed by Aleksandr Misevich while debugging MIPT-MIPS/#276
  • libc++ bugs:
    • PR 35054 ­— missing 'noexcept' specifier for string_view literals (check-in)
  • Clang-Tidy false positives and UX enhancements:
    • PR 35457 — „possible exception“ in constant expression
    • PR 36963 — bitwise assignment operators (&=, |=, ^=, <<=, >>=) should be analyzed
    • PR 36961 — do not blame 1u << 2 for containing a signed integer literal.
    • PR 39770 — fuchsia-multiple-inheritance should not warn on class forward declaration.
    • PR 40599 — do not try to reinvent a constexpr version of #define COMMA ,.
    • PR 40600 — do not try to reinvent a constexpr version of #define STRING(x) # x.
    • PR 40601 — support regexp for NOLINT statements.
    • PR 40604int main(int argc, const char* argv[]) cannot have std::array as an argument.
    • PR 40633std::string is not a magic number.
    • PR 40640 — template instantiations should not expose enums as 'magic numbers'.
    • PR 43109 — do not warn about ODR violation for constexpr template variable.
    • PR 44031 — fuchsia-multiple-inheritance should not warn on template class instantiation.
    • PR 44065 — cplusplus.NewDeleteLeaks should not report on system headers
    • PR 44229 — bugprone-branch-clone false positive with template functions and constexpr

Visual Studio

  • Bug 225040 — False positive on UB right shifting in unreachable code.
  • Bug 451137 — internal compiler error while referencing template variable
  • Bug 457095 — cannot bind temporary int object to an rvalue reference
  • Bug 457098 — extern template instantiation does not work for virtual functions
  • Bug 833637 — ones-propagating right shift is optimized incorrectly. Firstly observed by Maxim Davydov in MIPT-MIPS/#1143
  • Bug 846216 — false positive warning C4297 for constructor

Other

  • We used to build GNU Binutils with more pedantic Clang compiler as a part of continuous integration flow. During the procedure while resolving MIPT-MIPS/#147, a bug in GNU Binutils was found by Kirill Nedostoev. Methodology was extracted to a separate repository to find more bugs in Binutils and Clang.
  • PR libstdc++/82685 — missing 'noexcept' specifier for string_view literals

External pull requests

Clone this wiki locally