[LLVMdev] PIC16 backend for llvm 2.5

Duncan Sands baldrick at free.fr
Sun Jan 18 11:28:14 PST 2009


Hi Sanjiv,

> +  /// CustomLowerOperation - This callback is invoked for operations that are
> +  /// unsupported by the target, which are registered to use 'custom' lowering,
> +  /// and whose defined values are all legal.

and whose defined values are all legal -> and whose return values all have legal types

> +  /// If the target has no operations that require custom lowering, it need not
> +  /// implement this.

This comment and the name seem too generic for me.  This method is for use when
an operand has an illegal type, right?  Yet the comment makes no mention of this.
There's also of no mention of the fact that you are allowed to not place anything
in Results, and what that means.

Also, is there any reason not to use ReplaceNodeResults rather than introducing
a new method for type legalization?

> +    case ISD::ANY_EXTEND:   
> +      Results.push_back(PromoteIntOp_ANY_EXTEND(N)); break;

This is wrong if PromoteIntOp_ANY_EXTEND returned a value with
no node.  Likewise for all the others.  Better I think to simply
handle the custom case immediately and return rather than trying
to share code with these other cases.

Also, you could just make DAGTypeLegalizer::CustomLowerResults
more general, and use that.

Ciao,

Duncan.



More information about the llvm-dev mailing list