[PATCH] D42489: [GlobalOpt] Emit fragments using field offsets from struct layout
Mikael Holmén via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 25 02:13:01 PST 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL323411: [GlobalOpt] Emit fragments using field offsets from struct layout (authored by uabelho, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D42489?vs=131277&id=131404#toc
Repository:
rL LLVM
https://reviews.llvm.org/D42489
Files:
llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
llvm/trunk/test/DebugInfo/Generic/global-sra-struct.ll
Index: llvm/trunk/test/DebugInfo/Generic/global-sra-struct.ll
===================================================================
--- llvm/trunk/test/DebugInfo/Generic/global-sra-struct.ll
+++ llvm/trunk/test/DebugInfo/Generic/global-sra-struct.ll
@@ -24,7 +24,7 @@
; CHECK: ![[EL0]] = !DIGlobalVariableExpression(var: ![[VAR:.*]], expr: !DIExpression(DW_OP_LLVM_fragment, 0, 32))
; CHECK: ![[VAR]] = distinct !DIGlobalVariable(name: "static_struct"
-; CHECK: ![[EL1]] = !DIGlobalVariableExpression(var: ![[VAR]], expr: !DIExpression(DW_OP_LLVM_fragment, 32, 64))
+; CHECK: ![[EL1]] = !DIGlobalVariableExpression(var: ![[VAR]], expr: !DIExpression(DW_OP_LLVM_fragment, 64, 64))
@static_struct = internal global %struct.mystruct zeroinitializer, align 8, !dbg !0
Index: llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
===================================================================
--- llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
+++ llvm/trunk/lib/Transforms/IPO/GlobalOpt.cpp
@@ -483,7 +483,6 @@
StartAlignment = DL.getABITypeAlignment(GV->getType());
if (StructType *STy = dyn_cast<StructType>(Ty)) {
- uint64_t FragmentOffset = 0;
unsigned NumElements = STy->getNumElements();
NewGlobals.reserve(NumElements);
const StructLayout &Layout = *DL.getStructLayout(STy);
@@ -509,10 +508,9 @@
NGV->setAlignment(NewAlign);
// Copy over the debug info for the variable.
- FragmentOffset = alignTo(FragmentOffset, NewAlign);
uint64_t Size = DL.getTypeSizeInBits(NGV->getValueType());
- transferSRADebugInfo(GV, NGV, FragmentOffset, Size, NumElements);
- FragmentOffset += Size;
+ uint64_t FragmentOffsetInBits = Layout.getElementOffsetInBits(i);
+ transferSRADebugInfo(GV, NGV, FragmentOffsetInBits, Size, NumElements);
}
} else if (SequentialType *STy = dyn_cast<SequentialType>(Ty)) {
unsigned NumElements = STy->getNumElements();
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D42489.131404.patch
Type: text/x-patch
Size: 1926 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180125/4c04e5ac/attachment.bin>
More information about the llvm-commits
mailing list