Robinson, Paul via llvm-dev
2015-Nov-16 22:19 UTC
[llvm-dev] Mips unconditionally uses fast-isel?
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
Daniel Sanders via llvm-dev
2015-Nov-17 15:22 UTC
[llvm-dev] Mips unconditionally uses fast-isel?
> -----Original Message----- > From: llvm-dev [mailto:llvm-dev-bounces at lists.llvm.org] On Behalf Of > Robinson, Paul via llvm-dev > Sent: 16 November 2015 22:19 > To: llvm-dev at lists.llvm.org > Subject: [llvm-dev] Mips unconditionally uses fast-isel? > > 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 > > _______________________________________________ > LLVM Developers mailing list > llvm-dev at lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-devThis 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.
Robinson, Paul via llvm-dev
2015-Nov-17 18:40 UTC
[llvm-dev] Mips unconditionally uses fast-isel?
> > 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