Hal Finkel
2012-May-03 19:49 UTC
[LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
Hello, The current code in PPCTargetLowering::LowerFormalArguments_SVR4 contains a FIXME over the code which saves the live floating-point registers to the stack. The FIXME states that this should only be done if CR bit 6 is set. I've been told that the lack of this check is preventing clang/LLVM from compiling a functional FreeBSD kernel on PPC. Is is possible to insert another branch in LowerFormalArguments? Some of the atomic instructions insert branches, but those are handled in EmitInstrWithCustomInserter. Can branches be inserted inside LowerFormalArguments in the same way? Thanks in advance, Hal -- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
Hal Finkel
2012-May-10 18:25 UTC
[LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
I hate to be bothersome, but can someone please comment on this? Thanks again, Hal On Thu, 3 May 2012 14:49:04 -0500 Hal Finkel <hfinkel at anl.gov> wrote:> Hello, > > The current code in PPCTargetLowering::LowerFormalArguments_SVR4 > contains a FIXME over the code which saves the live floating-point > registers to the stack. The FIXME states that this should only be done > if CR bit 6 is set. I've been told that the lack of this check is > preventing clang/LLVM from compiling a functional FreeBSD kernel on > PPC. > > Is is possible to insert another branch in LowerFormalArguments? Some > of the atomic instructions insert branches, but those are handled in > EmitInstrWithCustomInserter. Can branches be inserted inside > LowerFormalArguments in the same way? > > Thanks in advance, > Hal >-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
Jim Grosbach
2012-May-10 18:39 UTC
[LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
Hi Hal, For lowering code that requires inserting branches, you need to use a custom inserter, yes. Theoretically, that does indeed sound like what you want to do here. It's complicated by the general structure of argument passing, though. In particular, there's lots of assumptions about the call sequence stuff. I don't know if things are smart enough (EH in particular worries me) to handle this sort of thing. On the plus side, there are copious assert() bits in there to catch it if the compiler gets itself confused, so you should know sooner rather than later if something goes wonky. -Jim On May 10, 2012, at 11:25 AM, Hal Finkel <hfinkel at anl.gov> wrote:> I hate to be bothersome, but can someone please comment on this? > > Thanks again, > Hal > > On Thu, 3 May 2012 14:49:04 -0500 > Hal Finkel <hfinkel at anl.gov> wrote: > >> Hello, >> >> The current code in PPCTargetLowering::LowerFormalArguments_SVR4 >> contains a FIXME over the code which saves the live floating-point >> registers to the stack. The FIXME states that this should only be done >> if CR bit 6 is set. I've been told that the lack of this check is >> preventing clang/LLVM from compiling a functional FreeBSD kernel on >> PPC. >> >> Is is possible to insert another branch in LowerFormalArguments? Some >> of the atomic instructions insert branches, but those are handled in >> EmitInstrWithCustomInserter. Can branches be inserted inside >> LowerFormalArguments in the same way? >> >> Thanks in advance, >> Hal >> > > > > -- > Hal Finkel > Postdoctoral Appointee > Leadership Computing Facility > Argonne National Laboratory > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
Maybe Matching Threads
- [LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
- [LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
- [LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
- [LLVMdev] Inserting a branch in PPCTargetLowering::LowerFormalArguments_SVR4
- [LLVMdev] Implementing llvm.atomic.cmp.swap.i32 on PowerPC