[all-commits] [llvm/llvm-project] d10b73: [LVI][CVP] Treat undef like a full range (#68190)
Owen Pan via All-commits
all-commits at lists.llvm.org
Mon Oct 16 01:18:09 PDT 2023
Branch: refs/heads/release/17.x
Home: https://github.com/llvm/llvm-project
Commit: d10b731adcc8874f67d097e032b04ebc7c2e3619
https://github.com/llvm/llvm-project/commit/d10b731adcc8874f67d097e032b04ebc7c2e3619
Author: DianQK <dianqk at dianqk.net>
Date: 2023-10-16 (Mon, 16 Oct 2023)
Changed paths:
M llvm/lib/Analysis/LazyValueInfo.cpp
M llvm/test/Transforms/CorrelatedValuePropagation/merge-range-and-undef.ll
Log Message:
-----------
[LVI][CVP] Treat undef like a full range (#68190)
When converting to ConstantRange, we should treat undef like a full range.
Fixes #68381.
(cherry picked from commit 81857940f278e21f7957a2833d4b6ec72819e79f)
Commit: f50c6382c7163bed4d2d003465354249b7832bc6
https://github.com/llvm/llvm-project/commit/f50c6382c7163bed4d2d003465354249b7832bc6
Author: Martin Storsjö <martin at martin.st>
Date: 2023-10-16 (Mon, 16 Oct 2023)
Changed paths:
M clang/lib/Driver/ToolChains/MinGW.cpp
M clang/test/Driver/mingw.cpp
Log Message:
-----------
[clang] [MinGW] Explicitly always pass the -fno-use-init-array (#68571)
On MinGW targets, the .ctors section is always used for constructors.
When using the .ctors section, the constructors need to be emitted in
reverse order to get them execute in the right order. (Constructors with
a specific priority are sorted separately by the linker later.) In LLVM,
in CodeGen/AsmPrinter/AsmPrinter.cpp, there's code that reverses them
before writing them out, executed when using the .ctors section. This
logic is done whenever TM.Options.UseInitArray is set to false. Thus,
make sure to set UseInitArray to false for this target.
This fixes https://github.com/llvm/llvm-project/issues/55938.
(cherry picked from commit a2b8c49c1839076b540c542c024fcfe2361a3e47)
Commit: 496b174053bd77d2a47de16dbf86146109979590
https://github.com/llvm/llvm-project/commit/496b174053bd77d2a47de16dbf86146109979590
Author: Noah Goldstein <goldstein.w.n at gmail.com>
Date: 2023-10-16 (Mon, 16 Oct 2023)
Changed paths:
M llvm/test/CodeGen/X86/movmsk-cmp.ll
Log Message:
-----------
[X86] Add tests for incorrectly optimizing out shuffle used in `movmsk`; PR67287
(cherry picked from commit 65a576e27be814bd23f39b31a8074e9850b0fe26)
Commit: be4016e52779e07f0a433a0a1b07ddb1c8938428
https://github.com/llvm/llvm-project/commit/be4016e52779e07f0a433a0a1b07ddb1c8938428
Author: Noah Goldstein <goldstein.w.n at gmail.com>
Date: 2023-10-16 (Mon, 16 Oct 2023)
Changed paths:
M llvm/lib/Target/X86/X86ISelLowering.cpp
M llvm/test/CodeGen/X86/movmsk-cmp.ll
Log Message:
-----------
[X86] Fix logic for optimizing movmsk(bitcast(shuffle(x))); PR67287
Prior logic would remove the shuffle iff all of the elements in `x`
where used. This is incorrect.
The issue is `movmsk` only cares about the highbits, so if the width
of the elements in `x` is smaller than the width of the elements
for the `movmsk`, then the shuffle, even if it preserves all the elements,
may change which ones are used by the highbits.
For example:
`movmsk64(bitcast(shuffle32(x, (1,0,3,2))))`
Even though the shuffle mask `(1,0,3,2)` preserves all the elements, it
flips which will be relevant to the `movmsk64` (x[1] and x[3]
before and x[0] and x[2] after).
The fix here, is to ensure that the shuffle mask can be scaled to the
element width of the `movmsk` instruction. This ensure that the
"high" elements stay "high". This is overly conservative as it
misses cases like `(1,1,3,3)` where the "high" elements stay
intact despite not be scalable, but for an relatively edge-case
optimization that should generally be handled during
simplifyDemandedBits, it seems okay.
(cherry picked from commit 1684c65bc997a8ce0ecf96a493784fe39def75de)
Commit: 7a23a5d43c6738e5a1c1b8b366d7521b8b4eef59
https://github.com/llvm/llvm-project/commit/7a23a5d43c6738e5a1c1b8b366d7521b8b4eef59
Author: Owen Pan <owenpiano at gmail.com>
Date: 2023-10-16 (Mon, 16 Oct 2023)
Changed paths:
M clang/lib/Format/UnwrappedLineParser.cpp
M clang/lib/Format/UnwrappedLineParser.h
M clang/unittests/Format/FormatTest.cpp
Log Message:
-----------
[clang-format] Fix a bug in RemoveParentheses: ReturnStatement (#67911)
Don't remove the outermost parentheses surrounding a return statement
expression when inside a function/lambda that has the decltype(auto)
return type.
Fixed #67892.
(cherry picked from commit 75441a684273268ce91036aa2c770e669d39f501)
Compare: https://github.com/llvm/llvm-project/compare/37b79e779f44...7a23a5d43c67
More information about the All-commits
mailing list