This patch corrects commit 165126 by using an integer bit width instead of 
a pointer to a type, in order to remove the uses of getGlobalContext().

Patch by Tyler Nowicki.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165255 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Transforms/Utils/BypassSlowDivision.cpp b/lib/Transforms/Utils/BypassSlowDivision.cpp
index 821b588..bee2f7b 100644
--- a/lib/Transforms/Utils/BypassSlowDivision.cpp
+++ b/lib/Transforms/Utils/BypassSlowDivision.cpp
@@ -221,7 +221,7 @@
 // be profitably bypassed and carried out with a shorter, faster divide.
 bool llvm::bypassSlowDivision(Function &F,
                               Function::iterator &I,
-                              const DenseMap<Type*, Type*> &BypassTypeMap) {
+                              const DenseMap<unsigned int, unsigned int> &BypassWidths) {
   DivCacheTy DivCache;
 
   bool MadeChange = false;
@@ -242,18 +242,17 @@
     if (!J->getType()->isIntegerTy())
       continue;
 
-    // Get same type in global context
+    // Get bitwidth of div/rem instruction
     IntegerType *T = cast<IntegerType>(J->getType());
-    IntegerType *GT = IntegerType::get(getGlobalContext(), T->getBitWidth());
+    int bitwidth = T->getBitWidth();
 
-    // Continue if div/rem type is not bypassed
-    DenseMap<Type *, Type *>::const_iterator BI = BypassTypeMap.find(GT);
-    if (BI == BypassTypeMap.end())
+    // Continue if bitwidth is not bypassed
+    DenseMap<unsigned int, unsigned int>::const_iterator BI = BypassWidths.find(bitwidth);
+    if (BI == BypassWidths.end())
       continue;
 
-    // Get the bypass type in the original context
-    IntegerType *GBT = cast<IntegerType>(BI->second);
-    IntegerType *BT = IntegerType::get(J->getContext(), GBT->getBitWidth());
+    // Get type for div/rem instruction with bypass bitwidth
+    IntegerType *BT = IntegerType::get(J->getContext(), BI->second);
 
     MadeChange |= reuseOrInsertFastDiv(F, I, J, BT, UseDivOp,
                                        UseSignedOp, DivCache);