[LLVMdev] Promote MVT::f32 load/store to MVT::i32 cause infinite loop in LegalizeDAG?

Tom Stellard tom at stellard.net
Mon Aug 5 11:25:52 PDT 2013


On Mon, Aug 05, 2013 at 02:09:58PM -0400, Francois Pichet wrote:
> On my target store/load of f32 or i32 are equivalents.
> Previously I had duplicate instructions def in .td to map f32 and i32 to
> the same opcode.
> 
> I deleted all that and I instead tried a new approach (to simplify things) :
> 
>   setOperationAction(ISD::STORE, MVT::f32, Promote);
>   AddPromotedToType(ISD::STORE, MVT::f32, MVT::i32);
>   setOperationAction(ISD::LOAD, MVT::f32, Promote);
>   AddPromotedToType(ISD::LOAD, MVT::f32, MVT::i32);
> 
> Now SelectionDAGLegalize::LegalizeDAG() get stuck into an infinite loop.
> What is going on?
> 
> I still have the following:(but I think that's fine)
>   addRegisterClass(MVT::f32, &Opus::GR32RegClass);

Have you specified a register class for MVT::i32?  If not, I think that
may be your problem.

-Tom




More information about the llvm-dev mailing list