Skip to content
Snippets Groups Projects
  1. Dec 09, 2019
  2. Dec 05, 2019
  3. Nov 27, 2019
  4. Nov 21, 2019
  5. Nov 20, 2019
  6. Oct 30, 2019
  7. Oct 29, 2019
  8. Oct 27, 2019
    • Kenneth Moreland's avatar
      Try to fix uninitialized anonymous variable warning · 7518d067
      Kenneth Moreland authored
      The code from the previous commit was causing one of the dashboards,
      which is using gcc-7, to produce the following warning:
      
      In file included from ../testing/UnitTestVariant.cxx:11:0:
      ../Variant.h: In function 'void {anonymous}::TestCopyDestroy()':
      ../Variant.h:269:5: warning: '<anonymous>' may be used uninitialized in this function [-Wmaybe-uninitialized]
           this->Storage = std::move(rhs.Storage);
           ^~~~
      
      At best, this warning is not helpful as it does not seem to point to
      anything that could be used uninitialized. At worst, it might be a
      compiler bug. A Google search finds a few similar bugs although none I
      can assert with any confidence of this issue. However, many reported
      bugs and issues point to the use of anonymous namespaces. So, I'm going
      to attempt to fix the problem by removing anonymous namespaces.
      Hopefully it will fix the warning or at least point me to something
      concrete that I can fix.
      7518d067
    • Kenneth Moreland's avatar
      Register Variant as trivially copyable if possible · 5b18ffd7
      Kenneth Moreland authored
      The Variant template can hold any type. If it is holding a type that is
      non-copyable, then it has to make sure that appropriate constructors,
      copiers, movers, and destructors are called.
      
      Previously, these were called even the Variant was holding a trivially
      copyable class because no harm no foul. If you were holding a trivially
      copyable class and did a memcpy, that work work, which should make it
      possible to copy between host and device, right?
      
      In theory yes, but in practice no. The problem is that Cuda is
      outsmarting the code. It is checking that Variant is not trivially-
      copyable by C++ semantics and refusing to push it.
      
      So, change Variant to check to see if all its supported classes are
      trivially copyable. If they are, then it use the default constructors,
      destructors, movers, and copiers so that C++ recognizes it as trivially
      copyable.
      5b18ffd7
  9. Oct 26, 2019
  10. Oct 21, 2019
  11. Oct 17, 2019
  12. Oct 15, 2019
  13. Oct 14, 2019
  14. Oct 11, 2019
  15. Oct 10, 2019
  16. Oct 09, 2019
Loading