- User Since
- Dec 25 2016, 5:14 PM (146 w, 2 d)
Mon, Oct 14
Rebase the test case.
Sat, Oct 12
Tue, Oct 8
Yes, to my understanding, fastcc doesn't need to care about psABI details.
Update patch to address the feedbacks
Update patch to address the comment
Sun, Oct 6
Thu, Oct 3
Fix comment in the patch.
Thu, Sep 26
Add splitting SP adjustment boundary test case as @luismarques suggest.
Wed, Sep 25
- Call getFirstSPAdjustAmount() once in per prologue/epilogue generation as @luismarques suggest
- Generate CFI directives in large-stack.ll test case to check the CFI generation
Update patch to address the comments.
Thu, Sep 19
Wed, Sep 18
Sep 12 2019
Choosing virtual register as temp register.
Sep 11 2019
Update patch to address the comments.
Sep 10 2019
Using T1 as temp register for prologue/epilogue generation if there is no shrink wrapping optimization occur.
Aug 31 2019
Aug 28 2019
Rebase to the trunk
Aug 21 2019
Aug 20 2019
Add comment for the new field in MakeLibCallOptions struct.
Aug 19 2019
Update patch to reflect the comments.
Aug 8 2019
I remove the IsCastFromFloat flag and store the SDNode before soften in MakeLibCallOptions struct. So that the shouldExtendTypeInLibCall could get the original type directly and get rid of the complicate IsCastFromFloat setting method. I try to illustrate most of the single soft-float functions in rv64i-single-softfloat.ll. Please kindly remind me if I still missing something, thanks.
Only define the bits will be used for makelibCall in MakeLibCallOptions struct.
Aug 7 2019
Rebase the patch base on D65795 and update test cases.
Thanks for Eli's comments and Alex's excellent floating test cases that we could easily observe the difference.
Aug 6 2019
Aug 5 2019
Aug 1 2019
Update the patch to catch divsf3 case.
Thanks for pointing me the right direction.
I added shouldExtendTypeInLibCall target hook to indicate the Libcall should do the extension or not.
The parameter IsCastFromFloat will be passed to TargetLowering::makeLibCall and shouldExtendTypeInLibCall. So shouldExtendTypeInLibCall can identify the Type is casting by floating and disable the extensions.
Without generating AssertZext for the Libcall return value, and operation for clearing upper bits will be preserved.
Jul 31 2019
Jul 30 2019
Updated the test cases changed by the patch.
Jun 18 2019
Jun 4 2019
May 28 2019
We could also generate .cfi_restore for epilogue by:
unsigned CFIIndex = MF->addFrameInst(MCCFIInstruction::createRestore( nullptr, MRI->getDwarfRegNum(Reg, 1))); BuildMI(MBB, MBBI, DL, TII.get(TargetOpcode::CFI_INSTRUCTION)) .addCFIIndex(CFIIndex);
May 14 2019
May 9 2019
May 8 2019
It may too expansive, using function attribute as Hal's comment would be a better approach.
- You can't inspect the body of a function pointer, or a function in a different translation unit, so we can't make this work consistently.
Yes, we can't detect the function in a different translation unit or pointed by a function pointer.
- Even in the same translation unit, how do we "preserve" the behavior for values greater than 1?
Yes, disabling tail call can only preserve the stack in depth 1, it may have other optimizations change the behavior of the depth greater than one.
I'd prefer to just leave the current behavior if it isn't causing any practical problems. The user can always use -fno-optimize-sibling-calls if their codebase needs it for some reason.
If we do wish to make our "best effort" contain more effort, I think that we'd want to do this during function-attribute inference - there we can iterate over the call graph and add some inhibiting attributes. That having been said, if the only use case we have for this is matching some portion of GCC's heuristic for the purpose of making their test case pass, I'm not sure that this is worthwhile.
May 7 2019
May 6 2019
Apr 10 2019
Update patch to address Alex's comments.
Hi Alex, thanks for the review.
Mar 31 2019
Thanks for the update, LGTM.
Mar 29 2019
Update patch to address the comments from Eli and Ana.
Mar 28 2019
Add warning message for -msmall-data-limit with -fpic or RV64 with -mcmodel=large
Mar 22 2019
Could you add a case in option-relax.s after .option norelax to indicate the relocation type for local symbol will leave once the relaxation has been enabled?
Mar 20 2019
Update patch to address Ana's comments.
- Ignoring -G when -msmall-data-limit= in the command line and show the warning message
- Removing LTO plugin invoking which should introduce in another patch
Remove riscv-ssection-threshold flag because front end will pass the threshold by module flag.
Mar 14 2019
Passing small data limitation by module flag.
Add getModuleMetadata() to read SmallDataLimit Module flag.
Feb 19 2019
I have sent the email to llvmdev http://lists.llvm.org/pipermail/llvm-dev/2019-February/130222.html. It seems that there're not much consensus on how to represent in IR. I incline to implement passing through -plugin-opt= as the first version. We could create an incremental patch when we have more consensus on IR approach. What do you think?
Feb 17 2019
Update patch to address Alex's comment.
Feb 11 2019
Feb 5 2019
- Remove passing path for LTO because Eli raised the concern that whether it would appropriate to assign the same limitation for all files when LTO enabled.
- Add -msmall-data-limitation= as James pointed out it's the main setting flag for RISCV GCC
Feb 3 2019
Support passing small data limitation for target riscv32-unknown-linux-gnu with LTO enabled.
- Setting small data limitation to zero for PIC and RV64 with large code model.
- Support passing small data limitation with LTO enabled.
Remove guard condition for large code model which will implement in clang.
Feb 2 2019
Add testing for large code model.
Feb 1 2019
Correct the default small data limitation to 8 bytes for RV32 and RV64.
Setting the limitation to 0 for PIC.
The test case didn' add the testing line for PIC because we don't support pic yet, it will trigger "Unable to lowerGlobalAddress" error message.
Fix the issue for -G0 as Ana pointed out.
Jan 31 2019
Jan 30 2019
Jan 18 2019
Hi Eli, Thanks for the review.