]> granicus.if.org Git - llvm/commitdiff
[cfi] Fixed non-determinism in codegen due to DenseSet iteration order
authorMandeep Singh Grang <mgrang@codeaurora.org>
Wed, 30 Aug 2017 04:47:21 +0000 (04:47 +0000)
committerMandeep Singh Grang <mgrang@codeaurora.org>
Wed, 30 Aug 2017 04:47:21 +0000 (04:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@312098 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Transforms/IPO/CrossDSOCFI.cpp

index 0098b60cb6ac05e3c3bcef797a42248e61a9ca98..7ad5c8c0216f41bf8c357229f80dd9a5f281ca03 100644 (file)
@@ -13,8 +13,8 @@
 //===----------------------------------------------------------------------===//
 
 #include "llvm/Transforms/IPO/CrossDSOCFI.h"
-#include "llvm/ADT/DenseSet.h"
 #include "llvm/ADT/EquivalenceClasses.h"
+#include "llvm/ADT/SetVector.h"
 #include "llvm/ADT/Statistic.h"
 #include "llvm/ADT/Triple.h"
 #include "llvm/IR/Constant.h"
@@ -82,7 +82,7 @@ ConstantInt *CrossDSOCFI::extractNumericTypeId(MDNode *MD) {
 void CrossDSOCFI::buildCFICheck(Module &M) {
   // FIXME: verify that __cfi_check ends up near the end of the code section,
   // but before the jump slots created in LowerTypeTests.
-  llvm::DenseSet<uint64_t> TypeIds;
+  SetVector<uint64_t> TypeIds;
   SmallVector<MDNode *, 2> Types;
   for (GlobalObject &GO : M.global_objects()) {
     Types.clear();