[NFC][Support] Implement slash-agnostic path matching in GlobPattern (#202854)
Add a SlashAgnostic option to GlobPattern to allow matching path
separators
(both forward slashes and backslashes) agnostically.
When enabled:
- We conservatively reduce the plain prefix and suffix by treating path
separators as metacharacters. This ensures that path separators are
matched via the slash-agnostic state machine rather than plain string
comparison.
- Brackets containing slashes are adjusted to match both separators.
- Character comparisons in the state machine (matchChar) treat '/' and
'\' as equivalent.
For #149886.
Co-authored-by: Devon Loehr <DKLoehr at users.noreply.github.com>
Assisted-by: Gemini
[RISCV] Fix ensureDominates with successive defs (#203174)
In RISCVVectorPeephole when we want to sink a use so that it's below
multiple defs, if the defs are beside each other then we will end up
checking if !dominates(Dest, Dest). This should be
!strictlyDominates(Dest, Dest), otherwise we don't sink the use far
enough.
Fixes #202894
Co-authored-by: Pengcheng Wang <wangpengcheng.pp at bytedance.com>
[IR] Allocas cannot be freed (#202875)
Make canBeFreed() return false for alloca instructions. This matches the
modelling in getPointerDereferenceableBytes(), and as such only affects
the single other caller, which is loop load PRE (resolving the TODO
there).
allocas remain dereferenceable after lifetime.end, in the sense that
it's safe to speculatively load from them. They only become
non-writable, and I don't think this API is responsible for tracking
that (that would be isWritableObject, where unconditionally returning
true for allocas is technically incorrect and it already has a TODO to
that effect). To the best of my knowledge, the only transform that is
affected by lifetime.end making allocas non-writable is scalar promotion
with store speculation in LICM, so a fix to this issue will either be
localized there, or be part of a full lifetime redesign. In any case, it
should not infect the canBeFreed() API.
[RISCV] Add partial support for -fzero-call-used-regs (#194883)
This implements the "-fzero-call-used-regs" option on RISCV for the
"skip" and "*gpr*" arguments. Zeroing floating points and vector
registers will be implemented later.
[SpecialCaseList] Add backward compatible dot-slash handling (#162511)
This PR is preparation for:
* https://github.com/llvm/llvm-project/pull/167283
The new behavior is controlled by the `Version` field in the special
case list file.
- Version 1 and 2: Path is matched as-is, regardless of presence of
"./".
- Version 3, 5 and higher: Paths with leading dot-slash are
canonicalized
to paths without dot-slash before matching. This means that a rule
like `src=./foo` will never match, and `src=foo` will match both
`foo` and `./foo`. (Version 3 never became default but has this
behavior).
- Version 4: Transitionary version. Paths are matched both ways
(canonicalized and non-canonicalized) to maintain backward
compatibility.
[6 lines not shown]
[clang][bytecode] Diagnose more pointer comparisons (#201588)
Diagnose comparisons between base classes as well as base classes and
fields. Also add some test cases for things that currently fail because
we compute the wrong offset.
[LoopInterchange] Add test for partially-perfect loop nests (NFC) (#201507)
This PR adds test case for the imperfect loop nest case in
LoopInterchange. The corresponding support is being added in
https://github.com/llvm/llvm-project/pull/199511.
[LoopFusion] Emit optimization remarks regardless of statistics (#202012)
The fusion remark helpers built their messages from a Statistic's name
and description and guarded the ORE.emit calls with #if LLVM_ENABLE_STATS,
so a Release build with statistics disabled emitted no -Rpass /
-Rpass-missed remarks at all.
Make the remark helpers take the remark name and message as explicit
strings so they are implemented independently of the statistics, and
emit the remarks unconditionally. The statistics keep using the plain
STATISTIC macro and are incremented at the call sites.
[SpecialCaseList] Add backward compatible dot-slash handling
This PR is preparation for:
* https://github.com/llvm/llvm-project/pull/167283
The new behavior is controlled by the `Version` field in the special
case list file.
- Version 1 and 2: Path is matched as-is, regardless of presence of "./".
- Version 3, 5 and higher: Paths with leading dot-slash are canonicalized
to paths without dot-slash before matching. This means that a rule
like `src=./foo` will never match, and `src=foo` will match both
`foo` and `./foo`. (Version 3 never became default but has this behavior).
- Version 4: Transitionary version. Paths are matched both ways
(canonicalized and non-canonicalized) to maintain backward compatibility.
If a match only works with the old behavior (non-canonicalized), a warning
is emitted.
This change allows for a gradual transition to the new behavior, while
[6 lines not shown]
net/cloudflared: make only header static
Feature will be new in 26.1.10, apparently an omission from
an earlier extension pertaining to dialogs but not forms.