[llvm] 6784adc - Fix DXContainer test on ppcbe
Chris Bieneman via llvm-commits
llvm-commits at lists.llvm.org
Wed Jun 1 18:20:05 PDT 2022
Author: Chris Bieneman
Date: 2022-06-01T20:19:59-05:00
New Revision: 6784adc63d76e9ac231e1f3f0cdf05c8b5f6c0e9
URL: https://github.com/llvm/llvm-project/commit/6784adc63d76e9ac231e1f3f0cdf05c8b5f6c0e9
DIFF: https://github.com/llvm/llvm-project/commit/6784adc63d76e9ac231e1f3f0cdf05c8b5f6c0e9.diff
LOG: Fix DXContainer test on ppcbe
Silly mistake, the code here was byteswapping in-place which corrupts
the data structure that is used later to write the correct file.
Added:
Modified:
llvm/lib/ObjectYAML/DXContainerEmitter.cpp
Removed:
################################################################################
diff --git a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
index 5400f070d637f..47290853848e7 100644
--- a/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
+++ b/llvm/lib/ObjectYAML/DXContainerEmitter.cpp
@@ -96,11 +96,13 @@ void DXContainerWriter::writeHeader(raw_ostream &OS) {
if (sys::IsBigEndianHost)
Header.swapBytes();
OS.write(reinterpret_cast<char *>(&Header), sizeof(Header));
- for (auto &O : *ObjectFile.Header.PartOffsets)
- if (sys::IsBigEndianHost)
+ SmallVector<uint32_t> Offsets(ObjectFile.Header.PartOffsets->begin(),
+ ObjectFile.Header.PartOffsets->end());
+ if (sys::IsBigEndianHost)
+ for (auto &O : Offsets)
sys::swapByteOrder(O);
- OS.write(reinterpret_cast<char *>(ObjectFile.Header.PartOffsets->data()),
- ObjectFile.Header.PartOffsets->size() * sizeof(uint32_t));
+ OS.write(reinterpret_cast<char *>(Offsets.data()),
+ Offsets.size() * sizeof(uint32_t));
}
void DXContainerWriter::writeParts(raw_ostream &OS) {
uint32_t RollingOffset =
More information about the llvm-commits
mailing list