[llvm] [AMDGPU] Add AMDGPU specific variadic operation MCExprs (PR #82022)

Florian Mayer via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 6 19:35:16 PST 2024


fmayer wrote:

The hwasan build bot discovered a leak in this: https://lab.llvm.org/buildbot/#/builders/236/builds/9874/steps/10/logs/stdio

```
FAIL: LLVM :: MC/AMDGPU/mcexpr_amd.s (51486 of 78334)
******************** TEST 'LLVM :: MC/AMDGPU/mcexpr_amd.s' FAILED ********************
Exit Code: 134
Command Output (stderr):
--
RUN: at line 1: /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm_build_hwasan/bin/llvm-mc -triple amdgcn-amd-amdhsa < /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/test/MC/AMDGPU/mcexpr_amd.s | /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm_build_hwasan/bin/FileCheck --check-prefix=ASM /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/test/MC/AMDGPU/mcexpr_amd.s
+ /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm_build_hwasan/bin/llvm-mc -triple amdgcn-amd-amdhsa
+ /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm_build_hwasan/bin/FileCheck --check-prefix=ASM /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/test/MC/AMDGPU/mcexpr_amd.s
=================================================================
==1084675==ERROR: LeakSanitizer: detected memory leaks
Direct leak of 560 byte(s) in 12 object(s) allocated from:
    #0 0xaaaacd792484 in malloc /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp:151:3
    #1 0xaaaace59d814 in safe_malloc /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/Support/MemAlloc.h:26:18
    #2 0xaaaace59d814 in llvm::SmallVectorBase<unsigned int>::grow_pod(void*, unsigned long, unsigned long) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Support/SmallVector.cpp:143:15
    #3 0xaaaacdcbd9b4 in grow_pod /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:151:11
    #4 0xaaaacdcbd9b4 in grow /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:538:41
    #5 0xaaaacdcbd9b4 in reserve /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:678:13
    #6 0xaaaacdcbd9b4 in void llvm::SmallVectorImpl<llvm::MCExpr const*>::append<llvm::MCExpr const* const*, void>(llvm::MCExpr const* const*, llvm::MCExpr const* const*) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:699:11
    #7 0xaaaacdcbcb50 in SmallVector<const llvm::MCExpr *, void> /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1246:11
    #8 0xaaaacdcbcb50 in AMDGPUVariadicMCExpr /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h:37:21
    #9 0xaaaacdcbcb50 in llvm::AMDGPUVariadicMCExpr::create(llvm::AMDGPUVariadicMCExpr::VariadicKind, llvm::ArrayRef<llvm::MCExpr const*>, llvm::MCContext&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp:23:20
    #10 0xaaaacd8a3980 in (anonymous namespace)::AMDGPUAsmParser::parsePrimaryExpr(llvm::MCExpr const*&, llvm::SMLoc&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp:8314:17
    #11 0xaaaace4b2b2c in (anonymous namespace)::AsmParser::parseExpression(llvm::MCExpr const*&, llvm::SMLoc&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:1506:25
    #12 0xaaaace5213a0 in llvm::MCAsmParser::parseExpression(llvm::MCExpr const*&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/MCAsmParser.cpp:142:10
    #13 0xaaaace4a4440 in llvm::MCParserUtils::parseAssignmentExpression(llvm::StringRef, bool, llvm::MCAsmParser&, llvm::MCSymbol*&, llvm::MCExpr const*&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:6410:14
    #14 0xaaaace4c228c in (anonymous namespace)::AsmParser::parseAssignment(llvm::StringRef, (anonymous namespace)::AsmParser::AssignmentKind) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:2940:7
    #15 0xaaaace4c3b88 in (anonymous namespace)::AsmParser::parseDirectiveSet(llvm::StringRef, (anonymous namespace)::AsmParser::AssignmentKind) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:3026:7
    #16 0xaaaace4bcb38 in (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp
    #17 0xaaaace4a91f8 in (anonymous namespace)::AsmParser::Run(bool, bool) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:1003:19
    #18 0xaaaacd7d4e90 in AssembleInput(char const*, llvm::Target const*, llvm::SourceMgr&, llvm::MCContext&, llvm::MCStreamer&, llvm::MCAsmInfo&, llvm::MCSubtargetInfo&, llvm::MCInstrInfo&, llvm::MCTargetOptions const&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/tools/llvm-mc/llvm-mc.cpp:347:21
    #19 0xaaaacd7d1fe8 in main /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/tools/llvm-mc/llvm-mc.cpp:593:11
    #20 0xffffa7356dbc  (/lib/aarch64-linux-gnu/libc.so.6+0x26dbc) (BuildId: b3e2fd825ee86277a10a2c20b9fc836b101a2b7f)
    #21 0xffffa7356e94 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x26e94) (BuildId: b3e2fd825ee86277a10a2c20b9fc836b101a2b7f)
    #22 0xaaaacd78a6ac in _start (/b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm_build_hwasan/bin/llvm-mc+0x1eea6ac)
Direct leak of 80 byte(s) in 2 object(s) allocated from:
    #0 0xaaaacd792484 in malloc /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/compiler-rt/lib/hwasan/hwasan_allocation_functions.cpp:151:3
    #1 0xaaaace59d814 in safe_malloc /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/Support/MemAlloc.h:26:18
    #2 0xaaaace59d814 in llvm::SmallVectorBase<unsigned int>::grow_pod(void*, unsigned long, unsigned long) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Support/SmallVector.cpp:143:15
    #3 0xaaaacdcbd9b4 in grow_pod /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:151:11
    #4 0xaaaacdcbd9b4 in grow /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:538:41
    #5 0xaaaacdcbd9b4 in reserve /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:678:13
    #6 0xaaaacdcbd9b4 in void llvm::SmallVectorImpl<llvm::MCExpr const*>::append<llvm::MCExpr const* const*, void>(llvm::MCExpr const* const*, llvm::MCExpr const* const*) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:699:11
    #7 0xaaaacdcbcb50 in SmallVector<const llvm::MCExpr *, void> /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/include/llvm/ADT/SmallVector.h:1246:11
    #8 0xaaaacdcbcb50 in AMDGPUVariadicMCExpr /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.h:37:21
    #9 0xaaaacdcbcb50 in llvm::AMDGPUVariadicMCExpr::create(llvm::AMDGPUVariadicMCExpr::VariadicKind, llvm::ArrayRef<llvm::MCExpr const*>, llvm::MCContext&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCExpr.cpp:23:20
    #10 0xaaaacd8a3980 in (anonymous namespace)::AMDGPUAsmParser::parsePrimaryExpr(llvm::MCExpr const*&, llvm::SMLoc&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/Target/AMDGPU/AsmParser/AMDGPUAsmParser.cpp:8314:17
    #11 0xaaaace4f4184 in (anonymous namespace)::AsmParser::parseBinOpRHS(unsigned int, llvm::MCExpr const*&, llvm::SMLoc&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:1765:27
    #12 0xaaaace4b2b94 in (anonymous namespace)::AsmParser::parseExpression(llvm::MCExpr const*&, llvm::SMLoc&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:1507:7
    #13 0xaaaace5213a0 in llvm::MCAsmParser::parseExpression(llvm::MCExpr const*&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/MCAsmParser.cpp:142:10
    #14 0xaaaace4a4440 in llvm::MCParserUtils::parseAssignmentExpression(llvm::StringRef, bool, llvm::MCAsmParser&, llvm::MCSymbol*&, llvm::MCExpr const*&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:6410:14
    #15 0xaaaace4c228c in (anonymous namespace)::AsmParser::parseAssignment(llvm::StringRef, (anonymous namespace)::AsmParser::AssignmentKind) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:2940:7
    #16 0xaaaace4c3b88 in (anonymous namespace)::AsmParser::parseDirectiveSet(llvm::StringRef, (anonymous namespace)::AsmParser::AssignmentKind) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:3026:7
    #17 0xaaaace4bcb38 in (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&, llvm::MCAsmParserSemaCallback*) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp
    #18 0xaaaace4a91f8 in (anonymous namespace)::AsmParser::Run(bool, bool) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/lib/MC/MCParser/AsmParser.cpp:1003:19
    #19 0xaaaacd7d4e90 in AssembleInput(char const*, llvm::Target const*, llvm::SourceMgr&, llvm::MCContext&, llvm::MCStreamer&, llvm::MCAsmInfo&, llvm::MCSubtargetInfo&, llvm::MCInstrInfo&, llvm::MCTargetOptions const&) /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/tools/llvm-mc/llvm-mc.cpp:347:21
    #20 0xaaaacd7d1fe8 in main /b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm-project/llvm/tools/llvm-mc/llvm-mc.cpp:593:11
    #21 0xffffa7356dbc  (/lib/aarch64-linux-gnu/libc.so.6+0x26dbc) (BuildId: b3e2fd825ee86277a10a2c20b9fc836b101a2b7f)
    #22 0xffffa7356e94 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x26e94) (BuildId: b3e2fd825ee86277a10a2c20b9fc836b101a2b7f)
    #23 0xaaaacd78a6ac in _start (/b/sanitizer-aarch64-linux-bootstrap-hwasan/build/llvm_build_hwasan/bin/llvm-mc+0x1eea6ac)
SUMMARY: HWAddressSanitizer: 640 byte(s) leaked in 14 allocation(s).
libc++abi: Pure virtual function called!

```

https://github.com/llvm/llvm-project/pull/82022


More information about the llvm-commits mailing list