[llvm] 925aa51 - AMDGPU: Use DataExtractor for printf string extraction
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 9 11:03:46 PST 2023
Author: Matt Arsenault
Date: 2023-01-09T14:03:42-05:00
New Revision: 925aa514eda8becf088c3e605aa17dc569586334
URL: https://github.com/llvm/llvm-project/commit/925aa514eda8becf088c3e605aa17dc569586334
DIFF: https://github.com/llvm/llvm-project/commit/925aa514eda8becf088c3e605aa17dc569586334.diff
LOG: AMDGPU: Use DataExtractor for printf string extraction
Attempt 2 to fix big endian bot failures.
Added:
Modified:
llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp b/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp
index b11b9546e7d1..18dbf5d08b0b 100644
--- a/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp
+++ b/llvm/lib/Target/AMDGPU/AMDGPUPrintfRuntimeBinding.cpp
@@ -27,7 +27,7 @@
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instructions.h"
#include "llvm/InitializePasses.h"
-#include "llvm/Support/BinaryByteStream.h"
+#include "llvm/Support/DataExtractor.h"
#include "llvm/Transforms/Utils/BasicBlockUtils.h"
using namespace llvm;
@@ -430,20 +430,21 @@ bool AMDGPUPrintfRuntimeBindingImpl::lowerPrintfForGpu(Module &M) {
}
if (!S.empty()) {
- const size_t NSizeStr = S.size() + 1;
const uint64_t ReadSize = 4;
- BinaryByteStream Streamer(S, support::little);
+ DataExtractor Extractor(S, /*IsLittleEndian=*/true, 8);
+ DataExtractor::Cursor Offset(0);
+ while (Offset && Offset.tell() < S.size()) {
+ StringRef ReadBytes = Extractor.getBytes(
+ Offset, std::min(ReadSize, S.size() - Offset.tell()));
- for (uint64_t Offset = 0; Offset < NSizeStr; Offset += ReadSize) {
- ArrayRef<uint8_t> ReadBytes;
- if (Error Err = Streamer.readBytes(
- Offset, std::min(ReadSize, S.size() - Offset), ReadBytes))
- cantFail(std::move(Err),
- "failed to read bytes from constant array");
+ cantFail(Offset.takeError(),
+ "failed to read bytes from constant array");
APInt IntVal(8 * ReadBytes.size(), 0);
- LoadIntFromMemory(IntVal, ReadBytes.data(), ReadBytes.size());
+ LoadIntFromMemory(
+ IntVal, reinterpret_cast<const uint8_t *>(ReadBytes.data()),
+ ReadBytes.size());
// TODO: Should not bothering aligning up.
if (ReadBytes.size() < ReadSize)
More information about the llvm-commits
mailing list