1. 13 Apr, 2021 1 commit
    • Add IntLog2 and use it · fa6e3c27
      David Neto authored
      Replace uses of floating point log2 when we want an integer result from
      an integer operand.  This avoids concerns about accuracy of floating
      point library functions.
  2. 01 Feb, 2021 2 commits
  3. 30 Jan, 2021 1 commit
    • callGraph.push_front -> emplace_front to fix UBSAN · 546f626c
      Gleb Mazovetskiy authored
      UBSAN rightly complains on `push_front` here:
      
          glslang/MachineIndependent/localintermediate.h:100:8: runtime error: load of value 160, which is not a valid value for type 'bool'
          #0 in glslang::TCall::TCall(glslang::TCall&&) glslang/MachineIndependent/localintermediate.h:100
          #1 in void __gnu_cxx::new_allocator<std::_List_node<glslang::TCall> >::construct<glslang::TCall, glslang::TCall>(glslang::TCall*, glslang::TCall&&) /usr/include/c++/10/ext/new_allocator.h:150
          #2 in void std::allocator_traits<std::allocator<std::_List_node<glslang::TCall> > >::construct<glslang::TCall, glslang::TCall>(std::allocator<std::_List_node<glslang::TCall> >&, glslang::TCall*, glslang::TCall&&) /usr/include/c++/10/bits/alloc_traits.h:512
          #3 in std::_List_node<glslang::TCall>* std::__cxx11::list<glslang::TCall, std::allocator<glslang::TCall> >::_M_create_node<glslang::TCall>(glslang::TCall&&) (...)
          #4 in void std::__cxx11::list<glslang::TCall, std::allocator<glslang::TCall> >::_M_insert<glslang::TCall>(std::_List_iterator<glslang::TCall>, glslang::TCall&&) /usr/include/c++/10/bits/stl_list.h:1911
          #5 in std::__cxx11::list<glslang::TCall, std::allocator<glslang::TCall> >::push_front(glslang::TCall&&) /usr/include/c++/10/bits/stl_list.h:1167
          #6 in glslang::TIntermediate::addToCallGraph(TInfoSink&, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, glslang::pool_allocator<char> > const&) glslang/MachineIndependent/Intermediate.cpp:2860
      
      What happens here:
      
      1. TCall's bool fields are not initialized on construction.
      2. `push_front` move the `TCall` passed into it.
      3. The move constructor copies unitialized bool, which may have an
         out-of-range value.
      
      What this fix does:
      
      Calls `emplace_back` to ensure no copy/move constructor is called.
      
      Fixes #2222
      Refs #2112
  4. 29 Jan, 2021 2 commits
  5. 28 Jan, 2021 2 commits
  6. 27 Jan, 2021 1 commit
  7. 26 Jan, 2021 1 commit
  8. 25 Jan, 2021 1 commit
  9. 21 Jan, 2021 1 commit
  10. 20 Jan, 2021 1 commit
  11. 19 Jan, 2021 2 commits
  12. 18 Jan, 2021 1 commit
  13. 15 Jan, 2021 1 commit
  14. 07 Jan, 2021 1 commit
  15. 06 Jan, 2021 2 commits
  16. 05 Jan, 2021 3 commits
  17. 24 Dec, 2020 2 commits
  18. 23 Dec, 2020 1 commit
  19. 18 Dec, 2020 2 commits
  20. 16 Dec, 2020 2 commits
  21. 15 Dec, 2020 5 commits
  22. 12 Dec, 2020 1 commit
  23. 11 Dec, 2020 3 commits
  24. 08 Dec, 2020 1 commit