- User Since
- Jun 22 2020, 11:08 PM (41 w, 6 d)
Address the comments. Now we would only collect dbg.values who would't change the layout of the frame.
Address the comments and enhance the test case.
This patch looks OK to me.
Thu, Apr 8
Rebase with trunk and address the comments.
Wed, Apr 7
Rebase with trunk and add option to control whether we would collect variables used only by dbg.vaues.
Although we can use materializing process to reduce the extra space, we can't prove we could get the same result with -g or not.
Previously, I think if we can't get the same result, the materialization part should take responsibility. However, I find that a pattern recently:
%a = alloca ... ; ... some uses who wouldn't cross suspend points call to coro.suspend() ; ... alternative path store %v to %a dbg.value(metadata %v, dbg variable for %a, ...
Then after some optimization, the store in some path would be eliminated:
%a = alloca ... ; ... some uses who wouldn't cross suspend points call to coro.suspend() ; ... alternative path dbg.value(metadata %v, dbg variable for %a, ...
Tue, Apr 6
Enhance Test Cases as the comment address.
Thu, Apr 1
Wed, Mar 31
I am curious about the test case for coro-debug.ll. The ABI used in this test case is Switch ABI. And this patch still affects it.
Only generating debug information for coroutine frame by searching DW_LANG_C_plus_plus derivatives.
Only generates debug information for coroutine frame by searching DW_LANG_C_plus_plusderivatives.
Tue, Mar 30
Thu, Mar 25
Wed, Mar 24
Use replaceVariableLocationOp and remove EnhanceDebugability option.
Merge -fsplit-stack and -fno-split-stack into one in options.td. And rename -split-stacks into -fsplit-stack.
Edit as the comment.
Materialize bit cast for dbg.values as suggested.
Edit as suggestion.
Tue, Mar 23
Only one problem I had for emitting lifetime markers even at O0 is that would action make allocas to be optimized even at O0? If so, I wonder if it confuses programmers since they may find some variables disappear surprisingly. Or there would be no optimization since every function would be marked with option attribute. I am not sure about this.
Mon, Mar 22
Sun, Mar 21
Fri, Mar 19
rebase with trunk
Tue, Mar 16
Mon, Mar 15
It looks like there are two things this patch wants to do:
- Don't put the temporary generated by symmetric-transfer on the coroutine frame.
- Offer a mechanism to force some values (it is easy to extend Alloca to Value) to put in the stack instead of the coroutine frame.
Mar 11 2021
Since me want to use split-stack, which is a feature dependent on libgcc.a. And the corresponding initialization section in libgcc.a uses .ctors. Here is the codes moreStack. They uses assembly directly. But lld don't combine .ctors into .init_array, which would cause segmentation fault due to uninitialized code.
Re-run documentation with the nit suggested.
Mar 7 2021
I rebased this patch, did some simple change to make it work at trunk and reverse the contents of .ctors after applying relocations as @ruiu mentioned in comments. May I ask is it ok for me to create a new diffusion? I am not familiar with the rule for the situation in the LLVM community convention. @MaskRay @grimar
Mar 4 2021
I am a little confusing about the problem. The example in the link tells the align of the promise instead of the frame. The address of promise and frame is not same. It looks like you're trying to do:
+ +-----------------------------------+ | | | +---------------+ frame | | pedding | | + +-----------------------------------+ ^ | | | | | +
Don't emit temporary alloca for arguments if optimization is enabled.
Add option to control the behavior.
Mar 3 2021
This patch LGTM.
Mar 2 2021
Mar 1 2021
Feb 25 2021
update c++20 with c++2a
Feb 24 2021
Feb 23 2021
Update test example under O2.
Is this change only works for continuation and async ABIs? If so, what can we do for switch ABIs?