[llvm-dev] Mips unconditionally uses fast-isel?

Robinson, Paul via llvm-dev
2015-11-17T18:40:10Z

> > I was mucking around in FastISel, and was surprised to see the test
> >   llvm/test/CodeGen/Mips/emergency-spill-slot-near-fp.ll
> > failed.  This was surprising because it specifies -fast-isel=false.
> >
> > Does the Mips code generator use fast-isel even when you ask it not
to?
> > Thanks,
> > --paulr
>
> This seems to be an all-targets bug. There's code in OptLevelChanger
> (lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp) that forces Fast ISel to
> be enabled for every -O0 function.

Well.... the test specifies -O0 so even though the function is marked
'optnone' I'd expect OptLevelChanger to be a no-op, because it
checks
whether the old and new OptLevel are the same. Which they should be.

If I use -debug-only=isel I see it is changing from -O2 to -O0, which
makes me think the "real" bug is that llc is ignoring -O0.
--paulr