bool ExpandByVal::runOnModule(Module &M) { bool Modified = false; DataLayout DL(&M); for (Module::iterator Func = M.begin(), E = M.end(); Func != E; ++Func) { AttributeSet NewAttrs = RemoveAttrs(Func->getContext(), Func->getAttributes()); Modified |= (NewAttrs != Func->getAttributes()); Func->setAttributes(NewAttrs); for (Function::iterator BB = Func->begin(), E = Func->end(); BB != E; ++BB) { for (BasicBlock::iterator Inst = BB->begin(), E = BB->end(); Inst != E; ++Inst) { if (CallInst *Call = dyn_cast<CallInst>(Inst)) { Modified |= ExpandCall(&DL, Call); } else if (InvokeInst *Call = dyn_cast<InvokeInst>(Inst)) { Modified |= ExpandCall(&DL, Call); } } } } return Modified; }