|
Revision tags: llvmorg-20.1.0, llvmorg-20.1.0-rc3, llvmorg-20.1.0-rc2, llvmorg-20.1.0-rc1, llvmorg-21-init, llvmorg-19.1.7, llvmorg-19.1.6, llvmorg-19.1.5, llvmorg-19.1.4, llvmorg-19.1.3, llvmorg-19.1.2, llvmorg-19.1.1, llvmorg-19.1.0, llvmorg-19.1.0-rc4, llvmorg-19.1.0-rc3, llvmorg-19.1.0-rc2, llvmorg-19.1.0-rc1, llvmorg-20-init, llvmorg-18.1.8, llvmorg-18.1.7, llvmorg-18.1.6, llvmorg-18.1.5, llvmorg-18.1.4, llvmorg-18.1.3, llvmorg-18.1.2, llvmorg-18.1.1, llvmorg-18.1.0, llvmorg-18.1.0-rc4, llvmorg-18.1.0-rc3, llvmorg-18.1.0-rc2, llvmorg-18.1.0-rc1, llvmorg-19-init, llvmorg-17.0.6, llvmorg-17.0.5, llvmorg-17.0.4, llvmorg-17.0.3, llvmorg-17.0.2, llvmorg-17.0.1, llvmorg-17.0.0, llvmorg-17.0.0-rc4, llvmorg-17.0.0-rc3, llvmorg-17.0.0-rc2, llvmorg-17.0.0-rc1, llvmorg-18-init, llvmorg-16.0.6, llvmorg-16.0.5, llvmorg-16.0.4, llvmorg-16.0.3, llvmorg-16.0.2, llvmorg-16.0.1, llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3, llvmorg-16.0.0-rc2, llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5, llvmorg-15.0.4, llvmorg-15.0.3, llvmorg-15.0.2, llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init, llvmorg-14.0.6, llvmorg-14.0.5 |
|
| #
e3b4452e |
| 10-Jun-2022 |
Chuanqi Xu <[email protected]> |
[Debug] [Coroutines] Get rid of DW_ATE_address
Closing https://github.com/llvm/llvm-project/issues/55916
This patch tries to get rid of DW_ATE_address and enhance the test coverage.
Reviewed By: d
[Debug] [Coroutines] Get rid of DW_ATE_address
Closing https://github.com/llvm/llvm-project/issues/55916
This patch tries to get rid of DW_ATE_address and enhance the test coverage.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D127625
show more ...
|
|
Revision tags: llvmorg-14.0.4 |
|
| #
7137ebc4 |
| 20-May-2022 |
Chuanqi Xu <[email protected]> |
[Debug] [Coroutine] Adjust the scope and name for coroutine frame
Previously the scope of debug type of __coro_frame is limited in the current function. It looked good at the first sight. But it pre
[Debug] [Coroutine] Adjust the scope and name for coroutine frame
Previously the scope of debug type of __coro_frame is limited in the current function. It looked good at the first sight. But it prevent us to print the type in splitted functions and other functions. Also the debug type is different for different coroutine functions. So it makes sense to rename the debug type to make it related to the function name.
After this patch, we could access the coroutine frame type in a function by `function_name.coro_frame_ty`.
Reviewed By: dblaikie
Differential Revision: https://reviews.llvm.org/D127623
show more ...
|
| #
24e53b01 |
| 27-Jun-2022 |
Chuanqi Xu <[email protected]> |
Revert "[Coroutines] Only do symmetric transfer if optimization is on"
This reverts commit 7782e080e80a90f7bb32049beb3787e2118c2251. According to the discussion of WG21, symmetric transfer is a desi
Revert "[Coroutines] Only do symmetric transfer if optimization is on"
This reverts commit 7782e080e80a90f7bb32049beb3787e2118c2251. According to the discussion of WG21, symmetric transfer is a desired feature.
show more ...
|
| #
7a47ee51 |
| 21-Jun-2022 |
Kazu Hirata <[email protected]> |
[llvm] Don't use Optional::getValue (NFC)
|
| #
e0e687a6 |
| 20-Jun-2022 |
Kazu Hirata <[email protected]> |
[llvm] Don't use Optional::hasValue (NFC)
|
| #
72968119 |
| 20-Jun-2022 |
Guillaume Chatelet <[email protected]> |
[NFC] Simplify alignment code in CoroFrame
|
| #
7782e080 |
| 20-Jun-2022 |
Chuanqi Xu <[email protected]> |
[Coroutines] Only do symmetric transfer if optimization is on
Symmetric transfer is not a part of C++ standards. So the vendors is not forced to implement it any way. Given the symmetric transfer no
[Coroutines] Only do symmetric transfer if optimization is on
Symmetric transfer is not a part of C++ standards. So the vendors is not forced to implement it any way. Given the symmetric transfer nowadays is an optimization. It makes more sense to enable it only if the optimization is enabled. It is also helpful for the compilation speed in O0.
show more ...
|
| #
77bba68d |
| 14-Jun-2022 |
Guillaume Chatelet <[email protected]> |
[NFC][Alignment] Use Align in CoroFrame
|
| #
733d7cf9 |
| 24-May-2022 |
Chuanqi Xu <[email protected]> |
[Debug] [Coroutines] Add deref operator for non complex expression
Background:
When we construct coroutine frame, we would insert a dbg.declare intrinsic for it: ``` %hdl = call void @llvm.coro.beg
[Debug] [Coroutines] Add deref operator for non complex expression
Background:
When we construct coroutine frame, we would insert a dbg.declare intrinsic for it: ``` %hdl = call void @llvm.coro.begin() ; would return coroutine handle call void @llvm.dbg.declare(metadata ptr %hdl, metadata ![[DEBUG_VARIABLE: __coro_frame]], metadata !DIExpression()) ```
And in the splitted coroutine, it looks like: ``` define void @coro_func.resume(ptr *hdl) { entry.resume: call void @llvm.dbg.declare(metadata ptr %hdl, metadata ![[DEBUG_VARIABLE: __coro_frame]], metadata !DIExpression()) } ```
And we would salvage the debug info by inserting a new alloca here: ``` define void @coro_func.resume(ptr %hdl) { entry.resume: %frame.debug = alloca ptr call void @llvm.dbg.declare(metadata ptr %frame.debug, metadata ![[DEBUG_VARIABLE: __coro_frame]], metadata !DIExpression()) store ptr %hdl, %frame.debug } ```
But now, the problem comes since the `dbg.declare` refers to the address of that alloca instead of actual coroutine handle. I saw there are codes to solve the problem but it only applies to complex expression only. I feel if it is OK to relax the condition to make it work for `__coro_frame`.
Reviewed By: jmorse
Differential Revision: https://reviews.llvm.org/D126277
show more ...
|
| #
3b9707db |
| 05-Jun-2022 |
Kazu Hirata <[email protected]> |
[llvm] Convert for_each to range-based for loops (NFC)
|
| #
5c902af5 |
| 27-May-2022 |
Arnold Schwaighofer <[email protected]> |
[coro async] Add code to support dynamic aligment of over-aligned types in async frames
Async context frames are allocated with a maximum alignment. If a type requests an alignment bigger than that
[coro async] Add code to support dynamic aligment of over-aligned types in async frames
Async context frames are allocated with a maximum alignment. If a type requests an alignment bigger than that dynamically align the address in the frame.
Differential Revision: https://reviews.llvm.org/D126715
show more ...
|
| #
fb67d683 |
| 25-May-2022 |
serge-sans-paille <[email protected]> |
[iwyu] Handle regressions in libLLVM header include
Running iwyu-diff on LLVM codebase since 7030654296a0416bd9402a0278 detected a few regressions, fixing them.
Differential Revision: https://revie
[iwyu] Handle regressions in libLLVM header include
Running iwyu-diff on LLVM codebase since 7030654296a0416bd9402a0278 detected a few regressions, fixing them.
Differential Revision: https://reviews.llvm.org/D126417
show more ...
|
| #
02d68452 |
| 10-May-2022 |
Chuanqi Xu <[email protected]> |
[NFC] [Coroutines] Remove EnableReuseStorageInFrame option
The EnableReuseStorageInFrame option is designed for testing only. But it is better to use *_PASS_WITH_PARAMS macro to keep consistent with
[NFC] [Coroutines] Remove EnableReuseStorageInFrame option
The EnableReuseStorageInFrame option is designed for testing only. But it is better to use *_PASS_WITH_PARAMS macro to keep consistent with other passes.
show more ...
|
| #
2d037873 |
| 06-May-2022 |
Chuanqi Xu <[email protected]> |
[Coroutines] Don't re-materialize for debug instructions
Re-materialize for debug instructions would cause a different code generated if we enabled `-g`. This is bad. So we disable to re-materialize
[Coroutines] Don't re-materialize for debug instructions
Re-materialize for debug instructions would cause a different code generated if we enabled `-g`. This is bad. So we disable to re-materialize for debug instructions.
show more ...
|
|
Revision tags: llvmorg-14.0.3, llvmorg-14.0.2 |
|
| #
950c95cf |
| 25-Apr-2022 |
Nathan Lanza <[email protected]> |
[coroutines] Get an IntegerType from the value instead of defaulting to 64 bit
This AliasPtr is being created always from an Int64 even for targets where 32 bit is the proper type. e.g. “thumbv7-non
[coroutines] Get an IntegerType from the value instead of defaulting to 64 bit
This AliasPtr is being created always from an Int64 even for targets where 32 bit is the proper type. e.g. “thumbv7-none-linux-android16”. This causes the assert in the `get` func to fail as we're getting a 32 bit from the APInt.
Fix this by simply always just getting the type from the value instead.
Reviewed By: ChuanqiXu
Differential Revision: https://reviews.llvm.org/D123272
show more ...
|
|
Revision tags: llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
| #
479d684b |
| 04-Mar-2022 |
Nikita Popov <[email protected]> |
[Coroutines] Support opaque pointers in solveTypeName()
As far as I can tell, these names are only intended to be informative, so just use a generic "PointerType" for opaque pointers.
The code in s
[Coroutines] Support opaque pointers in solveTypeName()
As far as I can tell, these names are only intended to be informative, so just use a generic "PointerType" for opaque pointers.
The code in solveDIType() also treats pointers as basic types (and does not try to encode the pointed-to type further), so I believe this should be fine.
Differential Revision: https://reviews.llvm.org/D121280
show more ...
|
| #
3d9386a3 |
| 04-Mar-2022 |
Nikita Popov <[email protected]> |
[CoroFrame] Avoid pointer element type access for swifterror
These must have pointer-to-pointer type, and with opaque pointers we don't care about the specific pointer type anymore.
|
| #
9bca4ea3 |
| 04-Mar-2022 |
Nikita Popov <[email protected]> |
[Coroutines] Allow FramePtr to be an Argument
With opaque pointers, after splitRetconCoroutine() the FramePtr may be an Argument rather than an Instruction. With typed pointers, this currently doesn
[Coroutines] Allow FramePtr to be an Argument
With opaque pointers, after splitRetconCoroutine() the FramePtr may be an Argument rather than an Instruction. With typed pointers, this currently doesn't happen because the FramePtr would be a bitcast instruction.
Fix this by making FramePtr a Value and adding a helper for the "after FramePtr" insertion point, which would be the start of the function in the Argument case.
Differential Revision: https://reviews.llvm.org/D120994
show more ...
|
| #
6467d1d2 |
| 04-Mar-2022 |
Nikita Popov <[email protected]> |
[CoroFrame] Remove unused insertSpills() return value (NFC)
|
|
Revision tags: llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1 |
|
| #
19279ffc |
| 07-Feb-2022 |
Michael Gottesman <[email protected]> |
[debug-info] If one sees a spill with a dbg.addr use, salvageDebugInfo upon it and don't hoist it.
This ensures that if we have a dbg.addr in a coroutine funclet that is on one of our function argum
[debug-info] If one sees a spill with a dbg.addr use, salvageDebugInfo upon it and don't hoist it.
This ensures that if we have a dbg.addr in a coroutine funclet that is on one of our function arguments, that the dbg.addr is not mapped to undef and also that later it isn't hoisted to the front of the basic block. Instead it remains at its original cloned location.
rdar://83957028
Differential Revision: https://reviews.llvm.org/D119576
show more ...
|
| #
22f4f942 |
| 11-Feb-2022 |
Arthur Eubanks <[email protected]> |
[CoroFrame][OpaquePtr] Remove getPointerElementType() call
Get it from the byval type instead.
|
|
Revision tags: llvmorg-15-init |
|
| #
e188aae4 |
| 31-Jan-2022 |
serge-sans-paille <[email protected]> |
Cleanup header dependencies in LLVMCore
Based on the output of include-what-you-use.
This is a big chunk of changes. It is very likely to break downstream code unless they took a lot of care in avo
Cleanup header dependencies in LLVMCore
Based on the output of include-what-you-use.
This is a big chunk of changes. It is very likely to break downstream code unless they took a lot of care in avoiding hidden ehader dependencies, something the LLVM codebase doesn't do that well :-/
I've tried to summarize the biggest change below:
- llvm/include/llvm-c/Core.h: no longer includes llvm-c/ErrorHandling.h - llvm/IR/DIBuilder.h no longer includes llvm/IR/DebugInfo.h - llvm/IR/IRBuilder.h no longer includes llvm/IR/IntrinsicInst.h - llvm/IR/LLVMRemarkStreamer.h no longer includes llvm/Support/ToolOutputFile.h - llvm/IR/LegacyPassManager.h no longer include llvm/Pass.h - llvm/IR/Type.h no longer includes llvm/ADT/SmallPtrSet.h - llvm/IR/PassManager.h no longer includes llvm/Pass.h nor llvm/Support/Debug.h
And the usual count of preprocessed lines: $ clang++ -E -Iinclude -I../llvm/include ../llvm/lib/IR/*.cpp -std=c++14 -fno-rtti -fno-exceptions | wc -l before: 6400831 after: 6189948
200k lines less to process is no that bad ;-)
Discourse thread on the topic: https://llvm.discourse.group/t/include-what-you-use-include-cleanup
Differential Revision: https://reviews.llvm.org/D118652
show more ...
|
| #
aa97bc11 |
| 21-Jan-2022 |
Nikita Popov <[email protected]> |
[NFC] Remove uses of PointerType::getElementType()
Instead use either Type::getPointerElementType() or Type::getNonOpaquePointerElementType().
This is part of D117885, in preparation for deprecatin
[NFC] Remove uses of PointerType::getElementType()
Instead use either Type::getPointerElementType() or Type::getNonOpaquePointerElementType().
This is part of D117885, in preparation for deprecating the API.
show more ...
|
|
Revision tags: llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
| #
e627f4ce |
| 05-Jan-2022 |
Chuanqi Xu <[email protected]> |
[NFC] [Coroutines] Rename ReuseFrameSlot to OptimizeFrame
We could use the variable as a flag to indicate if the optimization is on.
|
| #
7c0e0668 |
| 06-Dec-2021 |
Arnold Schwaighofer <[email protected]> |
[coro async] Don't use lifetime.start based alloca localization for ABI.Async/ABI.Retcon
Infinite loops can lead to an IR representation where the lifetime.end intrinsice is missing. The code to do
[coro async] Don't use lifetime.start based alloca localization for ABI.Async/ABI.Retcon
Infinite loops can lead to an IR representation where the lifetime.end intrinsice is missing. The code to do lifetime based optimization then fails to see that an address escapes (is life) accross a supspend.
Eventually, we could detect such situations and disable it under more narrow circumstances. For now, do the correct thing.
rdar://83635953
Differential Revision: https://reviews.llvm.org/D110949
show more ...
|