Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use std::fill instead of memset.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 29 Sep 2022 15:29:41 +0000 (17:29 +0200)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Thu, 29 Sep 2022 15:32:06 +0000 (17:32 +0200)
It's a bit more C++'ish, and it seems to help to workaround what looks like an
optimization bug in IntelLLVM 2022.2.0 (xbt::dict unit tests are failing).

src/xbt/dict.cpp

index 280d047..6573bb8 100644 (file)
@@ -15,6 +15,7 @@
 #include "xbt/string.hpp"
 #include "xbt/xbt_modinter.h"
 
 #include "xbt/string.hpp"
 #include "xbt/xbt_modinter.h"
 
+#include <algorithm>
 #include <cstdio>
 #include <cstring>
 
 #include <cstdio>
 #include <cstring>
 
@@ -90,7 +91,7 @@ static void xbt_dict_rehash(xbt_dict_t dict)
   unsigned newsize = oldsize * 2;
 
   auto* newtable = static_cast<xbt_dictelm_t*>(xbt_realloc(dict->table, newsize * sizeof(xbt_dictelm_t)));
   unsigned newsize = oldsize * 2;
 
   auto* newtable = static_cast<xbt_dictelm_t*>(xbt_realloc(dict->table, newsize * sizeof(xbt_dictelm_t)));
-  memset(&newtable[oldsize], 0, oldsize * sizeof(xbt_dictelm_t)); /* zero second half */
+  std::fill(newtable + oldsize, newtable + newsize, nullptr); /* zero second half */
   newsize--;
   dict->table_size = newsize;
   dict->table      = newtable;
   newsize--;
   dict->table_size = newsize;
   dict->table      = newtable;