[llvm-commits] Patch for pr11798: Emit _fltused during FastISel
Anton Korobeynikov
anton at korobeynikov.info
Mon Feb 20 23:39:55 PST 2012
Joe,
> I factored the logic to MachineModuleInfo, since that's where the
> calls...WithFloatingPointArguments state is kept. Attached is the
> revised patch.
I don't think that this routine should be in the common code...
However, I do not see the proper place right now. Maybe Eli knows :)
The comments wrt patch:
1. Use the same code style as all other routines in the file.
2.
> + FunctionType *FT = dyn_cast<FunctionType>(
> + I->getCalledValue()->getType()->getContainedType(0));
This definitely looks wrong. What if you're doing indirect call? This
way I->getCalledValue() will return GlobalValue, not Function.
3. + assert(FT);
Use cast instead of dyn_cast + assert. Also, when doing assert provide
meaningful assertion messages.
4 + if (FT->isVarArg() &&
+ !callsExternalVAFunctionWithFloatingPointArguments()) {
Just early exit here
5. + for (po_iterator<Type*> i = po_begin(T), e = po_end(T);
Should we traverse the whole Type tree here? Should fltused be emitted
even if we e.g. passing point to struct contaning float?
Also... is is possible somehow shorten
"setCallsExternalVAFunctionWithFloatingPointArguments".... ?
--
With best regards, Anton Korobeynikov
Faculty of Mathematics and Mechanics, Saint Petersburg State University
More information about the llvm-commits
mailing list