Skip to content

Bugs reported and fixed

Pavel I. Kryukov edited this page Feb 13, 2022 · 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

All bugs are found and reported by Pavel Kryukov, unless mentioned otherwise.

  • Clang++ bugs:
  • libc++ bugs:
    • PR 35054 ­— missing 'noexcept' specifier for string_view literals (check-in)
  • Static Analyzer false positives and UX enhancements:
    • PR 36283 — False positive dead code detection for C++17 structured binding
    • PR 45514 — NewDeleteLeaks reports false positive with shared_ptr
  • 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() 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
    • PR 44816 — bugprone-infinite-loop false positive with CATCH2
    • PR 44977 — hicpp-signed-bitwise.IgnorePositiveIntegerLiterals should be recursive
    • PR 45046 — hicpp-signed-bitwise false positive with byte swapping code
    • PR 45507 — readability-simplify-boolean-expr should not trigger on if statement with initializer
    • PR 46235 — hicpp-use-nullptr does not make sense with spaceship operator

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 not a bug
  • Bug 1662465 — W4100 with concept parameter

LGTM.com/CodeQL

LGTM.com is a great tool to detect possible error. We report false positives:

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