OLD | NEW |
1 //===- ExpandVarArgs.cpp - Expand out variable argument function calls-----===// | 1 //===- ExpandVarArgs.cpp - Expand out variable argument function calls-----===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This pass expands out all use of variable argument functions. | 10 // This pass expands out all use of variable argument functions. |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
58 | 58 |
59 virtual bool runOnModule(Module &M); | 59 virtual bool runOnModule(Module &M); |
60 }; | 60 }; |
61 } | 61 } |
62 | 62 |
63 char ExpandVarArgs::ID = 0; | 63 char ExpandVarArgs::ID = 0; |
64 INITIALIZE_PASS(ExpandVarArgs, "expand-varargs", | 64 INITIALIZE_PASS(ExpandVarArgs, "expand-varargs", |
65 "Expand out variable argument function definitions and calls", | 65 "Expand out variable argument function definitions and calls", |
66 false, false) | 66 false, false) |
67 | 67 |
68 static Instruction *CopyDebug(Instruction *NewInst, Instruction *Original) { | |
69 NewInst->setDebugLoc(Original->getDebugLoc()); | |
70 return NewInst; | |
71 } | |
72 | |
73 static void ExpandVarArgFunc(Function *Func) { | 68 static void ExpandVarArgFunc(Function *Func) { |
74 Type *PtrType = Type::getInt8PtrTy(Func->getContext()); | 69 Type *PtrType = Type::getInt8PtrTy(Func->getContext()); |
75 | 70 |
76 FunctionType *FTy = Func->getFunctionType(); | 71 FunctionType *FTy = Func->getFunctionType(); |
77 SmallVector<Type *, 8> Params(FTy->param_begin(), FTy->param_end()); | 72 SmallVector<Type *, 8> Params(FTy->param_begin(), FTy->param_end()); |
78 Params.push_back(PtrType); | 73 Params.push_back(PtrType); |
79 FunctionType *NFTy = FunctionType::get(FTy->getReturnType(), Params, false); | 74 FunctionType *NFTy = FunctionType::get(FTy->getReturnType(), Params, false); |
80 | 75 |
81 // In order to change the function's arguments, we have to recreate | 76 // In order to change the function's arguments, we have to recreate |
82 // the function. | 77 // the function. |
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 ExpandVarArgFunc(Func); | 330 ExpandVarArgFunc(Func); |
336 } | 331 } |
337 } | 332 } |
338 | 333 |
339 return Changed; | 334 return Changed; |
340 } | 335 } |
341 | 336 |
342 ModulePass *llvm::createExpandVarArgsPass() { | 337 ModulePass *llvm::createExpandVarArgsPass() { |
343 return new ExpandVarArgs(); | 338 return new ExpandVarArgs(); |
344 } | 339 } |
OLD | NEW |