[llvm] [SROA] Fix incorrect offsets for structured binding variables (PR #69007)
Adrian Prantl via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 16 15:30:27 PDT 2023
================
@@ -1782,8 +1782,34 @@ void at::deleteAll(Function *F) {
bool at::calculateFragmentIntersect(
const DataLayout &DL, const Value *Dest, uint64_t SliceOffsetInBits,
- uint64_t SliceSizeInBits, const DbgAssignIntrinsic *DAI,
- std::optional<DIExpression::FragmentInfo> &Result) {
+ uint64_t SliceSizeInBits, const DbgVariableIntrinsic *DVI,
+ std::optional<DIExpression::FragmentInfo> &Result,
+ uint64_t &NewExprOffsetInBits) {
+
+ // Only dbg.assign and dbg.declares are allowed because this function
+ // deals with memory locations. This isn't comprehensive because dbg.values
+ // are able to describe memory locations; support for dbg.values can be added
+ // if/when needed.
+ assert(isa<DbgAssignIntrinsic>(DVI) || isa<DbgDeclareInst>(DVI));
+
+ // There isn't a shared interface to get the "address" parts out of a
+ // dbg.declare and dbg.assign, so provide some wrappers now.
----------------
adrian-prantl wrote:
Should this be a virtual function?
https://github.com/llvm/llvm-project/pull/69007
More information about the llvm-commits
mailing list