1 //===-- Local.cpp - Functions to perform local transformations ------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This family of functions perform various local transformations to the
11 // program.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #include "llvm/Transforms/Utils/Local.h"
16 #include "llvm/ADT/DenseMap.h"
17 #include "llvm/ADT/DenseSet.h"
18 #include "llvm/ADT/Hashing.h"
19 #include "llvm/ADT/STLExtras.h"
20 #include "llvm/ADT/SetVector.h"
21 #include "llvm/ADT/SmallPtrSet.h"
22 #include "llvm/ADT/Statistic.h"
23 #include "llvm/Analysis/EHPersonalities.h"
24 #include "llvm/Analysis/InstructionSimplify.h"
25 #include "llvm/Analysis/MemoryBuiltins.h"
26 #include "llvm/Analysis/LazyValueInfo.h"
27 #include "llvm/Analysis/ValueTracking.h"
28 #include "llvm/IR/CFG.h"
29 #include "llvm/IR/Constants.h"
30 #include "llvm/IR/DIBuilder.h"
31 #include "llvm/IR/DataLayout.h"
32 #include "llvm/IR/DebugInfo.h"
33 #include "llvm/IR/DerivedTypes.h"
34 #include "llvm/IR/Dominators.h"
35 #include "llvm/IR/GetElementPtrTypeIterator.h"
36 #include "llvm/IR/GlobalAlias.h"
37 #include "llvm/IR/GlobalVariable.h"
38 #include "llvm/IR/IRBuilder.h"
39 #include "llvm/IR/Instructions.h"
40 #include "llvm/IR/IntrinsicInst.h"
41 #include "llvm/IR/Intrinsics.h"
42 #include "llvm/IR/MDBuilder.h"
43 #include "llvm/IR/Metadata.h"
44 #include "llvm/IR/Operator.h"
45 #include "llvm/IR/PatternMatch.h"
46 #include "llvm/IR/ValueHandle.h"
47 #include "llvm/Support/Debug.h"
48 #include "llvm/Support/MathExtras.h"
49 #include "llvm/Support/raw_ostream.h"
50 using namespace llvm;
51 using namespace llvm::PatternMatch;
52 
53 #define DEBUG_TYPE "local"
54 
55 STATISTIC(NumRemoved, "Number of unreachable basic blocks removed");
56 
57 //===----------------------------------------------------------------------===//
58 //  Local constant propagation.
59 //
60 
61 /// ConstantFoldTerminator - If a terminator instruction is predicated on a
62 /// constant value, convert it into an unconditional branch to the constant
63 /// destination.  This is a nontrivial operation because the successors of this
64 /// basic block must have their PHI nodes updated.
65 /// Also calls RecursivelyDeleteTriviallyDeadInstructions() on any branch/switch
66 /// conditions and indirectbr addresses this might make dead if
67 /// DeleteDeadConditions is true.
68 bool llvm::ConstantFoldTerminator(BasicBlock *BB, bool DeleteDeadConditions,
69                                   const TargetLibraryInfo *TLI) {
70   TerminatorInst *T = BB->getTerminator();
71   IRBuilder<> Builder(T);
72 
73   // Branch - See if we are conditional jumping on constant
74   if (BranchInst *BI = dyn_cast<BranchInst>(T)) {
75     if (BI->isUnconditional()) return false;  // Can't optimize uncond branch
76     BasicBlock *Dest1 = BI->getSuccessor(0);
77     BasicBlock *Dest2 = BI->getSuccessor(1);
78 
79     if (ConstantInt *Cond = dyn_cast<ConstantInt>(BI->getCondition())) {
80       // Are we branching on constant?
81       // YES.  Change to unconditional branch...
82       BasicBlock *Destination = Cond->getZExtValue() ? Dest1 : Dest2;
83       BasicBlock *OldDest     = Cond->getZExtValue() ? Dest2 : Dest1;
84 
85       //cerr << "Function: " << T->getParent()->getParent()
86       //     << "\nRemoving branch from " << T->getParent()
87       //     << "\n\nTo: " << OldDest << endl;
88 
89       // Let the basic block know that we are letting go of it.  Based on this,
90       // it will adjust it's PHI nodes.
91       OldDest->removePredecessor(BB);
92 
93       // Replace the conditional branch with an unconditional one.
94       Builder.CreateBr(Destination);
95       BI->eraseFromParent();
96       return true;
97     }
98 
99     if (Dest2 == Dest1) {       // Conditional branch to same location?
100       // This branch matches something like this:
101       //     br bool %cond, label %Dest, label %Dest
102       // and changes it into:  br label %Dest
103 
104       // Let the basic block know that we are letting go of one copy of it.
105       assert(BI->getParent() && "Terminator not inserted in block!");
106       Dest1->removePredecessor(BI->getParent());
107 
108       // Replace the conditional branch with an unconditional one.
109       Builder.CreateBr(Dest1);
110       Value *Cond = BI->getCondition();
111       BI->eraseFromParent();
112       if (DeleteDeadConditions)
113         RecursivelyDeleteTriviallyDeadInstructions(Cond, TLI);
114       return true;
115     }
116     return false;
117   }
118 
119   if (SwitchInst *SI = dyn_cast<SwitchInst>(T)) {
120     // If we are switching on a constant, we can convert the switch to an
121     // unconditional branch.
122     ConstantInt *CI = dyn_cast<ConstantInt>(SI->getCondition());
123     BasicBlock *DefaultDest = SI->getDefaultDest();
124     BasicBlock *TheOnlyDest = DefaultDest;
125 
126     // If the default is unreachable, ignore it when searching for TheOnlyDest.
127     if (isa<UnreachableInst>(DefaultDest->getFirstNonPHIOrDbg()) &&
128         SI->getNumCases() > 0) {
129       TheOnlyDest = SI->case_begin().getCaseSuccessor();
130     }
131 
132     // Figure out which case it goes to.
133     for (auto i = SI->case_begin(), e = SI->case_end(); i != e;) {
134       // Found case matching a constant operand?
135       if (i.getCaseValue() == CI) {
136         TheOnlyDest = i.getCaseSuccessor();
137         break;
138       }
139 
140       // Check to see if this branch is going to the same place as the default
141       // dest.  If so, eliminate it as an explicit compare.
142       if (i.getCaseSuccessor() == DefaultDest) {
143         MDNode *MD = SI->getMetadata(LLVMContext::MD_prof);
144         unsigned NCases = SI->getNumCases();
145         // Fold the case metadata into the default if there will be any branches
146         // left, unless the metadata doesn't match the switch.
147         if (NCases > 1 && MD && MD->getNumOperands() == 2 + NCases) {
148           // Collect branch weights into a vector.
149           SmallVector<uint32_t, 8> Weights;
150           for (unsigned MD_i = 1, MD_e = MD->getNumOperands(); MD_i < MD_e;
151                ++MD_i) {
152             auto *CI = mdconst::extract<ConstantInt>(MD->getOperand(MD_i));
153             Weights.push_back(CI->getValue().getZExtValue());
154           }
155           // Merge weight of this case to the default weight.
156           unsigned idx = i.getCaseIndex();
157           Weights[0] += Weights[idx+1];
158           // Remove weight for this case.
159           std::swap(Weights[idx+1], Weights.back());
160           Weights.pop_back();
161           SI->setMetadata(LLVMContext::MD_prof,
162                           MDBuilder(BB->getContext()).
163                           createBranchWeights(Weights));
164         }
165         // Remove this entry.
166         DefaultDest->removePredecessor(SI->getParent());
167         i = SI->removeCase(i);
168         e = SI->case_end();
169         continue;
170       }
171 
172       // Otherwise, check to see if the switch only branches to one destination.
173       // We do this by reseting "TheOnlyDest" to null when we find two non-equal
174       // destinations.
175       if (i.getCaseSuccessor() != TheOnlyDest) TheOnlyDest = nullptr;
176 
177       // Increment this iterator as we haven't removed the case.
178       ++i;
179     }
180 
181     if (CI && !TheOnlyDest) {
182       // Branching on a constant, but not any of the cases, go to the default
183       // successor.
184       TheOnlyDest = SI->getDefaultDest();
185     }
186 
187     // If we found a single destination that we can fold the switch into, do so
188     // now.
189     if (TheOnlyDest) {
190       // Insert the new branch.
191       Builder.CreateBr(TheOnlyDest);
192       BasicBlock *BB = SI->getParent();
193 
194       // Remove entries from PHI nodes which we no longer branch to...
195       for (BasicBlock *Succ : SI->successors()) {
196         // Found case matching a constant operand?
197         if (Succ == TheOnlyDest)
198           TheOnlyDest = nullptr; // Don't modify the first branch to TheOnlyDest
199         else
200           Succ->removePredecessor(BB);
201       }
202 
203       // Delete the old switch.
204       Value *Cond = SI->getCondition();
205       SI->eraseFromParent();
206       if (DeleteDeadConditions)
207         RecursivelyDeleteTriviallyDeadInstructions(Cond, TLI);
208       return true;
209     }
210 
211     if (SI->getNumCases() == 1) {
212       // Otherwise, we can fold this switch into a conditional branch
213       // instruction if it has only one non-default destination.
214       SwitchInst::CaseIt FirstCase = SI->case_begin();
215       Value *Cond = Builder.CreateICmpEQ(SI->getCondition(),
216           FirstCase.getCaseValue(), "cond");
217 
218       // Insert the new branch.
219       BranchInst *NewBr = Builder.CreateCondBr(Cond,
220                                                FirstCase.getCaseSuccessor(),
221                                                SI->getDefaultDest());
222       MDNode *MD = SI->getMetadata(LLVMContext::MD_prof);
223       if (MD && MD->getNumOperands() == 3) {
224         ConstantInt *SICase =
225             mdconst::dyn_extract<ConstantInt>(MD->getOperand(2));
226         ConstantInt *SIDef =
227             mdconst::dyn_extract<ConstantInt>(MD->getOperand(1));
228         assert(SICase && SIDef);
229         // The TrueWeight should be the weight for the single case of SI.
230         NewBr->setMetadata(LLVMContext::MD_prof,
231                         MDBuilder(BB->getContext()).
232                         createBranchWeights(SICase->getValue().getZExtValue(),
233                                             SIDef->getValue().getZExtValue()));
234       }
235 
236       // Update make.implicit metadata to the newly-created conditional branch.
237       MDNode *MakeImplicitMD = SI->getMetadata(LLVMContext::MD_make_implicit);
238       if (MakeImplicitMD)
239         NewBr->setMetadata(LLVMContext::MD_make_implicit, MakeImplicitMD);
240 
241       // Delete the old switch.
242       SI->eraseFromParent();
243       return true;
244     }
245     return false;
246   }
247 
248   if (IndirectBrInst *IBI = dyn_cast<IndirectBrInst>(T)) {
249     // indirectbr blockaddress(@F, @BB) -> br label @BB
250     if (BlockAddress *BA =
251           dyn_cast<BlockAddress>(IBI->getAddress()->stripPointerCasts())) {
252       BasicBlock *TheOnlyDest = BA->getBasicBlock();
253       // Insert the new branch.
254       Builder.CreateBr(TheOnlyDest);
255 
256       for (unsigned i = 0, e = IBI->getNumDestinations(); i != e; ++i) {
257         if (IBI->getDestination(i) == TheOnlyDest)
258           TheOnlyDest = nullptr;
259         else
260           IBI->getDestination(i)->removePredecessor(IBI->getParent());
261       }
262       Value *Address = IBI->getAddress();
263       IBI->eraseFromParent();
264       if (DeleteDeadConditions)
265         RecursivelyDeleteTriviallyDeadInstructions(Address, TLI);
266 
267       // If we didn't find our destination in the IBI successor list, then we
268       // have undefined behavior.  Replace the unconditional branch with an
269       // 'unreachable' instruction.
270       if (TheOnlyDest) {
271         BB->getTerminator()->eraseFromParent();
272         new UnreachableInst(BB->getContext(), BB);
273       }
274 
275       return true;
276     }
277   }
278 
279   return false;
280 }
281 
282 
283 //===----------------------------------------------------------------------===//
284 //  Local dead code elimination.
285 //
286 
287 /// isInstructionTriviallyDead - Return true if the result produced by the
288 /// instruction is not used, and the instruction has no side effects.
289 ///
290 bool llvm::isInstructionTriviallyDead(Instruction *I,
291                                       const TargetLibraryInfo *TLI) {
292   if (!I->use_empty())
293     return false;
294   return wouldInstructionBeTriviallyDead(I, TLI);
295 }
296 
297 bool llvm::wouldInstructionBeTriviallyDead(Instruction *I,
298                                            const TargetLibraryInfo *TLI) {
299   if (isa<TerminatorInst>(I))
300     return false;
301 
302   // We don't want the landingpad-like instructions removed by anything this
303   // general.
304   if (I->isEHPad())
305     return false;
306 
307   // We don't want debug info removed by anything this general, unless
308   // debug info is empty.
309   if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(I)) {
310     if (DDI->getAddress())
311       return false;
312     return true;
313   }
314   if (DbgValueInst *DVI = dyn_cast<DbgValueInst>(I)) {
315     if (DVI->getValue())
316       return false;
317     return true;
318   }
319 
320   if (!I->mayHaveSideEffects())
321     return true;
322 
323   // Special case intrinsics that "may have side effects" but can be deleted
324   // when dead.
325   if (IntrinsicInst *II = dyn_cast<IntrinsicInst>(I)) {
326     // Safe to delete llvm.stacksave if dead.
327     if (II->getIntrinsicID() == Intrinsic::stacksave)
328       return true;
329 
330     // Lifetime intrinsics are dead when their right-hand is undef.
331     if (II->getIntrinsicID() == Intrinsic::lifetime_start ||
332         II->getIntrinsicID() == Intrinsic::lifetime_end)
333       return isa<UndefValue>(II->getArgOperand(1));
334 
335     // Assumptions are dead if their condition is trivially true.  Guards on
336     // true are operationally no-ops.  In the future we can consider more
337     // sophisticated tradeoffs for guards considering potential for check
338     // widening, but for now we keep things simple.
339     if (II->getIntrinsicID() == Intrinsic::assume ||
340         II->getIntrinsicID() == Intrinsic::experimental_guard) {
341       if (ConstantInt *Cond = dyn_cast<ConstantInt>(II->getArgOperand(0)))
342         return !Cond->isZero();
343 
344       return false;
345     }
346   }
347 
348   if (isAllocLikeFn(I, TLI))
349     return true;
350 
351   if (CallInst *CI = isFreeCall(I, TLI))
352     if (Constant *C = dyn_cast<Constant>(CI->getArgOperand(0)))
353       return C->isNullValue() || isa<UndefValue>(C);
354 
355   if (CallSite CS = CallSite(I))
356     if (isMathLibCallNoop(CS, TLI))
357       return true;
358 
359   return false;
360 }
361 
362 /// RecursivelyDeleteTriviallyDeadInstructions - If the specified value is a
363 /// trivially dead instruction, delete it.  If that makes any of its operands
364 /// trivially dead, delete them too, recursively.  Return true if any
365 /// instructions were deleted.
366 bool
367 llvm::RecursivelyDeleteTriviallyDeadInstructions(Value *V,
368                                                  const TargetLibraryInfo *TLI) {
369   Instruction *I = dyn_cast<Instruction>(V);
370   if (!I || !I->use_empty() || !isInstructionTriviallyDead(I, TLI))
371     return false;
372 
373   SmallVector<Instruction*, 16> DeadInsts;
374   DeadInsts.push_back(I);
375 
376   do {
377     I = DeadInsts.pop_back_val();
378 
379     // Null out all of the instruction's operands to see if any operand becomes
380     // dead as we go.
381     for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) {
382       Value *OpV = I->getOperand(i);
383       I->setOperand(i, nullptr);
384 
385       if (!OpV->use_empty()) continue;
386 
387       // If the operand is an instruction that became dead as we nulled out the
388       // operand, and if it is 'trivially' dead, delete it in a future loop
389       // iteration.
390       if (Instruction *OpI = dyn_cast<Instruction>(OpV))
391         if (isInstructionTriviallyDead(OpI, TLI))
392           DeadInsts.push_back(OpI);
393     }
394 
395     I->eraseFromParent();
396   } while (!DeadInsts.empty());
397 
398   return true;
399 }
400 
401 /// areAllUsesEqual - Check whether the uses of a value are all the same.
402 /// This is similar to Instruction::hasOneUse() except this will also return
403 /// true when there are no uses or multiple uses that all refer to the same
404 /// value.
405 static bool areAllUsesEqual(Instruction *I) {
406   Value::user_iterator UI = I->user_begin();
407   Value::user_iterator UE = I->user_end();
408   if (UI == UE)
409     return true;
410 
411   User *TheUse = *UI;
412   for (++UI; UI != UE; ++UI) {
413     if (*UI != TheUse)
414       return false;
415   }
416   return true;
417 }
418 
419 /// RecursivelyDeleteDeadPHINode - If the specified value is an effectively
420 /// dead PHI node, due to being a def-use chain of single-use nodes that
421 /// either forms a cycle or is terminated by a trivially dead instruction,
422 /// delete it.  If that makes any of its operands trivially dead, delete them
423 /// too, recursively.  Return true if a change was made.
424 bool llvm::RecursivelyDeleteDeadPHINode(PHINode *PN,
425                                         const TargetLibraryInfo *TLI) {
426   SmallPtrSet<Instruction*, 4> Visited;
427   for (Instruction *I = PN; areAllUsesEqual(I) && !I->mayHaveSideEffects();
428        I = cast<Instruction>(*I->user_begin())) {
429     if (I->use_empty())
430       return RecursivelyDeleteTriviallyDeadInstructions(I, TLI);
431 
432     // If we find an instruction more than once, we're on a cycle that
433     // won't prove fruitful.
434     if (!Visited.insert(I).second) {
435       // Break the cycle and delete the instruction and its operands.
436       I->replaceAllUsesWith(UndefValue::get(I->getType()));
437       (void)RecursivelyDeleteTriviallyDeadInstructions(I, TLI);
438       return true;
439     }
440   }
441   return false;
442 }
443 
444 static bool
445 simplifyAndDCEInstruction(Instruction *I,
446                           SmallSetVector<Instruction *, 16> &WorkList,
447                           const DataLayout &DL,
448                           const TargetLibraryInfo *TLI) {
449   if (isInstructionTriviallyDead(I, TLI)) {
450     // Null out all of the instruction's operands to see if any operand becomes
451     // dead as we go.
452     for (unsigned i = 0, e = I->getNumOperands(); i != e; ++i) {
453       Value *OpV = I->getOperand(i);
454       I->setOperand(i, nullptr);
455 
456       if (!OpV->use_empty() || I == OpV)
457         continue;
458 
459       // If the operand is an instruction that became dead as we nulled out the
460       // operand, and if it is 'trivially' dead, delete it in a future loop
461       // iteration.
462       if (Instruction *OpI = dyn_cast<Instruction>(OpV))
463         if (isInstructionTriviallyDead(OpI, TLI))
464           WorkList.insert(OpI);
465     }
466 
467     I->eraseFromParent();
468 
469     return true;
470   }
471 
472   if (Value *SimpleV = SimplifyInstruction(I, DL)) {
473     // Add the users to the worklist. CAREFUL: an instruction can use itself,
474     // in the case of a phi node.
475     for (User *U : I->users()) {
476       if (U != I) {
477         WorkList.insert(cast<Instruction>(U));
478       }
479     }
480 
481     // Replace the instruction with its simplified value.
482     bool Changed = false;
483     if (!I->use_empty()) {
484       I->replaceAllUsesWith(SimpleV);
485       Changed = true;
486     }
487     if (isInstructionTriviallyDead(I, TLI)) {
488       I->eraseFromParent();
489       Changed = true;
490     }
491     return Changed;
492   }
493   return false;
494 }
495 
496 /// SimplifyInstructionsInBlock - Scan the specified basic block and try to
497 /// simplify any instructions in it and recursively delete dead instructions.
498 ///
499 /// This returns true if it changed the code, note that it can delete
500 /// instructions in other blocks as well in this block.
501 bool llvm::SimplifyInstructionsInBlock(BasicBlock *BB,
502                                        const TargetLibraryInfo *TLI) {
503   bool MadeChange = false;
504   const DataLayout &DL = BB->getModule()->getDataLayout();
505 
506 #ifndef NDEBUG
507   // In debug builds, ensure that the terminator of the block is never replaced
508   // or deleted by these simplifications. The idea of simplification is that it
509   // cannot introduce new instructions, and there is no way to replace the
510   // terminator of a block without introducing a new instruction.
511   AssertingVH<Instruction> TerminatorVH(&BB->back());
512 #endif
513 
514   SmallSetVector<Instruction *, 16> WorkList;
515   // Iterate over the original function, only adding insts to the worklist
516   // if they actually need to be revisited. This avoids having to pre-init
517   // the worklist with the entire function's worth of instructions.
518   for (BasicBlock::iterator BI = BB->begin(), E = std::prev(BB->end());
519        BI != E;) {
520     assert(!BI->isTerminator());
521     Instruction *I = &*BI;
522     ++BI;
523 
524     // We're visiting this instruction now, so make sure it's not in the
525     // worklist from an earlier visit.
526     if (!WorkList.count(I))
527       MadeChange |= simplifyAndDCEInstruction(I, WorkList, DL, TLI);
528   }
529 
530   while (!WorkList.empty()) {
531     Instruction *I = WorkList.pop_back_val();
532     MadeChange |= simplifyAndDCEInstruction(I, WorkList, DL, TLI);
533   }
534   return MadeChange;
535 }
536 
537 //===----------------------------------------------------------------------===//
538 //  Control Flow Graph Restructuring.
539 //
540 
541 
542 /// RemovePredecessorAndSimplify - Like BasicBlock::removePredecessor, this
543 /// method is called when we're about to delete Pred as a predecessor of BB.  If
544 /// BB contains any PHI nodes, this drops the entries in the PHI nodes for Pred.
545 ///
546 /// Unlike the removePredecessor method, this attempts to simplify uses of PHI
547 /// nodes that collapse into identity values.  For example, if we have:
548 ///   x = phi(1, 0, 0, 0)
549 ///   y = and x, z
550 ///
551 /// .. and delete the predecessor corresponding to the '1', this will attempt to
552 /// recursively fold the and to 0.
553 void llvm::RemovePredecessorAndSimplify(BasicBlock *BB, BasicBlock *Pred) {
554   // This only adjusts blocks with PHI nodes.
555   if (!isa<PHINode>(BB->begin()))
556     return;
557 
558   // Remove the entries for Pred from the PHI nodes in BB, but do not simplify
559   // them down.  This will leave us with single entry phi nodes and other phis
560   // that can be removed.
561   BB->removePredecessor(Pred, true);
562 
563   WeakVH PhiIt = &BB->front();
564   while (PHINode *PN = dyn_cast<PHINode>(PhiIt)) {
565     PhiIt = &*++BasicBlock::iterator(cast<Instruction>(PhiIt));
566     Value *OldPhiIt = PhiIt;
567 
568     if (!recursivelySimplifyInstruction(PN))
569       continue;
570 
571     // If recursive simplification ended up deleting the next PHI node we would
572     // iterate to, then our iterator is invalid, restart scanning from the top
573     // of the block.
574     if (PhiIt != OldPhiIt) PhiIt = &BB->front();
575   }
576 }
577 
578 
579 /// MergeBasicBlockIntoOnlyPred - DestBB is a block with one predecessor and its
580 /// predecessor is known to have one successor (DestBB!).  Eliminate the edge
581 /// between them, moving the instructions in the predecessor into DestBB and
582 /// deleting the predecessor block.
583 ///
584 void llvm::MergeBasicBlockIntoOnlyPred(BasicBlock *DestBB, DominatorTree *DT) {
585   // If BB has single-entry PHI nodes, fold them.
586   while (PHINode *PN = dyn_cast<PHINode>(DestBB->begin())) {
587     Value *NewVal = PN->getIncomingValue(0);
588     // Replace self referencing PHI with undef, it must be dead.
589     if (NewVal == PN) NewVal = UndefValue::get(PN->getType());
590     PN->replaceAllUsesWith(NewVal);
591     PN->eraseFromParent();
592   }
593 
594   BasicBlock *PredBB = DestBB->getSinglePredecessor();
595   assert(PredBB && "Block doesn't have a single predecessor!");
596 
597   // Zap anything that took the address of DestBB.  Not doing this will give the
598   // address an invalid value.
599   if (DestBB->hasAddressTaken()) {
600     BlockAddress *BA = BlockAddress::get(DestBB);
601     Constant *Replacement =
602       ConstantInt::get(llvm::Type::getInt32Ty(BA->getContext()), 1);
603     BA->replaceAllUsesWith(ConstantExpr::getIntToPtr(Replacement,
604                                                      BA->getType()));
605     BA->destroyConstant();
606   }
607 
608   // Anything that branched to PredBB now branches to DestBB.
609   PredBB->replaceAllUsesWith(DestBB);
610 
611   // Splice all the instructions from PredBB to DestBB.
612   PredBB->getTerminator()->eraseFromParent();
613   DestBB->getInstList().splice(DestBB->begin(), PredBB->getInstList());
614 
615   // If the PredBB is the entry block of the function, move DestBB up to
616   // become the entry block after we erase PredBB.
617   if (PredBB == &DestBB->getParent()->getEntryBlock())
618     DestBB->moveAfter(PredBB);
619 
620   if (DT) {
621     BasicBlock *PredBBIDom = DT->getNode(PredBB)->getIDom()->getBlock();
622     DT->changeImmediateDominator(DestBB, PredBBIDom);
623     DT->eraseNode(PredBB);
624   }
625   // Nuke BB.
626   PredBB->eraseFromParent();
627 }
628 
629 /// CanMergeValues - Return true if we can choose one of these values to use
630 /// in place of the other. Note that we will always choose the non-undef
631 /// value to keep.
632 static bool CanMergeValues(Value *First, Value *Second) {
633   return First == Second || isa<UndefValue>(First) || isa<UndefValue>(Second);
634 }
635 
636 /// CanPropagatePredecessorsForPHIs - Return true if we can fold BB, an
637 /// almost-empty BB ending in an unconditional branch to Succ, into Succ.
638 ///
639 /// Assumption: Succ is the single successor for BB.
640 ///
641 static bool CanPropagatePredecessorsForPHIs(BasicBlock *BB, BasicBlock *Succ) {
642   assert(*succ_begin(BB) == Succ && "Succ is not successor of BB!");
643 
644   DEBUG(dbgs() << "Looking to fold " << BB->getName() << " into "
645         << Succ->getName() << "\n");
646   // Shortcut, if there is only a single predecessor it must be BB and merging
647   // is always safe
648   if (Succ->getSinglePredecessor()) return true;
649 
650   // Make a list of the predecessors of BB
651   SmallPtrSet<BasicBlock*, 16> BBPreds(pred_begin(BB), pred_end(BB));
652 
653   // Look at all the phi nodes in Succ, to see if they present a conflict when
654   // merging these blocks
655   for (BasicBlock::iterator I = Succ->begin(); isa<PHINode>(I); ++I) {
656     PHINode *PN = cast<PHINode>(I);
657 
658     // If the incoming value from BB is again a PHINode in
659     // BB which has the same incoming value for *PI as PN does, we can
660     // merge the phi nodes and then the blocks can still be merged
661     PHINode *BBPN = dyn_cast<PHINode>(PN->getIncomingValueForBlock(BB));
662     if (BBPN && BBPN->getParent() == BB) {
663       for (unsigned PI = 0, PE = PN->getNumIncomingValues(); PI != PE; ++PI) {
664         BasicBlock *IBB = PN->getIncomingBlock(PI);
665         if (BBPreds.count(IBB) &&
666             !CanMergeValues(BBPN->getIncomingValueForBlock(IBB),
667                             PN->getIncomingValue(PI))) {
668           DEBUG(dbgs() << "Can't fold, phi node " << PN->getName() << " in "
669                 << Succ->getName() << " is conflicting with "
670                 << BBPN->getName() << " with regard to common predecessor "
671                 << IBB->getName() << "\n");
672           return false;
673         }
674       }
675     } else {
676       Value* Val = PN->getIncomingValueForBlock(BB);
677       for (unsigned PI = 0, PE = PN->getNumIncomingValues(); PI != PE; ++PI) {
678         // See if the incoming value for the common predecessor is equal to the
679         // one for BB, in which case this phi node will not prevent the merging
680         // of the block.
681         BasicBlock *IBB = PN->getIncomingBlock(PI);
682         if (BBPreds.count(IBB) &&
683             !CanMergeValues(Val, PN->getIncomingValue(PI))) {
684           DEBUG(dbgs() << "Can't fold, phi node " << PN->getName() << " in "
685                 << Succ->getName() << " is conflicting with regard to common "
686                 << "predecessor " << IBB->getName() << "\n");
687           return false;
688         }
689       }
690     }
691   }
692 
693   return true;
694 }
695 
696 typedef SmallVector<BasicBlock *, 16> PredBlockVector;
697 typedef DenseMap<BasicBlock *, Value *> IncomingValueMap;
698 
699 /// \brief Determines the value to use as the phi node input for a block.
700 ///
701 /// Select between \p OldVal any value that we know flows from \p BB
702 /// to a particular phi on the basis of which one (if either) is not
703 /// undef. Update IncomingValues based on the selected value.
704 ///
705 /// \param OldVal The value we are considering selecting.
706 /// \param BB The block that the value flows in from.
707 /// \param IncomingValues A map from block-to-value for other phi inputs
708 /// that we have examined.
709 ///
710 /// \returns the selected value.
711 static Value *selectIncomingValueForBlock(Value *OldVal, BasicBlock *BB,
712                                           IncomingValueMap &IncomingValues) {
713   if (!isa<UndefValue>(OldVal)) {
714     assert((!IncomingValues.count(BB) ||
715             IncomingValues.find(BB)->second == OldVal) &&
716            "Expected OldVal to match incoming value from BB!");
717 
718     IncomingValues.insert(std::make_pair(BB, OldVal));
719     return OldVal;
720   }
721 
722   IncomingValueMap::const_iterator It = IncomingValues.find(BB);
723   if (It != IncomingValues.end()) return It->second;
724 
725   return OldVal;
726 }
727 
728 /// \brief Create a map from block to value for the operands of a
729 /// given phi.
730 ///
731 /// Create a map from block to value for each non-undef value flowing
732 /// into \p PN.
733 ///
734 /// \param PN The phi we are collecting the map for.
735 /// \param IncomingValues [out] The map from block to value for this phi.
736 static void gatherIncomingValuesToPhi(PHINode *PN,
737                                       IncomingValueMap &IncomingValues) {
738   for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
739     BasicBlock *BB = PN->getIncomingBlock(i);
740     Value *V = PN->getIncomingValue(i);
741 
742     if (!isa<UndefValue>(V))
743       IncomingValues.insert(std::make_pair(BB, V));
744   }
745 }
746 
747 /// \brief Replace the incoming undef values to a phi with the values
748 /// from a block-to-value map.
749 ///
750 /// \param PN The phi we are replacing the undefs in.
751 /// \param IncomingValues A map from block to value.
752 static void replaceUndefValuesInPhi(PHINode *PN,
753                                     const IncomingValueMap &IncomingValues) {
754   for (unsigned i = 0, e = PN->getNumIncomingValues(); i != e; ++i) {
755     Value *V = PN->getIncomingValue(i);
756 
757     if (!isa<UndefValue>(V)) continue;
758 
759     BasicBlock *BB = PN->getIncomingBlock(i);
760     IncomingValueMap::const_iterator It = IncomingValues.find(BB);
761     if (It == IncomingValues.end()) continue;
762 
763     PN->setIncomingValue(i, It->second);
764   }
765 }
766 
767 /// \brief Replace a value flowing from a block to a phi with
768 /// potentially multiple instances of that value flowing from the
769 /// block's predecessors to the phi.
770 ///
771 /// \param BB The block with the value flowing into the phi.
772 /// \param BBPreds The predecessors of BB.
773 /// \param PN The phi that we are updating.
774 static void redirectValuesFromPredecessorsToPhi(BasicBlock *BB,
775                                                 const PredBlockVector &BBPreds,
776                                                 PHINode *PN) {
777   Value *OldVal = PN->removeIncomingValue(BB, false);
778   assert(OldVal && "No entry in PHI for Pred BB!");
779 
780   IncomingValueMap IncomingValues;
781 
782   // We are merging two blocks - BB, and the block containing PN - and
783   // as a result we need to redirect edges from the predecessors of BB
784   // to go to the block containing PN, and update PN
785   // accordingly. Since we allow merging blocks in the case where the
786   // predecessor and successor blocks both share some predecessors,
787   // and where some of those common predecessors might have undef
788   // values flowing into PN, we want to rewrite those values to be
789   // consistent with the non-undef values.
790 
791   gatherIncomingValuesToPhi(PN, IncomingValues);
792 
793   // If this incoming value is one of the PHI nodes in BB, the new entries
794   // in the PHI node are the entries from the old PHI.
795   if (isa<PHINode>(OldVal) && cast<PHINode>(OldVal)->getParent() == BB) {
796     PHINode *OldValPN = cast<PHINode>(OldVal);
797     for (unsigned i = 0, e = OldValPN->getNumIncomingValues(); i != e; ++i) {
798       // Note that, since we are merging phi nodes and BB and Succ might
799       // have common predecessors, we could end up with a phi node with
800       // identical incoming branches. This will be cleaned up later (and
801       // will trigger asserts if we try to clean it up now, without also
802       // simplifying the corresponding conditional branch).
803       BasicBlock *PredBB = OldValPN->getIncomingBlock(i);
804       Value *PredVal = OldValPN->getIncomingValue(i);
805       Value *Selected = selectIncomingValueForBlock(PredVal, PredBB,
806                                                     IncomingValues);
807 
808       // And add a new incoming value for this predecessor for the
809       // newly retargeted branch.
810       PN->addIncoming(Selected, PredBB);
811     }
812   } else {
813     for (unsigned i = 0, e = BBPreds.size(); i != e; ++i) {
814       // Update existing incoming values in PN for this
815       // predecessor of BB.
816       BasicBlock *PredBB = BBPreds[i];
817       Value *Selected = selectIncomingValueForBlock(OldVal, PredBB,
818                                                     IncomingValues);
819 
820       // And add a new incoming value for this predecessor for the
821       // newly retargeted branch.
822       PN->addIncoming(Selected, PredBB);
823     }
824   }
825 
826   replaceUndefValuesInPhi(PN, IncomingValues);
827 }
828 
829 /// TryToSimplifyUncondBranchFromEmptyBlock - BB is known to contain an
830 /// unconditional branch, and contains no instructions other than PHI nodes,
831 /// potential side-effect free intrinsics and the branch.  If possible,
832 /// eliminate BB by rewriting all the predecessors to branch to the successor
833 /// block and return true.  If we can't transform, return false.
834 bool llvm::TryToSimplifyUncondBranchFromEmptyBlock(BasicBlock *BB) {
835   assert(BB != &BB->getParent()->getEntryBlock() &&
836          "TryToSimplifyUncondBranchFromEmptyBlock called on entry block!");
837 
838   // We can't eliminate infinite loops.
839   BasicBlock *Succ = cast<BranchInst>(BB->getTerminator())->getSuccessor(0);
840   if (BB == Succ) return false;
841 
842   // Check to see if merging these blocks would cause conflicts for any of the
843   // phi nodes in BB or Succ. If not, we can safely merge.
844   if (!CanPropagatePredecessorsForPHIs(BB, Succ)) return false;
845 
846   // Check for cases where Succ has multiple predecessors and a PHI node in BB
847   // has uses which will not disappear when the PHI nodes are merged.  It is
848   // possible to handle such cases, but difficult: it requires checking whether
849   // BB dominates Succ, which is non-trivial to calculate in the case where
850   // Succ has multiple predecessors.  Also, it requires checking whether
851   // constructing the necessary self-referential PHI node doesn't introduce any
852   // conflicts; this isn't too difficult, but the previous code for doing this
853   // was incorrect.
854   //
855   // Note that if this check finds a live use, BB dominates Succ, so BB is
856   // something like a loop pre-header (or rarely, a part of an irreducible CFG);
857   // folding the branch isn't profitable in that case anyway.
858   if (!Succ->getSinglePredecessor()) {
859     BasicBlock::iterator BBI = BB->begin();
860     while (isa<PHINode>(*BBI)) {
861       for (Use &U : BBI->uses()) {
862         if (PHINode* PN = dyn_cast<PHINode>(U.getUser())) {
863           if (PN->getIncomingBlock(U) != BB)
864             return false;
865         } else {
866           return false;
867         }
868       }
869       ++BBI;
870     }
871   }
872 
873   DEBUG(dbgs() << "Killing Trivial BB: \n" << *BB);
874 
875   if (isa<PHINode>(Succ->begin())) {
876     // If there is more than one pred of succ, and there are PHI nodes in
877     // the successor, then we need to add incoming edges for the PHI nodes
878     //
879     const PredBlockVector BBPreds(pred_begin(BB), pred_end(BB));
880 
881     // Loop over all of the PHI nodes in the successor of BB.
882     for (BasicBlock::iterator I = Succ->begin(); isa<PHINode>(I); ++I) {
883       PHINode *PN = cast<PHINode>(I);
884 
885       redirectValuesFromPredecessorsToPhi(BB, BBPreds, PN);
886     }
887   }
888 
889   if (Succ->getSinglePredecessor()) {
890     // BB is the only predecessor of Succ, so Succ will end up with exactly
891     // the same predecessors BB had.
892 
893     // Copy over any phi, debug or lifetime instruction.
894     BB->getTerminator()->eraseFromParent();
895     Succ->getInstList().splice(Succ->getFirstNonPHI()->getIterator(),
896                                BB->getInstList());
897   } else {
898     while (PHINode *PN = dyn_cast<PHINode>(&BB->front())) {
899       // We explicitly check for such uses in CanPropagatePredecessorsForPHIs.
900       assert(PN->use_empty() && "There shouldn't be any uses here!");
901       PN->eraseFromParent();
902     }
903   }
904 
905   // If the unconditional branch we replaced contains llvm.loop metadata, we
906   // add the metadata to the branch instructions in the predecessors.
907   unsigned LoopMDKind = BB->getContext().getMDKindID("llvm.loop");
908   Instruction *TI = BB->getTerminator();
909   if (TI)
910     if (MDNode *LoopMD = TI->getMetadata(LoopMDKind))
911       for (pred_iterator PI = pred_begin(BB), E = pred_end(BB); PI != E; ++PI) {
912         BasicBlock *Pred = *PI;
913         Pred->getTerminator()->setMetadata(LoopMDKind, LoopMD);
914       }
915 
916   // Everything that jumped to BB now goes to Succ.
917   BB->replaceAllUsesWith(Succ);
918   if (!Succ->hasName()) Succ->takeName(BB);
919   BB->eraseFromParent();              // Delete the old basic block.
920   return true;
921 }
922 
923 /// EliminateDuplicatePHINodes - Check for and eliminate duplicate PHI
924 /// nodes in this block. This doesn't try to be clever about PHI nodes
925 /// which differ only in the order of the incoming values, but instcombine
926 /// orders them so it usually won't matter.
927 ///
928 bool llvm::EliminateDuplicatePHINodes(BasicBlock *BB) {
929   // This implementation doesn't currently consider undef operands
930   // specially. Theoretically, two phis which are identical except for
931   // one having an undef where the other doesn't could be collapsed.
932 
933   struct PHIDenseMapInfo {
934     static PHINode *getEmptyKey() {
935       return DenseMapInfo<PHINode *>::getEmptyKey();
936     }
937     static PHINode *getTombstoneKey() {
938       return DenseMapInfo<PHINode *>::getTombstoneKey();
939     }
940     static unsigned getHashValue(PHINode *PN) {
941       // Compute a hash value on the operands. Instcombine will likely have
942       // sorted them, which helps expose duplicates, but we have to check all
943       // the operands to be safe in case instcombine hasn't run.
944       return static_cast<unsigned>(hash_combine(
945           hash_combine_range(PN->value_op_begin(), PN->value_op_end()),
946           hash_combine_range(PN->block_begin(), PN->block_end())));
947     }
948     static bool isEqual(PHINode *LHS, PHINode *RHS) {
949       if (LHS == getEmptyKey() || LHS == getTombstoneKey() ||
950           RHS == getEmptyKey() || RHS == getTombstoneKey())
951         return LHS == RHS;
952       return LHS->isIdenticalTo(RHS);
953     }
954   };
955 
956   // Set of unique PHINodes.
957   DenseSet<PHINode *, PHIDenseMapInfo> PHISet;
958 
959   // Examine each PHI.
960   bool Changed = false;
961   for (auto I = BB->begin(); PHINode *PN = dyn_cast<PHINode>(I++);) {
962     auto Inserted = PHISet.insert(PN);
963     if (!Inserted.second) {
964       // A duplicate. Replace this PHI with its duplicate.
965       PN->replaceAllUsesWith(*Inserted.first);
966       PN->eraseFromParent();
967       Changed = true;
968 
969       // The RAUW can change PHIs that we already visited. Start over from the
970       // beginning.
971       PHISet.clear();
972       I = BB->begin();
973     }
974   }
975 
976   return Changed;
977 }
978 
979 /// enforceKnownAlignment - If the specified pointer points to an object that
980 /// we control, modify the object's alignment to PrefAlign. This isn't
981 /// often possible though. If alignment is important, a more reliable approach
982 /// is to simply align all global variables and allocation instructions to
983 /// their preferred alignment from the beginning.
984 ///
985 static unsigned enforceKnownAlignment(Value *V, unsigned Align,
986                                       unsigned PrefAlign,
987                                       const DataLayout &DL) {
988   assert(PrefAlign > Align);
989 
990   V = V->stripPointerCasts();
991 
992   if (AllocaInst *AI = dyn_cast<AllocaInst>(V)) {
993     // TODO: ideally, computeKnownBits ought to have used
994     // AllocaInst::getAlignment() in its computation already, making
995     // the below max redundant. But, as it turns out,
996     // stripPointerCasts recurses through infinite layers of bitcasts,
997     // while computeKnownBits is not allowed to traverse more than 6
998     // levels.
999     Align = std::max(AI->getAlignment(), Align);
1000     if (PrefAlign <= Align)
1001       return Align;
1002 
1003     // If the preferred alignment is greater than the natural stack alignment
1004     // then don't round up. This avoids dynamic stack realignment.
1005     if (DL.exceedsNaturalStackAlignment(PrefAlign))
1006       return Align;
1007     AI->setAlignment(PrefAlign);
1008     return PrefAlign;
1009   }
1010 
1011   if (auto *GO = dyn_cast<GlobalObject>(V)) {
1012     // TODO: as above, this shouldn't be necessary.
1013     Align = std::max(GO->getAlignment(), Align);
1014     if (PrefAlign <= Align)
1015       return Align;
1016 
1017     // If there is a large requested alignment and we can, bump up the alignment
1018     // of the global.  If the memory we set aside for the global may not be the
1019     // memory used by the final program then it is impossible for us to reliably
1020     // enforce the preferred alignment.
1021     if (!GO->canIncreaseAlignment())
1022       return Align;
1023 
1024     GO->setAlignment(PrefAlign);
1025     return PrefAlign;
1026   }
1027 
1028   return Align;
1029 }
1030 
1031 unsigned llvm::getOrEnforceKnownAlignment(Value *V, unsigned PrefAlign,
1032                                           const DataLayout &DL,
1033                                           const Instruction *CxtI,
1034                                           AssumptionCache *AC,
1035                                           const DominatorTree *DT) {
1036   assert(V->getType()->isPointerTy() &&
1037          "getOrEnforceKnownAlignment expects a pointer!");
1038   unsigned BitWidth = DL.getPointerTypeSizeInBits(V->getType());
1039 
1040   APInt KnownZero(BitWidth, 0), KnownOne(BitWidth, 0);
1041   computeKnownBits(V, KnownZero, KnownOne, DL, 0, AC, CxtI, DT);
1042   unsigned TrailZ = KnownZero.countTrailingOnes();
1043 
1044   // Avoid trouble with ridiculously large TrailZ values, such as
1045   // those computed from a null pointer.
1046   TrailZ = std::min(TrailZ, unsigned(sizeof(unsigned) * CHAR_BIT - 1));
1047 
1048   unsigned Align = 1u << std::min(BitWidth - 1, TrailZ);
1049 
1050   // LLVM doesn't support alignments larger than this currently.
1051   Align = std::min(Align, +Value::MaximumAlignment);
1052 
1053   if (PrefAlign > Align)
1054     Align = enforceKnownAlignment(V, Align, PrefAlign, DL);
1055 
1056   // We don't need to make any adjustment.
1057   return Align;
1058 }
1059 
1060 ///===---------------------------------------------------------------------===//
1061 ///  Dbg Intrinsic utilities
1062 ///
1063 
1064 /// See if there is a dbg.value intrinsic for DIVar before I.
1065 static bool LdStHasDebugValue(DILocalVariable *DIVar, DIExpression *DIExpr,
1066                               Instruction *I) {
1067   // Since we can't guarantee that the original dbg.declare instrinsic
1068   // is removed by LowerDbgDeclare(), we need to make sure that we are
1069   // not inserting the same dbg.value intrinsic over and over.
1070   llvm::BasicBlock::InstListType::iterator PrevI(I);
1071   if (PrevI != I->getParent()->getInstList().begin()) {
1072     --PrevI;
1073     if (DbgValueInst *DVI = dyn_cast<DbgValueInst>(PrevI))
1074       if (DVI->getValue() == I->getOperand(0) &&
1075           DVI->getOffset() == 0 &&
1076           DVI->getVariable() == DIVar &&
1077           DVI->getExpression() == DIExpr)
1078         return true;
1079   }
1080   return false;
1081 }
1082 
1083 /// See if there is a dbg.value intrinsic for DIVar for the PHI node.
1084 static bool PhiHasDebugValue(DILocalVariable *DIVar,
1085                              DIExpression *DIExpr,
1086                              PHINode *APN) {
1087   // Since we can't guarantee that the original dbg.declare instrinsic
1088   // is removed by LowerDbgDeclare(), we need to make sure that we are
1089   // not inserting the same dbg.value intrinsic over and over.
1090   SmallVector<DbgValueInst *, 1> DbgValues;
1091   findDbgValues(DbgValues, APN);
1092   for (auto *DVI : DbgValues) {
1093     assert(DVI->getValue() == APN);
1094     assert(DVI->getOffset() == 0);
1095     if ((DVI->getVariable() == DIVar) && (DVI->getExpression() == DIExpr))
1096       return true;
1097   }
1098   return false;
1099 }
1100 
1101 /// Inserts a llvm.dbg.value intrinsic before a store to an alloca'd value
1102 /// that has an associated llvm.dbg.decl intrinsic.
1103 void llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
1104                                            StoreInst *SI, DIBuilder &Builder) {
1105   auto *DIVar = DDI->getVariable();
1106   auto *DIExpr = DDI->getExpression();
1107   assert(DIVar && "Missing variable");
1108 
1109   // If an argument is zero extended then use argument directly. The ZExt
1110   // may be zapped by an optimization pass in future.
1111   Argument *ExtendedArg = nullptr;
1112   if (ZExtInst *ZExt = dyn_cast<ZExtInst>(SI->getOperand(0)))
1113     ExtendedArg = dyn_cast<Argument>(ZExt->getOperand(0));
1114   if (SExtInst *SExt = dyn_cast<SExtInst>(SI->getOperand(0)))
1115     ExtendedArg = dyn_cast<Argument>(SExt->getOperand(0));
1116   if (ExtendedArg) {
1117     // We're now only describing a subset of the variable. The fragment we're
1118     // describing will always be smaller than the variable size, because
1119     // VariableSize == Size of Alloca described by DDI. Since SI stores
1120     // to the alloca described by DDI, if it's first operand is an extend,
1121     // we're guaranteed that before extension, the value was narrower than
1122     // the size of the alloca, hence the size of the described variable.
1123     SmallVector<uint64_t, 3> Ops;
1124     unsigned FragmentOffset = 0;
1125     // If this already is a bit fragment, we drop the bit fragment from the
1126     // expression and record the offset.
1127     auto Fragment = DIExpr->getFragmentInfo();
1128     if (Fragment) {
1129       Ops.append(DIExpr->elements_begin(), DIExpr->elements_end()-3);
1130       FragmentOffset = Fragment->OffsetInBits;
1131     } else {
1132       Ops.append(DIExpr->elements_begin(), DIExpr->elements_end());
1133     }
1134     Ops.push_back(dwarf::DW_OP_LLVM_fragment);
1135     Ops.push_back(FragmentOffset);
1136     const DataLayout &DL = DDI->getModule()->getDataLayout();
1137     Ops.push_back(DL.getTypeSizeInBits(ExtendedArg->getType()));
1138     auto NewDIExpr = Builder.createExpression(Ops);
1139     if (!LdStHasDebugValue(DIVar, NewDIExpr, SI))
1140       Builder.insertDbgValueIntrinsic(ExtendedArg, 0, DIVar, NewDIExpr,
1141                                       DDI->getDebugLoc(), SI);
1142   } else if (!LdStHasDebugValue(DIVar, DIExpr, SI))
1143     Builder.insertDbgValueIntrinsic(SI->getOperand(0), 0, DIVar, DIExpr,
1144                                     DDI->getDebugLoc(), SI);
1145 }
1146 
1147 /// Inserts a llvm.dbg.value intrinsic before a load of an alloca'd value
1148 /// that has an associated llvm.dbg.decl intrinsic.
1149 void llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
1150                                            LoadInst *LI, DIBuilder &Builder) {
1151   auto *DIVar = DDI->getVariable();
1152   auto *DIExpr = DDI->getExpression();
1153   assert(DIVar && "Missing variable");
1154 
1155   if (LdStHasDebugValue(DIVar, DIExpr, LI))
1156     return;
1157 
1158   // We are now tracking the loaded value instead of the address. In the
1159   // future if multi-location support is added to the IR, it might be
1160   // preferable to keep tracking both the loaded value and the original
1161   // address in case the alloca can not be elided.
1162   Instruction *DbgValue = Builder.insertDbgValueIntrinsic(
1163       LI, 0, DIVar, DIExpr, DDI->getDebugLoc(), (Instruction *)nullptr);
1164   DbgValue->insertAfter(LI);
1165 }
1166 
1167 /// Inserts a llvm.dbg.value intrinsic after a phi
1168 /// that has an associated llvm.dbg.decl intrinsic.
1169 void llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
1170                                            PHINode *APN, DIBuilder &Builder) {
1171   auto *DIVar = DDI->getVariable();
1172   auto *DIExpr = DDI->getExpression();
1173   assert(DIVar && "Missing variable");
1174 
1175   if (PhiHasDebugValue(DIVar, DIExpr, APN))
1176     return;
1177 
1178   BasicBlock *BB = APN->getParent();
1179   auto InsertionPt = BB->getFirstInsertionPt();
1180 
1181   // The block may be a catchswitch block, which does not have a valid
1182   // insertion point.
1183   // FIXME: Insert dbg.value markers in the successors when appropriate.
1184   if (InsertionPt != BB->end())
1185     Builder.insertDbgValueIntrinsic(APN, 0, DIVar, DIExpr, DDI->getDebugLoc(),
1186                                     &*InsertionPt);
1187 }
1188 
1189 /// Determine whether this alloca is either a VLA or an array.
1190 static bool isArray(AllocaInst *AI) {
1191   return AI->isArrayAllocation() ||
1192     AI->getType()->getElementType()->isArrayTy();
1193 }
1194 
1195 /// LowerDbgDeclare - Lowers llvm.dbg.declare intrinsics into appropriate set
1196 /// of llvm.dbg.value intrinsics.
1197 bool llvm::LowerDbgDeclare(Function &F) {
1198   DIBuilder DIB(*F.getParent(), /*AllowUnresolved*/ false);
1199   SmallVector<DbgDeclareInst *, 4> Dbgs;
1200   for (auto &FI : F)
1201     for (Instruction &BI : FI)
1202       if (auto DDI = dyn_cast<DbgDeclareInst>(&BI))
1203         Dbgs.push_back(DDI);
1204 
1205   if (Dbgs.empty())
1206     return false;
1207 
1208   for (auto &I : Dbgs) {
1209     DbgDeclareInst *DDI = I;
1210     AllocaInst *AI = dyn_cast_or_null<AllocaInst>(DDI->getAddress());
1211     // If this is an alloca for a scalar variable, insert a dbg.value
1212     // at each load and store to the alloca and erase the dbg.declare.
1213     // The dbg.values allow tracking a variable even if it is not
1214     // stored on the stack, while the dbg.declare can only describe
1215     // the stack slot (and at a lexical-scope granularity). Later
1216     // passes will attempt to elide the stack slot.
1217     if (AI && !isArray(AI)) {
1218       for (auto &AIUse : AI->uses()) {
1219         User *U = AIUse.getUser();
1220         if (StoreInst *SI = dyn_cast<StoreInst>(U)) {
1221           if (AIUse.getOperandNo() == 1)
1222             ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
1223         } else if (LoadInst *LI = dyn_cast<LoadInst>(U)) {
1224           ConvertDebugDeclareToDebugValue(DDI, LI, DIB);
1225         } else if (CallInst *CI = dyn_cast<CallInst>(U)) {
1226           // This is a call by-value or some other instruction that
1227           // takes a pointer to the variable. Insert a *value*
1228           // intrinsic that describes the alloca.
1229           SmallVector<uint64_t, 1> NewDIExpr;
1230           auto *DIExpr = DDI->getExpression();
1231           NewDIExpr.push_back(dwarf::DW_OP_deref);
1232           NewDIExpr.append(DIExpr->elements_begin(), DIExpr->elements_end());
1233           DIB.insertDbgValueIntrinsic(AI, 0, DDI->getVariable(),
1234                                       DIB.createExpression(NewDIExpr),
1235                                       DDI->getDebugLoc(), CI);
1236         }
1237       }
1238       DDI->eraseFromParent();
1239     }
1240   }
1241   return true;
1242 }
1243 
1244 /// FindAllocaDbgDeclare - Finds the llvm.dbg.declare intrinsic describing the
1245 /// alloca 'V', if any.
1246 DbgDeclareInst *llvm::FindAllocaDbgDeclare(Value *V) {
1247   if (auto *L = LocalAsMetadata::getIfExists(V))
1248     if (auto *MDV = MetadataAsValue::getIfExists(V->getContext(), L))
1249       for (User *U : MDV->users())
1250         if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(U))
1251           return DDI;
1252 
1253   return nullptr;
1254 }
1255 
1256 void llvm::findDbgValues(SmallVectorImpl<DbgValueInst *> &DbgValues, Value *V) {
1257   if (auto *L = LocalAsMetadata::getIfExists(V))
1258     if (auto *MDV = MetadataAsValue::getIfExists(V->getContext(), L))
1259       for (User *U : MDV->users())
1260         if (DbgValueInst *DVI = dyn_cast<DbgValueInst>(U))
1261           DbgValues.push_back(DVI);
1262 }
1263 
1264 static void appendOffset(SmallVectorImpl<uint64_t> &Ops, int64_t Offset) {
1265   if (Offset > 0) {
1266     Ops.push_back(dwarf::DW_OP_plus);
1267     Ops.push_back(Offset);
1268   } else if (Offset < 0) {
1269     Ops.push_back(dwarf::DW_OP_minus);
1270     Ops.push_back(-Offset);
1271   }
1272 }
1273 
1274 /// Prepend \p DIExpr with a deref and offset operation.
1275 static DIExpression *prependDIExpr(DIBuilder &Builder, DIExpression *DIExpr,
1276                                    bool Deref, int64_t Offset) {
1277   if (!Deref && !Offset)
1278     return DIExpr;
1279   // Create a copy of the original DIDescriptor for user variable, prepending
1280   // "deref" operation to a list of address elements, as new llvm.dbg.declare
1281   // will take a value storing address of the memory for variable, not
1282   // alloca itself.
1283   SmallVector<uint64_t, 4> Ops;
1284   if (Deref)
1285     Ops.push_back(dwarf::DW_OP_deref);
1286   appendOffset(Ops, Offset);
1287   if (DIExpr)
1288     Ops.append(DIExpr->elements_begin(), DIExpr->elements_end());
1289   return Builder.createExpression(Ops);
1290 }
1291 
1292 bool llvm::replaceDbgDeclare(Value *Address, Value *NewAddress,
1293                              Instruction *InsertBefore, DIBuilder &Builder,
1294                              bool Deref, int Offset) {
1295   DbgDeclareInst *DDI = FindAllocaDbgDeclare(Address);
1296   if (!DDI)
1297     return false;
1298   DebugLoc Loc = DDI->getDebugLoc();
1299   auto *DIVar = DDI->getVariable();
1300   auto *DIExpr = DDI->getExpression();
1301   assert(DIVar && "Missing variable");
1302 
1303   DIExpr = prependDIExpr(Builder, DIExpr, Deref, Offset);
1304 
1305   // Insert llvm.dbg.declare immediately after the original alloca, and remove
1306   // old llvm.dbg.declare.
1307   Builder.insertDeclare(NewAddress, DIVar, DIExpr, Loc, InsertBefore);
1308   DDI->eraseFromParent();
1309   return true;
1310 }
1311 
1312 bool llvm::replaceDbgDeclareForAlloca(AllocaInst *AI, Value *NewAllocaAddress,
1313                                       DIBuilder &Builder, bool Deref, int Offset) {
1314   return replaceDbgDeclare(AI, NewAllocaAddress, AI->getNextNode(), Builder,
1315                            Deref, Offset);
1316 }
1317 
1318 static void replaceOneDbgValueForAlloca(DbgValueInst *DVI, Value *NewAddress,
1319                                         DIBuilder &Builder, int Offset) {
1320   DebugLoc Loc = DVI->getDebugLoc();
1321   auto *DIVar = DVI->getVariable();
1322   auto *DIExpr = DVI->getExpression();
1323   assert(DIVar && "Missing variable");
1324 
1325   // This is an alloca-based llvm.dbg.value. The first thing it should do with
1326   // the alloca pointer is dereference it. Otherwise we don't know how to handle
1327   // it and give up.
1328   if (!DIExpr || DIExpr->getNumElements() < 1 ||
1329       DIExpr->getElement(0) != dwarf::DW_OP_deref)
1330     return;
1331 
1332   // Insert the offset immediately after the first deref.
1333   // We could just change the offset argument of dbg.value, but it's unsigned...
1334   if (Offset) {
1335     SmallVector<uint64_t, 4> Ops;
1336     Ops.push_back(dwarf::DW_OP_deref);
1337     appendOffset(Ops, Offset);
1338     Ops.append(DIExpr->elements_begin() + 1, DIExpr->elements_end());
1339     DIExpr = Builder.createExpression(Ops);
1340   }
1341 
1342   Builder.insertDbgValueIntrinsic(NewAddress, DVI->getOffset(), DIVar, DIExpr,
1343                                   Loc, DVI);
1344   DVI->eraseFromParent();
1345 }
1346 
1347 void llvm::replaceDbgValueForAlloca(AllocaInst *AI, Value *NewAllocaAddress,
1348                                     DIBuilder &Builder, int Offset) {
1349   if (auto *L = LocalAsMetadata::getIfExists(AI))
1350     if (auto *MDV = MetadataAsValue::getIfExists(AI->getContext(), L))
1351       for (auto UI = MDV->use_begin(), UE = MDV->use_end(); UI != UE;) {
1352         Use &U = *UI++;
1353         if (auto *DVI = dyn_cast<DbgValueInst>(U.getUser()))
1354           replaceOneDbgValueForAlloca(DVI, NewAllocaAddress, Builder, Offset);
1355       }
1356 }
1357 
1358 void llvm::salvageDebugInfo(Instruction &I) {
1359   SmallVector<DbgValueInst *, 1> DbgValues;
1360   auto &M = *I.getModule();
1361 
1362   auto MDWrap = [&](Value *V) {
1363     return MetadataAsValue::get(I.getContext(), ValueAsMetadata::get(V));
1364   };
1365 
1366   if (isa<BitCastInst>(&I)) {
1367     findDbgValues(DbgValues, &I);
1368     for (auto *DVI : DbgValues) {
1369       // Bitcasts are entirely irrelevant for debug info. Rewrite the dbg.value
1370       // to use the cast's source.
1371       DVI->setOperand(0, MDWrap(I.getOperand(0)));
1372       DEBUG(dbgs() << "SALVAGE: " << *DVI << '\n');
1373     }
1374   } else if (auto *GEP = dyn_cast<GetElementPtrInst>(&I)) {
1375     findDbgValues(DbgValues, &I);
1376     for (auto *DVI : DbgValues) {
1377       unsigned BitWidth =
1378           M.getDataLayout().getPointerSizeInBits(GEP->getPointerAddressSpace());
1379       APInt Offset(BitWidth, 0);
1380       // Rewrite a constant GEP into a DIExpression.
1381       if (GEP->accumulateConstantOffset(M.getDataLayout(), Offset)) {
1382         auto *DIExpr = DVI->getExpression();
1383         DIBuilder DIB(M, /*AllowUnresolved*/ false);
1384         // GEP offsets are i32 and thus alwaus fit into an int64_t.
1385         DIExpr = prependDIExpr(DIB, DIExpr, NoDeref, Offset.getSExtValue());
1386         DVI->setOperand(0, MDWrap(I.getOperand(0)));
1387         DVI->setOperand(3, MetadataAsValue::get(I.getContext(), DIExpr));
1388         DEBUG(dbgs() << "SALVAGE: " << *DVI << '\n');
1389       }
1390     }
1391   } else if (isa<LoadInst>(&I)) {
1392     findDbgValues(DbgValues, &I);
1393     for (auto *DVI : DbgValues) {
1394       // Rewrite the load into DW_OP_deref.
1395       auto *DIExpr = DVI->getExpression();
1396       DIBuilder DIB(M, /*AllowUnresolved*/ false);
1397       DIExpr = prependDIExpr(DIB, DIExpr, WithDeref, 0);
1398       DVI->setOperand(0, MDWrap(I.getOperand(0)));
1399       DVI->setOperand(3, MetadataAsValue::get(I.getContext(), DIExpr));
1400       DEBUG(dbgs() << "SALVAGE:  " << *DVI << '\n');
1401     }
1402   }
1403 }
1404 
1405 unsigned llvm::removeAllNonTerminatorAndEHPadInstructions(BasicBlock *BB) {
1406   unsigned NumDeadInst = 0;
1407   // Delete the instructions backwards, as it has a reduced likelihood of
1408   // having to update as many def-use and use-def chains.
1409   Instruction *EndInst = BB->getTerminator(); // Last not to be deleted.
1410   while (EndInst != &BB->front()) {
1411     // Delete the next to last instruction.
1412     Instruction *Inst = &*--EndInst->getIterator();
1413     if (!Inst->use_empty() && !Inst->getType()->isTokenTy())
1414       Inst->replaceAllUsesWith(UndefValue::get(Inst->getType()));
1415     if (Inst->isEHPad() || Inst->getType()->isTokenTy()) {
1416       EndInst = Inst;
1417       continue;
1418     }
1419     if (!isa<DbgInfoIntrinsic>(Inst))
1420       ++NumDeadInst;
1421     Inst->eraseFromParent();
1422   }
1423   return NumDeadInst;
1424 }
1425 
1426 unsigned llvm::changeToUnreachable(Instruction *I, bool UseLLVMTrap,
1427                                    bool PreserveLCSSA) {
1428   BasicBlock *BB = I->getParent();
1429   // Loop over all of the successors, removing BB's entry from any PHI
1430   // nodes.
1431   for (BasicBlock *Successor : successors(BB))
1432     Successor->removePredecessor(BB, PreserveLCSSA);
1433 
1434   // Insert a call to llvm.trap right before this.  This turns the undefined
1435   // behavior into a hard fail instead of falling through into random code.
1436   if (UseLLVMTrap) {
1437     Function *TrapFn =
1438       Intrinsic::getDeclaration(BB->getParent()->getParent(), Intrinsic::trap);
1439     CallInst *CallTrap = CallInst::Create(TrapFn, "", I);
1440     CallTrap->setDebugLoc(I->getDebugLoc());
1441   }
1442   new UnreachableInst(I->getContext(), I);
1443 
1444   // All instructions after this are dead.
1445   unsigned NumInstrsRemoved = 0;
1446   BasicBlock::iterator BBI = I->getIterator(), BBE = BB->end();
1447   while (BBI != BBE) {
1448     if (!BBI->use_empty())
1449       BBI->replaceAllUsesWith(UndefValue::get(BBI->getType()));
1450     BB->getInstList().erase(BBI++);
1451     ++NumInstrsRemoved;
1452   }
1453   return NumInstrsRemoved;
1454 }
1455 
1456 /// changeToCall - Convert the specified invoke into a normal call.
1457 static void changeToCall(InvokeInst *II) {
1458   SmallVector<Value*, 8> Args(II->arg_begin(), II->arg_end());
1459   SmallVector<OperandBundleDef, 1> OpBundles;
1460   II->getOperandBundlesAsDefs(OpBundles);
1461   CallInst *NewCall = CallInst::Create(II->getCalledValue(), Args, OpBundles,
1462                                        "", II);
1463   NewCall->takeName(II);
1464   NewCall->setCallingConv(II->getCallingConv());
1465   NewCall->setAttributes(II->getAttributes());
1466   NewCall->setDebugLoc(II->getDebugLoc());
1467   II->replaceAllUsesWith(NewCall);
1468 
1469   // Follow the call by a branch to the normal destination.
1470   BranchInst::Create(II->getNormalDest(), II);
1471 
1472   // Update PHI nodes in the unwind destination
1473   II->getUnwindDest()->removePredecessor(II->getParent());
1474   II->eraseFromParent();
1475 }
1476 
1477 BasicBlock *llvm::changeToInvokeAndSplitBasicBlock(CallInst *CI,
1478                                                    BasicBlock *UnwindEdge) {
1479   BasicBlock *BB = CI->getParent();
1480 
1481   // Convert this function call into an invoke instruction.  First, split the
1482   // basic block.
1483   BasicBlock *Split =
1484       BB->splitBasicBlock(CI->getIterator(), CI->getName() + ".noexc");
1485 
1486   // Delete the unconditional branch inserted by splitBasicBlock
1487   BB->getInstList().pop_back();
1488 
1489   // Create the new invoke instruction.
1490   SmallVector<Value *, 8> InvokeArgs(CI->arg_begin(), CI->arg_end());
1491   SmallVector<OperandBundleDef, 1> OpBundles;
1492 
1493   CI->getOperandBundlesAsDefs(OpBundles);
1494 
1495   // Note: we're round tripping operand bundles through memory here, and that
1496   // can potentially be avoided with a cleverer API design that we do not have
1497   // as of this time.
1498 
1499   InvokeInst *II = InvokeInst::Create(CI->getCalledValue(), Split, UnwindEdge,
1500                                       InvokeArgs, OpBundles, CI->getName(), BB);
1501   II->setDebugLoc(CI->getDebugLoc());
1502   II->setCallingConv(CI->getCallingConv());
1503   II->setAttributes(CI->getAttributes());
1504 
1505   // Make sure that anything using the call now uses the invoke!  This also
1506   // updates the CallGraph if present, because it uses a WeakVH.
1507   CI->replaceAllUsesWith(II);
1508 
1509   // Delete the original call
1510   Split->getInstList().pop_front();
1511   return Split;
1512 }
1513 
1514 static bool markAliveBlocks(Function &F,
1515                             SmallPtrSetImpl<BasicBlock*> &Reachable) {
1516 
1517   SmallVector<BasicBlock*, 128> Worklist;
1518   BasicBlock *BB = &F.front();
1519   Worklist.push_back(BB);
1520   Reachable.insert(BB);
1521   bool Changed = false;
1522   do {
1523     BB = Worklist.pop_back_val();
1524 
1525     // Do a quick scan of the basic block, turning any obviously unreachable
1526     // instructions into LLVM unreachable insts.  The instruction combining pass
1527     // canonicalizes unreachable insts into stores to null or undef.
1528     for (Instruction &I : *BB) {
1529       // Assumptions that are known to be false are equivalent to unreachable.
1530       // Also, if the condition is undefined, then we make the choice most
1531       // beneficial to the optimizer, and choose that to also be unreachable.
1532       if (auto *II = dyn_cast<IntrinsicInst>(&I)) {
1533         if (II->getIntrinsicID() == Intrinsic::assume) {
1534           if (match(II->getArgOperand(0), m_CombineOr(m_Zero(), m_Undef()))) {
1535             // Don't insert a call to llvm.trap right before the unreachable.
1536             changeToUnreachable(II, false);
1537             Changed = true;
1538             break;
1539           }
1540         }
1541 
1542         if (II->getIntrinsicID() == Intrinsic::experimental_guard) {
1543           // A call to the guard intrinsic bails out of the current compilation
1544           // unit if the predicate passed to it is false.  If the predicate is a
1545           // constant false, then we know the guard will bail out of the current
1546           // compile unconditionally, so all code following it is dead.
1547           //
1548           // Note: unlike in llvm.assume, it is not "obviously profitable" for
1549           // guards to treat `undef` as `false` since a guard on `undef` can
1550           // still be useful for widening.
1551           if (match(II->getArgOperand(0), m_Zero()))
1552             if (!isa<UnreachableInst>(II->getNextNode())) {
1553               changeToUnreachable(II->getNextNode(), /*UseLLVMTrap=*/ false);
1554               Changed = true;
1555               break;
1556             }
1557         }
1558       }
1559 
1560       if (auto *CI = dyn_cast<CallInst>(&I)) {
1561         Value *Callee = CI->getCalledValue();
1562         if (isa<ConstantPointerNull>(Callee) || isa<UndefValue>(Callee)) {
1563           changeToUnreachable(CI, /*UseLLVMTrap=*/false);
1564           Changed = true;
1565           break;
1566         }
1567         if (CI->doesNotReturn()) {
1568           // If we found a call to a no-return function, insert an unreachable
1569           // instruction after it.  Make sure there isn't *already* one there
1570           // though.
1571           if (!isa<UnreachableInst>(CI->getNextNode())) {
1572             // Don't insert a call to llvm.trap right before the unreachable.
1573             changeToUnreachable(CI->getNextNode(), false);
1574             Changed = true;
1575           }
1576           break;
1577         }
1578       }
1579 
1580       // Store to undef and store to null are undefined and used to signal that
1581       // they should be changed to unreachable by passes that can't modify the
1582       // CFG.
1583       if (auto *SI = dyn_cast<StoreInst>(&I)) {
1584         // Don't touch volatile stores.
1585         if (SI->isVolatile()) continue;
1586 
1587         Value *Ptr = SI->getOperand(1);
1588 
1589         if (isa<UndefValue>(Ptr) ||
1590             (isa<ConstantPointerNull>(Ptr) &&
1591              SI->getPointerAddressSpace() == 0)) {
1592           changeToUnreachable(SI, true);
1593           Changed = true;
1594           break;
1595         }
1596       }
1597     }
1598 
1599     TerminatorInst *Terminator = BB->getTerminator();
1600     if (auto *II = dyn_cast<InvokeInst>(Terminator)) {
1601       // Turn invokes that call 'nounwind' functions into ordinary calls.
1602       Value *Callee = II->getCalledValue();
1603       if (isa<ConstantPointerNull>(Callee) || isa<UndefValue>(Callee)) {
1604         changeToUnreachable(II, true);
1605         Changed = true;
1606       } else if (II->doesNotThrow() && canSimplifyInvokeNoUnwind(&F)) {
1607         if (II->use_empty() && II->onlyReadsMemory()) {
1608           // jump to the normal destination branch.
1609           BranchInst::Create(II->getNormalDest(), II);
1610           II->getUnwindDest()->removePredecessor(II->getParent());
1611           II->eraseFromParent();
1612         } else
1613           changeToCall(II);
1614         Changed = true;
1615       }
1616     } else if (auto *CatchSwitch = dyn_cast<CatchSwitchInst>(Terminator)) {
1617       // Remove catchpads which cannot be reached.
1618       struct CatchPadDenseMapInfo {
1619         static CatchPadInst *getEmptyKey() {
1620           return DenseMapInfo<CatchPadInst *>::getEmptyKey();
1621         }
1622         static CatchPadInst *getTombstoneKey() {
1623           return DenseMapInfo<CatchPadInst *>::getTombstoneKey();
1624         }
1625         static unsigned getHashValue(CatchPadInst *CatchPad) {
1626           return static_cast<unsigned>(hash_combine_range(
1627               CatchPad->value_op_begin(), CatchPad->value_op_end()));
1628         }
1629         static bool isEqual(CatchPadInst *LHS, CatchPadInst *RHS) {
1630           if (LHS == getEmptyKey() || LHS == getTombstoneKey() ||
1631               RHS == getEmptyKey() || RHS == getTombstoneKey())
1632             return LHS == RHS;
1633           return LHS->isIdenticalTo(RHS);
1634         }
1635       };
1636 
1637       // Set of unique CatchPads.
1638       SmallDenseMap<CatchPadInst *, detail::DenseSetEmpty, 4,
1639                     CatchPadDenseMapInfo, detail::DenseSetPair<CatchPadInst *>>
1640           HandlerSet;
1641       detail::DenseSetEmpty Empty;
1642       for (CatchSwitchInst::handler_iterator I = CatchSwitch->handler_begin(),
1643                                              E = CatchSwitch->handler_end();
1644            I != E; ++I) {
1645         BasicBlock *HandlerBB = *I;
1646         auto *CatchPad = cast<CatchPadInst>(HandlerBB->getFirstNonPHI());
1647         if (!HandlerSet.insert({CatchPad, Empty}).second) {
1648           CatchSwitch->removeHandler(I);
1649           --I;
1650           --E;
1651           Changed = true;
1652         }
1653       }
1654     }
1655 
1656     Changed |= ConstantFoldTerminator(BB, true);
1657     for (BasicBlock *Successor : successors(BB))
1658       if (Reachable.insert(Successor).second)
1659         Worklist.push_back(Successor);
1660   } while (!Worklist.empty());
1661   return Changed;
1662 }
1663 
1664 void llvm::removeUnwindEdge(BasicBlock *BB) {
1665   TerminatorInst *TI = BB->getTerminator();
1666 
1667   if (auto *II = dyn_cast<InvokeInst>(TI)) {
1668     changeToCall(II);
1669     return;
1670   }
1671 
1672   TerminatorInst *NewTI;
1673   BasicBlock *UnwindDest;
1674 
1675   if (auto *CRI = dyn_cast<CleanupReturnInst>(TI)) {
1676     NewTI = CleanupReturnInst::Create(CRI->getCleanupPad(), nullptr, CRI);
1677     UnwindDest = CRI->getUnwindDest();
1678   } else if (auto *CatchSwitch = dyn_cast<CatchSwitchInst>(TI)) {
1679     auto *NewCatchSwitch = CatchSwitchInst::Create(
1680         CatchSwitch->getParentPad(), nullptr, CatchSwitch->getNumHandlers(),
1681         CatchSwitch->getName(), CatchSwitch);
1682     for (BasicBlock *PadBB : CatchSwitch->handlers())
1683       NewCatchSwitch->addHandler(PadBB);
1684 
1685     NewTI = NewCatchSwitch;
1686     UnwindDest = CatchSwitch->getUnwindDest();
1687   } else {
1688     llvm_unreachable("Could not find unwind successor");
1689   }
1690 
1691   NewTI->takeName(TI);
1692   NewTI->setDebugLoc(TI->getDebugLoc());
1693   UnwindDest->removePredecessor(BB);
1694   TI->replaceAllUsesWith(NewTI);
1695   TI->eraseFromParent();
1696 }
1697 
1698 /// removeUnreachableBlocksFromFn - Remove blocks that are not reachable, even
1699 /// if they are in a dead cycle.  Return true if a change was made, false
1700 /// otherwise.
1701 bool llvm::removeUnreachableBlocks(Function &F, LazyValueInfo *LVI) {
1702   SmallPtrSet<BasicBlock*, 16> Reachable;
1703   bool Changed = markAliveBlocks(F, Reachable);
1704 
1705   // If there are unreachable blocks in the CFG...
1706   if (Reachable.size() == F.size())
1707     return Changed;
1708 
1709   assert(Reachable.size() < F.size());
1710   NumRemoved += F.size()-Reachable.size();
1711 
1712   // Loop over all of the basic blocks that are not reachable, dropping all of
1713   // their internal references...
1714   for (Function::iterator BB = ++F.begin(), E = F.end(); BB != E; ++BB) {
1715     if (Reachable.count(&*BB))
1716       continue;
1717 
1718     for (BasicBlock *Successor : successors(&*BB))
1719       if (Reachable.count(Successor))
1720         Successor->removePredecessor(&*BB);
1721     if (LVI)
1722       LVI->eraseBlock(&*BB);
1723     BB->dropAllReferences();
1724   }
1725 
1726   for (Function::iterator I = ++F.begin(); I != F.end();)
1727     if (!Reachable.count(&*I))
1728       I = F.getBasicBlockList().erase(I);
1729     else
1730       ++I;
1731 
1732   return true;
1733 }
1734 
1735 void llvm::combineMetadata(Instruction *K, const Instruction *J,
1736                            ArrayRef<unsigned> KnownIDs) {
1737   SmallVector<std::pair<unsigned, MDNode *>, 4> Metadata;
1738   K->dropUnknownNonDebugMetadata(KnownIDs);
1739   K->getAllMetadataOtherThanDebugLoc(Metadata);
1740   for (const auto &MD : Metadata) {
1741     unsigned Kind = MD.first;
1742     MDNode *JMD = J->getMetadata(Kind);
1743     MDNode *KMD = MD.second;
1744 
1745     switch (Kind) {
1746       default:
1747         K->setMetadata(Kind, nullptr); // Remove unknown metadata
1748         break;
1749       case LLVMContext::MD_dbg:
1750         llvm_unreachable("getAllMetadataOtherThanDebugLoc returned a MD_dbg");
1751       case LLVMContext::MD_tbaa:
1752         K->setMetadata(Kind, MDNode::getMostGenericTBAA(JMD, KMD));
1753         break;
1754       case LLVMContext::MD_alias_scope:
1755         K->setMetadata(Kind, MDNode::getMostGenericAliasScope(JMD, KMD));
1756         break;
1757       case LLVMContext::MD_noalias:
1758       case LLVMContext::MD_mem_parallel_loop_access:
1759         K->setMetadata(Kind, MDNode::intersect(JMD, KMD));
1760         break;
1761       case LLVMContext::MD_range:
1762         K->setMetadata(Kind, MDNode::getMostGenericRange(JMD, KMD));
1763         break;
1764       case LLVMContext::MD_fpmath:
1765         K->setMetadata(Kind, MDNode::getMostGenericFPMath(JMD, KMD));
1766         break;
1767       case LLVMContext::MD_invariant_load:
1768         // Only set the !invariant.load if it is present in both instructions.
1769         K->setMetadata(Kind, JMD);
1770         break;
1771       case LLVMContext::MD_nonnull:
1772         // Only set the !nonnull if it is present in both instructions.
1773         K->setMetadata(Kind, JMD);
1774         break;
1775       case LLVMContext::MD_invariant_group:
1776         // Preserve !invariant.group in K.
1777         break;
1778       case LLVMContext::MD_align:
1779         K->setMetadata(Kind,
1780           MDNode::getMostGenericAlignmentOrDereferenceable(JMD, KMD));
1781         break;
1782       case LLVMContext::MD_dereferenceable:
1783       case LLVMContext::MD_dereferenceable_or_null:
1784         K->setMetadata(Kind,
1785           MDNode::getMostGenericAlignmentOrDereferenceable(JMD, KMD));
1786         break;
1787     }
1788   }
1789   // Set !invariant.group from J if J has it. If both instructions have it
1790   // then we will just pick it from J - even when they are different.
1791   // Also make sure that K is load or store - f.e. combining bitcast with load
1792   // could produce bitcast with invariant.group metadata, which is invalid.
1793   // FIXME: we should try to preserve both invariant.group md if they are
1794   // different, but right now instruction can only have one invariant.group.
1795   if (auto *JMD = J->getMetadata(LLVMContext::MD_invariant_group))
1796     if (isa<LoadInst>(K) || isa<StoreInst>(K))
1797       K->setMetadata(LLVMContext::MD_invariant_group, JMD);
1798 }
1799 
1800 void llvm::combineMetadataForCSE(Instruction *K, const Instruction *J) {
1801   unsigned KnownIDs[] = {
1802       LLVMContext::MD_tbaa,            LLVMContext::MD_alias_scope,
1803       LLVMContext::MD_noalias,         LLVMContext::MD_range,
1804       LLVMContext::MD_invariant_load,  LLVMContext::MD_nonnull,
1805       LLVMContext::MD_invariant_group, LLVMContext::MD_align,
1806       LLVMContext::MD_dereferenceable,
1807       LLVMContext::MD_dereferenceable_or_null};
1808   combineMetadata(K, J, KnownIDs);
1809 }
1810 
1811 unsigned llvm::replaceDominatedUsesWith(Value *From, Value *To,
1812                                         DominatorTree &DT,
1813                                         const BasicBlockEdge &Root) {
1814   assert(From->getType() == To->getType());
1815 
1816   unsigned Count = 0;
1817   for (Value::use_iterator UI = From->use_begin(), UE = From->use_end();
1818        UI != UE; ) {
1819     Use &U = *UI++;
1820     if (DT.dominates(Root, U)) {
1821       U.set(To);
1822       DEBUG(dbgs() << "Replace dominated use of '"
1823             << From->getName() << "' as "
1824             << *To << " in " << *U << "\n");
1825       ++Count;
1826     }
1827   }
1828   return Count;
1829 }
1830 
1831 unsigned llvm::replaceDominatedUsesWith(Value *From, Value *To,
1832                                         DominatorTree &DT,
1833                                         const BasicBlock *BB) {
1834   assert(From->getType() == To->getType());
1835 
1836   unsigned Count = 0;
1837   for (Value::use_iterator UI = From->use_begin(), UE = From->use_end();
1838        UI != UE;) {
1839     Use &U = *UI++;
1840     auto *I = cast<Instruction>(U.getUser());
1841     if (DT.properlyDominates(BB, I->getParent())) {
1842       U.set(To);
1843       DEBUG(dbgs() << "Replace dominated use of '" << From->getName() << "' as "
1844                    << *To << " in " << *U << "\n");
1845       ++Count;
1846     }
1847   }
1848   return Count;
1849 }
1850 
1851 bool llvm::callsGCLeafFunction(ImmutableCallSite CS) {
1852   // Check if the function is specifically marked as a gc leaf function.
1853   if (CS.hasFnAttr("gc-leaf-function"))
1854     return true;
1855   if (const Function *F = CS.getCalledFunction()) {
1856     if (F->hasFnAttribute("gc-leaf-function"))
1857       return true;
1858 
1859     if (auto IID = F->getIntrinsicID())
1860       // Most LLVM intrinsics do not take safepoints.
1861       return IID != Intrinsic::experimental_gc_statepoint &&
1862              IID != Intrinsic::experimental_deoptimize;
1863   }
1864 
1865   return false;
1866 }
1867 
1868 namespace {
1869 /// A potential constituent of a bitreverse or bswap expression. See
1870 /// collectBitParts for a fuller explanation.
1871 struct BitPart {
1872   BitPart(Value *P, unsigned BW) : Provider(P) {
1873     Provenance.resize(BW);
1874   }
1875 
1876   /// The Value that this is a bitreverse/bswap of.
1877   Value *Provider;
1878   /// The "provenance" of each bit. Provenance[A] = B means that bit A
1879   /// in Provider becomes bit B in the result of this expression.
1880   SmallVector<int8_t, 32> Provenance; // int8_t means max size is i128.
1881 
1882   enum { Unset = -1 };
1883 };
1884 } // end anonymous namespace
1885 
1886 /// Analyze the specified subexpression and see if it is capable of providing
1887 /// pieces of a bswap or bitreverse. The subexpression provides a potential
1888 /// piece of a bswap or bitreverse if it can be proven that each non-zero bit in
1889 /// the output of the expression came from a corresponding bit in some other
1890 /// value. This function is recursive, and the end result is a mapping of
1891 /// bitnumber to bitnumber. It is the caller's responsibility to validate that
1892 /// the bitnumber to bitnumber mapping is correct for a bswap or bitreverse.
1893 ///
1894 /// For example, if the current subexpression if "(shl i32 %X, 24)" then we know
1895 /// that the expression deposits the low byte of %X into the high byte of the
1896 /// result and that all other bits are zero. This expression is accepted and a
1897 /// BitPart is returned with Provider set to %X and Provenance[24-31] set to
1898 /// [0-7].
1899 ///
1900 /// To avoid revisiting values, the BitPart results are memoized into the
1901 /// provided map. To avoid unnecessary copying of BitParts, BitParts are
1902 /// constructed in-place in the \c BPS map. Because of this \c BPS needs to
1903 /// store BitParts objects, not pointers. As we need the concept of a nullptr
1904 /// BitParts (Value has been analyzed and the analysis failed), we an Optional
1905 /// type instead to provide the same functionality.
1906 ///
1907 /// Because we pass around references into \c BPS, we must use a container that
1908 /// does not invalidate internal references (std::map instead of DenseMap).
1909 ///
1910 static const Optional<BitPart> &
1911 collectBitParts(Value *V, bool MatchBSwaps, bool MatchBitReversals,
1912                 std::map<Value *, Optional<BitPart>> &BPS) {
1913   auto I = BPS.find(V);
1914   if (I != BPS.end())
1915     return I->second;
1916 
1917   auto &Result = BPS[V] = None;
1918   auto BitWidth = cast<IntegerType>(V->getType())->getBitWidth();
1919 
1920   if (Instruction *I = dyn_cast<Instruction>(V)) {
1921     // If this is an or instruction, it may be an inner node of the bswap.
1922     if (I->getOpcode() == Instruction::Or) {
1923       auto &A = collectBitParts(I->getOperand(0), MatchBSwaps,
1924                                 MatchBitReversals, BPS);
1925       auto &B = collectBitParts(I->getOperand(1), MatchBSwaps,
1926                                 MatchBitReversals, BPS);
1927       if (!A || !B)
1928         return Result;
1929 
1930       // Try and merge the two together.
1931       if (!A->Provider || A->Provider != B->Provider)
1932         return Result;
1933 
1934       Result = BitPart(A->Provider, BitWidth);
1935       for (unsigned i = 0; i < A->Provenance.size(); ++i) {
1936         if (A->Provenance[i] != BitPart::Unset &&
1937             B->Provenance[i] != BitPart::Unset &&
1938             A->Provenance[i] != B->Provenance[i])
1939           return Result = None;
1940 
1941         if (A->Provenance[i] == BitPart::Unset)
1942           Result->Provenance[i] = B->Provenance[i];
1943         else
1944           Result->Provenance[i] = A->Provenance[i];
1945       }
1946 
1947       return Result;
1948     }
1949 
1950     // If this is a logical shift by a constant, recurse then shift the result.
1951     if (I->isLogicalShift() && isa<ConstantInt>(I->getOperand(1))) {
1952       unsigned BitShift =
1953           cast<ConstantInt>(I->getOperand(1))->getLimitedValue(~0U);
1954       // Ensure the shift amount is defined.
1955       if (BitShift > BitWidth)
1956         return Result;
1957 
1958       auto &Res = collectBitParts(I->getOperand(0), MatchBSwaps,
1959                                   MatchBitReversals, BPS);
1960       if (!Res)
1961         return Result;
1962       Result = Res;
1963 
1964       // Perform the "shift" on BitProvenance.
1965       auto &P = Result->Provenance;
1966       if (I->getOpcode() == Instruction::Shl) {
1967         P.erase(std::prev(P.end(), BitShift), P.end());
1968         P.insert(P.begin(), BitShift, BitPart::Unset);
1969       } else {
1970         P.erase(P.begin(), std::next(P.begin(), BitShift));
1971         P.insert(P.end(), BitShift, BitPart::Unset);
1972       }
1973 
1974       return Result;
1975     }
1976 
1977     // If this is a logical 'and' with a mask that clears bits, recurse then
1978     // unset the appropriate bits.
1979     if (I->getOpcode() == Instruction::And &&
1980         isa<ConstantInt>(I->getOperand(1))) {
1981       APInt Bit(I->getType()->getPrimitiveSizeInBits(), 1);
1982       const APInt &AndMask = cast<ConstantInt>(I->getOperand(1))->getValue();
1983 
1984       // Check that the mask allows a multiple of 8 bits for a bswap, for an
1985       // early exit.
1986       unsigned NumMaskedBits = AndMask.countPopulation();
1987       if (!MatchBitReversals && NumMaskedBits % 8 != 0)
1988         return Result;
1989 
1990       auto &Res = collectBitParts(I->getOperand(0), MatchBSwaps,
1991                                   MatchBitReversals, BPS);
1992       if (!Res)
1993         return Result;
1994       Result = Res;
1995 
1996       for (unsigned i = 0; i < BitWidth; ++i, Bit <<= 1)
1997         // If the AndMask is zero for this bit, clear the bit.
1998         if ((AndMask & Bit) == 0)
1999           Result->Provenance[i] = BitPart::Unset;
2000       return Result;
2001     }
2002 
2003     // If this is a zext instruction zero extend the result.
2004     if (I->getOpcode() == Instruction::ZExt) {
2005       auto &Res = collectBitParts(I->getOperand(0), MatchBSwaps,
2006                                   MatchBitReversals, BPS);
2007       if (!Res)
2008         return Result;
2009 
2010       Result = BitPart(Res->Provider, BitWidth);
2011       auto NarrowBitWidth =
2012           cast<IntegerType>(cast<ZExtInst>(I)->getSrcTy())->getBitWidth();
2013       for (unsigned i = 0; i < NarrowBitWidth; ++i)
2014         Result->Provenance[i] = Res->Provenance[i];
2015       for (unsigned i = NarrowBitWidth; i < BitWidth; ++i)
2016         Result->Provenance[i] = BitPart::Unset;
2017       return Result;
2018     }
2019   }
2020 
2021   // Okay, we got to something that isn't a shift, 'or' or 'and'.  This must be
2022   // the input value to the bswap/bitreverse.
2023   Result = BitPart(V, BitWidth);
2024   for (unsigned i = 0; i < BitWidth; ++i)
2025     Result->Provenance[i] = i;
2026   return Result;
2027 }
2028 
2029 static bool bitTransformIsCorrectForBSwap(unsigned From, unsigned To,
2030                                           unsigned BitWidth) {
2031   if (From % 8 != To % 8)
2032     return false;
2033   // Convert from bit indices to byte indices and check for a byte reversal.
2034   From >>= 3;
2035   To >>= 3;
2036   BitWidth >>= 3;
2037   return From == BitWidth - To - 1;
2038 }
2039 
2040 static bool bitTransformIsCorrectForBitReverse(unsigned From, unsigned To,
2041                                                unsigned BitWidth) {
2042   return From == BitWidth - To - 1;
2043 }
2044 
2045 /// Given an OR instruction, check to see if this is a bitreverse
2046 /// idiom. If so, insert the new intrinsic and return true.
2047 bool llvm::recognizeBSwapOrBitReverseIdiom(
2048     Instruction *I, bool MatchBSwaps, bool MatchBitReversals,
2049     SmallVectorImpl<Instruction *> &InsertedInsts) {
2050   if (Operator::getOpcode(I) != Instruction::Or)
2051     return false;
2052   if (!MatchBSwaps && !MatchBitReversals)
2053     return false;
2054   IntegerType *ITy = dyn_cast<IntegerType>(I->getType());
2055   if (!ITy || ITy->getBitWidth() > 128)
2056     return false;   // Can't do vectors or integers > 128 bits.
2057   unsigned BW = ITy->getBitWidth();
2058 
2059   unsigned DemandedBW = BW;
2060   IntegerType *DemandedTy = ITy;
2061   if (I->hasOneUse()) {
2062     if (TruncInst *Trunc = dyn_cast<TruncInst>(I->user_back())) {
2063       DemandedTy = cast<IntegerType>(Trunc->getType());
2064       DemandedBW = DemandedTy->getBitWidth();
2065     }
2066   }
2067 
2068   // Try to find all the pieces corresponding to the bswap.
2069   std::map<Value *, Optional<BitPart>> BPS;
2070   auto Res = collectBitParts(I, MatchBSwaps, MatchBitReversals, BPS);
2071   if (!Res)
2072     return false;
2073   auto &BitProvenance = Res->Provenance;
2074 
2075   // Now, is the bit permutation correct for a bswap or a bitreverse? We can
2076   // only byteswap values with an even number of bytes.
2077   bool OKForBSwap = DemandedBW % 16 == 0, OKForBitReverse = true;
2078   for (unsigned i = 0; i < DemandedBW; ++i) {
2079     OKForBSwap &=
2080         bitTransformIsCorrectForBSwap(BitProvenance[i], i, DemandedBW);
2081     OKForBitReverse &=
2082         bitTransformIsCorrectForBitReverse(BitProvenance[i], i, DemandedBW);
2083   }
2084 
2085   Intrinsic::ID Intrin;
2086   if (OKForBSwap && MatchBSwaps)
2087     Intrin = Intrinsic::bswap;
2088   else if (OKForBitReverse && MatchBitReversals)
2089     Intrin = Intrinsic::bitreverse;
2090   else
2091     return false;
2092 
2093   if (ITy != DemandedTy) {
2094     Function *F = Intrinsic::getDeclaration(I->getModule(), Intrin, DemandedTy);
2095     Value *Provider = Res->Provider;
2096     IntegerType *ProviderTy = cast<IntegerType>(Provider->getType());
2097     // We may need to truncate the provider.
2098     if (DemandedTy != ProviderTy) {
2099       auto *Trunc = CastInst::Create(Instruction::Trunc, Provider, DemandedTy,
2100                                      "trunc", I);
2101       InsertedInsts.push_back(Trunc);
2102       Provider = Trunc;
2103     }
2104     auto *CI = CallInst::Create(F, Provider, "rev", I);
2105     InsertedInsts.push_back(CI);
2106     auto *ExtInst = CastInst::Create(Instruction::ZExt, CI, ITy, "zext", I);
2107     InsertedInsts.push_back(ExtInst);
2108     return true;
2109   }
2110 
2111   Function *F = Intrinsic::getDeclaration(I->getModule(), Intrin, ITy);
2112   InsertedInsts.push_back(CallInst::Create(F, Res->Provider, "rev", I));
2113   return true;
2114 }
2115 
2116 // CodeGen has special handling for some string functions that may replace
2117 // them with target-specific intrinsics.  Since that'd skip our interceptors
2118 // in ASan/MSan/TSan/DFSan, and thus make us miss some memory accesses,
2119 // we mark affected calls as NoBuiltin, which will disable optimization
2120 // in CodeGen.
2121 void llvm::maybeMarkSanitizerLibraryCallNoBuiltin(
2122     CallInst *CI, const TargetLibraryInfo *TLI) {
2123   Function *F = CI->getCalledFunction();
2124   LibFunc Func;
2125   if (F && !F->hasLocalLinkage() && F->hasName() &&
2126       TLI->getLibFunc(F->getName(), Func) && TLI->hasOptimizedCodeGen(Func) &&
2127       !F->doesNotAccessMemory())
2128     CI->addAttribute(AttributeList::FunctionIndex, Attribute::NoBuiltin);
2129 }
2130