Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. //===- PromoteMemToReg.h - Promote Allocas to Scalars -----------*- C++ -*-===//
  2. //
  3. // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  4. // See https://llvm.org/LICENSE.txt for license information.
  5. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  6. //
  7. //===----------------------------------------------------------------------===//
  8. //
  9. // This file exposes an interface to promote alloca instructions to SSA
  10. // registers, by using the SSA construction algorithm.
  11. //
  12. //===----------------------------------------------------------------------===//
  13.  
  14. #ifndef LLVM_TRANSFORMS_UTILS_PROMOTEMEMTOREG_H
  15. #define LLVM_TRANSFORMS_UTILS_PROMOTEMEMTOREG_H
  16.  
  17. namespace llvm {
  18.  
  19. template <typename T> class ArrayRef;
  20. class AllocaInst;
  21. class DominatorTree;
  22. class AssumptionCache;
  23.  
  24. /// Return true if this alloca is legal for promotion.
  25. ///
  26. /// This is true if there are only loads, stores, and lifetime markers
  27. /// (transitively) using this alloca. This also enforces that there is only
  28. /// ever one layer of bitcasts or GEPs between the alloca and the lifetime
  29. /// markers.
  30. bool isAllocaPromotable(const AllocaInst *AI);
  31.  
  32. /// Promote the specified list of alloca instructions into scalar
  33. /// registers, inserting PHI nodes as appropriate.
  34. ///
  35. /// This function makes use of DominanceFrontier information.  This function
  36. /// does not modify the CFG of the function at all.  All allocas must be from
  37. /// the same function.
  38. ///
  39. void PromoteMemToReg(ArrayRef<AllocaInst *> Allocas, DominatorTree &DT,
  40.                      AssumptionCache *AC = nullptr);
  41.  
  42. } // End llvm namespace
  43.  
  44. #endif
  45.