diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp index c0ecae849bd..176708951d0 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUAsmPrinter.cpp @@ -886,13 +886,19 @@ void AMDGPUAsmPrinter::emitRuntimeMetadata(const Function &F) { unsigned I = Arg.getArgNo(); OutStreamer->EmitIntValue(RuntimeMD::KeyArgBegin, 1); - // Emit KeyArgSize and KeyArgAlign. + // Emit KeyArgSize, KeyArgAlign and KeyArgPointeeAlign. Type *T = Arg.getType(); const DataLayout &DL = F.getParent()->getDataLayout(); emitRuntimeMDIntValue(*OutStreamer, RuntimeMD::KeyArgSize, DL.getTypeAllocSize(T), 4); emitRuntimeMDIntValue(*OutStreamer, RuntimeMD::KeyArgAlign, DL.getABITypeAlignment(T), 4); + if (auto PT = dyn_cast<PointerType>(T)) { + auto ET = PT->getElementType(); + if (ET->isSized()) + emitRuntimeMDIntValue(*OutStreamer, RuntimeMD::KeyArgPointeeAlign, + DL.getABITypeAlignment(ET), 4); + } // Emit KeyArgTypeName. auto TypeName = dyn_cast<MDString>(F.getMetadata( |