aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/MachineScheduler.cpp
diff options
context:
space:
mode:
authorNikita Popov <npopov@redhat.com>2025-02-13 09:36:35 +0100
committerGitHub <noreply@github.com>2025-02-13 09:36:35 +0100
commitee655ca27aad466bcc54f6eba03f7e564940ad5a (patch)
tree931f52c4f0979e5abf40717b90a121f979cf9b36 /llvm/lib/CodeGen/MachineScheduler.cpp
parent3bf425764e1837e909263a7e61a13e2308dc7d5f (diff)
downloadllvm-ee655ca27aad466bcc54f6eba03f7e564940ad5a.zip
llvm-ee655ca27aad466bcc54f6eba03f7e564940ad5a.tar.gz
llvm-ee655ca27aad466bcc54f6eba03f7e564940ad5a.tar.bz2
[CaptureTracking][FunctionAttrs] Add support for CaptureInfo (#125880)
This extends CaptureTracking to support inferring non-trivial CaptureInfos. The focus of this patch is to only support FunctionAttrs, other users of CaptureTracking will be updated in followups. The key API changes here are: * DetermineUseCaptureKind() now returns a UseCaptureInfo where the UseCC component specifies what is captured at that Use and the ResultCC component specifies what may be captured via the return value of the User. Usually only one or the other will be used (corresponding to previous MAY_CAPTURE or PASSTHROUGH results), but both may be set for call captures. * The CaptureTracking::captures() extension point is passed this UseCaptureInfo as well and then can decide what to do with it by returning an Action, which is one of: Stop: stop traversal. ContinueIgnoringReturn: continue traversal but don't follow the instruction return value. Continue: continue traversal and follow the instruction return value if it has additional CaptureComponents. For now, this patch retains the (unsound) special logic for comparison of null with a dereferenceable pointer. I'd like to switch key code to take advantage of address/address_is_null before dropping it. This PR mainly intends to introduce necessary API changes and basic inference support, there are various possible improvements marked with TODOs.
Diffstat (limited to 'llvm/lib/CodeGen/MachineScheduler.cpp')
0 files changed, 0 insertions, 0 deletions