Thread LLVMContext through the constant folding APIs, which touches a lot of files.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74844 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Owen Anderson
2009-07-06 18:42:36 +00:00
parent e034393b15
commit 508955156a
21 changed files with 256 additions and 195 deletions

View File

@@ -25,21 +25,24 @@
namespace llvm {
class TargetData;
class LLVMContext;
/// TargetFolder - Create constants with target dependent folding.
class TargetFolder {
const TargetData *TD;
LLVMContext* Context;
/// Fold - Fold the constant using target specific information.
Constant *Fold(Constant *C) const {
if (ConstantExpr *CE = dyn_cast<ConstantExpr>(C))
if (Constant *CF = ConstantFoldConstantExpression(CE, TD))
if (Constant *CF = ConstantFoldConstantExpression(CE, Context, TD))
return CF;
return C;
}
public:
explicit TargetFolder(const TargetData *TheTD) : TD(TheTD) {}
explicit TargetFolder(const TargetData *TheTD, LLVMContext* C) :
TD(TheTD), Context(C) {}
//===--------------------------------------------------------------------===//
// Binary Operators