[Lldb-commits] [llvm] [lldb] Fix size in bytes of type DIEs when size in bits is not a multiple of 8 (PR #69741)
Michael Buch via lldb-commits
lldb-commits at lists.llvm.org
Thu Nov 9 22:33:29 PST 2023
================
@@ -298,6 +298,12 @@ ParsedDWARFTypeAttributes::ParsedDWARFTypeAttributes(const DWARFDIE &die) {
byte_size = form_value.Unsigned();
break;
+ case DW_AT_bit_size:
+ // Convert the bit size to byte size, and round it up to the minimum about
+ // of bytes that will fit the bits.
+ byte_size = (form_value.Unsigned() + 7) / 8;
----------------
Michael137 wrote:
Completely out of scope of the PR but wonder if we should introduce something in `llvm/Support/MathExtras.h` that does this for us.
```
clang-tools-extra/test/clang-tidy/checkers/bugprone/branch-clone.cpp:969: int n = (count + 7) / 8;
clang/test/SemaCXX/constexpr-duffs-device.cpp:6: unsigned long n = (count + 7) / 8;
clang/lib/CodeGen/Targets/X86.cpp:2988: uint64_t SizeInBytes = (CGF.getContext().getTypeSize(Ty) + 7) / 8;
flang/runtime/edit-input.cpp:84: auto significantBytes{static_cast<std::size_t>(digits * LOG2_BASE + 7) / 8};
lldb/source/Core/ValueObjectChild.cpp:172: (bitfield_end - *type_bit_size + 7) / 8;
lldb/source/Core/DumpDataExtractor.cpp:674: (llvm::APFloat::getSizeInBits(semantics) + 7) / 8;
lldb/source/Plugins/ExpressionParser/Clang/IRForTarget.cpp:1044: lldb::offset_t value_alignment = (*opt_alignment + 7ull) / 8ull;
lldb/source/Plugins/TypeSystem/Clang/TypeSystemClang.h:816: return (*bit_size + 7) / 8;
lldb/source/Symbol/CompilerType.cpp:561: return (*bit_size + 7) / 8;
lldb/source/Expression/Materializer.cpp:554: size_t byte_align = (*opt_bit_align + 7) / 8;
lldb/source/Expression/Materializer.cpp:952: size_t byte_align = (*opt_bit_align + 7) / 8;
lldb/source/Utility/Scalar.cpp:118: StoreIntToMemory(val, storage.data(), (val.getBitWidth() + 7) / 8);
llvm/include/llvm/CodeGen/MachineValueType.h:354: return {(BaseSize.getKnownMinValue() + 7) / 8, BaseSize.isScalable()};
llvm/include/llvm/CodeGen/TargetLowering.h:3466: uint32_t CondCodeActions[ISD::SETCC_INVALID][(MVT::VALUETYPE_SIZE + 7) / 8];
llvm/include/llvm/CodeGen/ValueTypes.h:375: return {(BaseSize.getKnownMinValue() + 7) / 8, BaseSize.isScalable()};
llvm/include/llvm/CodeGen/LowLevelType.h:187: return {(BaseSize.getKnownMinValue() + 7) / 8, BaseSize.isScalable()};
llvm/utils/TableGen/AsmWriterEmitter.cpp:407: unsigned BytesNeeded = ((OpcodeInfoBits - BitsLeft) + 7) / 8;
llvm/lib/Analysis/ConstantFolding.cpp:598: unsigned BytesLoaded = (IntType->getBitWidth() + 7) / 8;
llvm/lib/Target/M68k/M68kISelLowering.cpp:736: uint32_t OpSize = (VA.getLocVT().getSizeInBits() + 7) / 8;
llvm/lib/Target/NVPTX/NVPTXAsmPrinter.cpp:1834: size_t NumBytes = (Val.getBitWidth() + 7) / 8;
llvm/lib/Target/Lanai/MCTargetDesc/LanaiAsmBackend.cpp:101: unsigned NumBytes = (getFixupKindInfo(Kind).TargetSize + 7) / 8;
llvm/lib/Target/PowerPC/PPCISelLowering.cpp:5129: uint32_t OpSize = (Arg.getValueSizeInBits() + 7) / 8;
llvm/lib/Target/Mips/MCTargetDesc/MipsAsmBackend.cpp:258: unsigned NumBytes = (getFixupKindInfo(Kind).TargetSize + 7) / 8;
llvm/lib/Target/AMDGPU/AMDGPURegisterBankInfo.cpp:1360: const unsigned MemSize = (Ty.getSizeInBits() + 7) / 8;
llvm/lib/Target/AMDGPU/AMDGPULegalizerInfo.cpp:6441: const unsigned MemSize = (Size + 7) / 8;
llvm/lib/Target/SystemZ/MCTargetDesc/SystemZMCAsmBackend.cpp:183: unsigned Size = (BitSize + 7) / 8;
llvm/lib/Target/AArch64/AArch64FastISel.cpp:3087: unsigned ArgSize = (ArgVT.getSizeInBits() + 7) / 8;
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:6537: unsigned NumRegs = (Size + 7) / 8;
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp:7700: OpSize = (OpSize + 7) / 8;
llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp:7451: unsigned SizeInBytes = (Ty.getScalarSizeInBits() + 7) / 8;
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:19493: PtrOff = (BitWidth + 7 - NewBW) / 8 - PtrOff;
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:28001: Intervals.insert(0, (St->getMemoryVT().getSizeInBits() + 7) / 8,
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp:28021: int64_t Length = (Chain->getMemoryVT().getSizeInBits() + 7) / 8;
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:284: OffsetByte = -((AllocBefore + 7) / 8 + (BitWidth + 7) / 8);
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:291: Target.setBeforeBytes(AllocBefore, (BitWidth + 7) / 8);
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:301: OffsetByte = (AllocAfter + 7) / 8;
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:308: Target.setAfterBytes(AllocAfter, (BitWidth + 7) / 8);
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:1859: (AllocBefore + 7) / 8 - Target.allocatedBeforeBytes() - 1, 0);
llvm/lib/Transforms/IPO/WholeProgramDevirt.cpp:1861: (AllocAfter + 7) / 8 - Target.allocatedAfterBytes() - 1, 0);
llvm/lib/Transforms/Utils/VNCoercion.cpp:308: (DL.getTypeSizeInBits(SrcVal->getType()).getFixedValue() + 7) / 8;
llvm/lib/Transforms/Utils/VNCoercion.cpp:309: uint64_t LoadSize = (DL.getTypeSizeInBits(LoadTy).getFixedValue() + 7) / 8;
llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp:1112: return Log2_32_Ceil((TypeSizeFixed + 7) / 8);
mlir/lib/IR/Operation.cpp:160: propertiesStorageSize((fullPropertiesStorageSize + 7) / 8), name(name) {
```
https://github.com/llvm/llvm-project/pull/69741
More information about the lldb-commits
mailing list