SuccessChanges

Summary

  1. [AArch64] Respect reserved registers while renaming in LdSt opt. (details)
  2. [lldb][NFC] Remove all ASTContext getter wrappers from ClangASTContext (details)
  3. [SimplifyLibCalls] require fast-math-flags for pow(X, -0.5) transforms (details)
  4. [InstCombine] check alloc size in bitcast of geps fold (PR44321) (details)
Commit d269255b95151dcd232c8856206b7e79d70eda29 by florian_hahn
[AArch64] Respect reserved registers while renaming in LdSt opt.
We cannot pick reserved registers as rename registers.
Fixes https://bugs.llvm.org/show_bug.cgi?id=44358
The file was modifiedllvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp
The file was addedllvm/test/CodeGen/AArch64/stp-opt-with-renaming-reserved-regs.mir
Commit 49b206f95806f35ff8f9a715185355fc2a159760 by Raphael Isemann
[lldb][NFC] Remove all ASTContext getter wrappers from ClangASTContext
Their naming is misleading as they only return the ClangASTContext-owned
variables. For ClangASTContext instances constructed for a given
clang::ASTContext they silently generated duplicated instances
(e.g., a second IdentifierTable) that were essentially unusable.
This removes all these getters as they are anyway not very useful in
comparison to just calling the clang::ASTContext getters. The
initialization code has been moved to the CreateASTContext
initialization method so that all code for making our own
clang::ASTContext is in one place.
The file was modifiedlldb/unittests/Expression/ClangExpressionDeclMapTest.cpp
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/ClangExpressionParser.cpp
The file was modifiedlldb/source/Symbol/ClangASTContext.cpp
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.h
The file was modifiedlldb/include/lldb/Symbol/ClangASTContext.h
The file was modifiedlldb/source/Plugins/ExpressionParser/Clang/ClangASTSource.cpp
The file was modifiedlldb/unittests/TestingSupport/Symbol/ClangTestUtils.h
Commit 19f9f374d9afe3efd33dc1943d3d7fd2c54fba76 by spatel
[SimplifyLibCalls] require fast-math-flags for pow(X, -0.5) transforms
As discussed in PR44330: https://bugs.llvm.org/show_bug.cgi?id=44330
...the transform from pow(X, -0.5) libcall/intrinsic to reciprocal
square root can result in small deviations from the expected result due
to differences in the pow() implementation and/or the extra rounding
step from the division.
This patch proposes to allow that difference with either the
'approximate functions' or 'reassociate' FMF:
http://llvm.org/docs/LangRef.html#fast-math-flags
In practice, this likely means that the code is compiled with all of
'fast' (-ffast-math), but I have preserved the existing specializations
for -0.0/-INF that enable generating safe code if those special values
are allowed simultaneously with allowing approximation/reassociation.
The question about whether a similar restriction is needed for the
non-reciprocal case -- pow(X, 0.5) -- is deferred. That transform is
allowed without FMF currently, and this patch does not change that
behavior.
Differential Revision: https://reviews.llvm.org/D71706
The file was modifiedllvm/lib/Transforms/Utils/SimplifyLibCalls.cpp
The file was modifiedllvm/test/Transforms/InstCombine/pow-sqrt.ll
Commit 79c7fa31f3aafba77862325cdc70a3ece7f71950 by spatel
[InstCombine] check alloc size in bitcast of geps fold (PR44321)
We missed a constraint in D44833 when folding a bitcast into a GEP with
vector/array types. If the alloc sizes specified by the datalayout don't
match, this could miscompile as shown in:
https://bugs.llvm.org/show_bug.cgi?id=44321
Differential Revision: https://reviews.llvm.org/D71771
The file was modifiedllvm/lib/Transforms/InstCombine/InstructionCombining.cpp
The file was modifiedllvm/test/Transforms/InstCombine/gep-vector.ll