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

Francois Pichet pichet2000 at gmail.com
Mon Aug 5 11:32:57 PDT 2013


On Mon, Aug 5, 2013 at 2:25 PM, Tom Stellard <tom at stellard.net> wrote:

> 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
>

Yes I have, f32 and i32 map to the same register class:
  addRegisterClass(MVT::i32, &Opus::GR32RegClass);
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130805/df2cd7eb/attachment.html>


More information about the llvm-dev mailing list