[PATCH] D100188: [AMDGPU] SIFoldOperands: eagerly erase dead REG_SEQUENCEs

Mitch Phillips via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 9 15:05:02 PDT 2021


hctim added a comment.

Looks like this patch might have broken the ASan buildbots (https://lab.llvm.org/buildbot/#/builders/99/builds/2766):

Waiting on that build to finish and bisecting locally, but here's the ASan report from one of the relevant test failures. Full repro instructions at 
https://github.com/google/sanitizers/wiki/SanitizerBotReproduceBuild, but I believe this should be reproducible using `check-llvm` with cmake `-DLLVM_USE_SANITIZER=Address`.

  FAIL: LLVM :: CodeGen/AMDGPU/wwm-reserved.ll (35874 of 75435)
  ******************** TEST 'LLVM :: CodeGen/AMDGPU/wwm-reserved.ll' FAILED ********************
  Script:
  --
  : 'RUN: at line 1';   /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc -O0 -march=amdgcn -mcpu=gfx900 -amdgpu-dpp-combine=false -verify-machineinstrs < /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/test/CodeGen/AMDGPU/wwm-reserved.ll | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck -check-prefixes=GFX9,GFX9-O0 /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/test/CodeGen/AMDGPU/wwm-reserved.ll
  : 'RUN: at line 2';   /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc -march=amdgcn -mcpu=gfx900 -amdgpu-dpp-combine=false -verify-machineinstrs < /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/test/CodeGen/AMDGPU/wwm-reserved.ll | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck -check-prefixes=GFX9,GFX9-O3 /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/test/CodeGen/AMDGPU/wwm-reserved.ll
  --
  Exit Code: 2
  Command Output (stderr):
  --
  =================================================================
  ==28739==ERROR: AddressSanitizer: use-after-poison on address 0x621000278298 at pc 0x000005ad3340 bp 0x7fff5c6564f0 sp 0x7fff5c6564e8
  READ of size 8 at 0x621000278298 thread T0
      #0 0x5ad333f in getOpcode /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h:478:39
      #1 0x5ad333f in isRegSequence /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h:1272:12
      #2 0x5ad333f in (anonymous namespace)::SIFoldOperands::runOnMachineFunction(llvm::MachineFunction&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Target/AMDGPU/SIFoldOperands.cpp:1807:39
      #3 0x91e1d53 in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:72:13
      #4 0x9fbe63c in llvm::FPPassManager::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1439:27
      #5 0x847fa3b in RunPassOnSCC /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:178:25
      #6 0x847fa3b in RunAllPassesOnSCC /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:476:9
      #7 0x847fa3b in (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:541:18
      #8 0x9fc08b8 in runOnModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1554:27
      #9 0x9fc08b8 in llvm::legacy::PassManagerImpl::run(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:542:44
      #10 0x4b13085 in compileModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/tools/llc/llc.cpp:687:8
      #11 0x4b13085 in main /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/tools/llc/llc.cpp:388:22
      #12 0x7f164c90a09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
      #13 0x4a336e9 in _start (/b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc+0x4a336e9)
  0x621000278298 is located 3480 bytes inside of 4096-byte region [0x621000277500,0x621000278500)
  allocated by thread T0 here:
      #0 0x4b09ee8 in operator new(unsigned long) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/compiler-rt/lib/asan/asan_new_delete.cpp:99:3
      #1 0x4f7d4b6 in Allocate /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/Support/AllocatorBase.h:85:12
      #2 0x4f7d4b6 in llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>::StartNewSlab() /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/Support/Allocator.h:335:21
      #3 0x4f7d1d2 in llvm::BumpPtrAllocatorImpl<llvm::MallocAllocator, 4096ul, 4096ul, 128ul>::Allocate(unsigned long, llvm::Align) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/Support/Allocator.h:190:5
      #4 0x91baad7 in Allocate /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/Support/Allocator.h:204:12
      #5 0x91baad7 in operator new<llvm::MallocAllocator, 4096, 4096, 128> /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/Support/Allocator.h:437:20
      #6 0x91baad7 in llvm::MachineFunction::init() /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/CodeGen/MachineFunction.cpp:160:15
      #7 0x9279d61 in llvm::MachineModuleInfo::getOrCreateMachineFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/CodeGen/MachineModuleInfo.cpp:296:14
      #8 0x91e1b8b in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/CodeGen/MachineFunctionPass.cpp:44:29
      #9 0x9fbe63c in llvm::FPPassManager::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1439:27
      #10 0x847fa3b in RunPassOnSCC /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:178:25
      #11 0x847fa3b in RunAllPassesOnSCC /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:476:9
      #12 0x847fa3b in (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/Analysis/CallGraphSCCPass.cpp:541:18
      #13 0x9fc08b8 in runOnModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:1554:27
      #14 0x9fc08b8 in llvm::legacy::PassManagerImpl::run(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/lib/IR/LegacyPassManager.cpp:542:44
      #15 0x4b13085 in compileModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/tools/llc/llc.cpp:687:8
      #16 0x4b13085 in main /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/tools/llc/llc.cpp:388:22
      #17 0x7f164c90a09a in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x2409a)
  SUMMARY: AddressSanitizer: use-after-poison /b/sanitizer-x86_64-linux-bootstrap/build/llvm-project/llvm/include/llvm/CodeGen/MachineInstr.h:478:39 in getOpcode
  Shadow bytes around the buggy address:
    0x0c4280047000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 f7
    0x0c4280047010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0c4280047020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0c4280047030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    0x0c4280047040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
  =>0x0c4280047050: f7 f7 f7[f7]f7 f7 f7 f7 f7 f7 f7 00 00 00 00 00
    0x0c4280047060: 00 00 00 00 f7 00 00 00 00 00 00 00 00 00 f7 00
    0x0c4280047070: 00 00 00 00 00 00 00 f7 00 00 00 00 00 00 00 00
    0x0c4280047080: 00 f7 00 00 00 00 00 00 00 00 f7 00 00 00 00 00
    0x0c4280047090: 00 00 00 00 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7 f7
    0x0c42800470a0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  Shadow byte legend (one shadow byte represents 8 application bytes):
    Addressable:           00
    Partially addressable: 01 02 03 04 05 06 07 
    Heap left redzone:       fa
    Freed heap region:       fd
    Stack left redzone:      f1
    Stack mid redzone:       f2
    Stack right redzone:     f3
    Stack after return:      f5
    Stack use after scope:   f8
    Global redzone:          f9
    Global init order:       f6
    Poisoned by user:        f7
    Container overflow:      fc
    Array cookie:            ac
    Intra object redzone:    bb
    ASan internal:           fe
    Left alloca redzone:     ca
    Right alloca redzone:    cb
    Shadow gap:              cc
  ==28739==ABORTING


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D100188/new/

https://reviews.llvm.org/D100188



More information about the llvm-commits mailing list