[llvm] r340171 - AMDGPU: bump AS.MAX_COMMON_ADDRESS to 6 since 32-bit addr space

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 20 11:36:45 PDT 2018


Not sure how this suppose to work.
Now MAX_COMMON_ADDRESS allows to have AS1 and AS2 == 6
and (*ASAliasRules)[AS1][AS2].
but ASAliasRulesPrivIsZero and ASAliasRulesGenIsZero had only 6 elements

If no one is looking, I am going to revert.

On Mon, Aug 20, 2018 at 11:24 AM Vitaly Buka <vitalybuka at google.com> wrote:

> Similar for msan
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-msan/builds/6784
> and ubsan
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap-ubsan/builds/5631/steps/check-llvm%20ubsan/logs/stdio
>
> On Mon, Aug 20, 2018 at 11:22 AM Vitaly Buka <vitalybuka at google.com>
> wrote:
>
>> This looks caused by the patch
>>
>> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/6883/steps/check-llvm%20asan/logs/stdio
>>
>> FAIL: LLVM :: CodeGen/AMDGPU/amdgpu-alias-analysis.ll (5325 of 27229)
>> ******************** TEST 'LLVM :: CodeGen/AMDGPU/amdgpu-alias-analysis.ll' FAILED ********************
>> Script:
>> --
>> : 'RUN: at line 1';   /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/opt -mtriple=amdgcn-- -O3 -aa-eval -print-all-alias-modref-info -disable-output < /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll 2>&1 | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll
>> : 'RUN: at line 2';   /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/opt -mtriple=r600-- -O3 -aa-eval -print-all-alias-modref-info -disable-output < /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll 2>&1 | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll
>> --
>> Exit Code: 1
>>
>> Command Output (stderr):
>> --
>> /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll:10:10: error: CHECK: expected string not found in input
>> ; CHECK: NoAlias: i8 addrspace(1)* %p1, i8 addrspace(6)* %p
>>          ^
>> <stdin>:3:1: note: scanning from here
>> Function: test_32bit_addr_space: 2 pointers, 0 call sites
>> ^
>> <stdin>:3:5: note: possible intended match here
>> Function: test_32bit_addr_space: 2 pointers, 0 call sites
>>     ^
>>
>> --
>>
>> ********************
>> Testing: 0 .. 10.. 20
>> FAIL: LLVM :: CodeGen/AMDGPU/widen-smrd-loads.ll (6391 of 27229)
>> ******************** TEST 'LLVM :: CodeGen/AMDGPU/widen-smrd-loads.ll' FAILED ********************
>> Script:
>> --
>> : 'RUN: at line 1';   /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc -amdgpu-codegenprepare-widen-constant-loads=0 -march=amdgcn -mcpu=tahiti -verify-machineinstrs < /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/widen-smrd-loads.ll | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck -enable-var-scope -check-prefixes=GCN,SI /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/widen-smrd-loads.ll
>> : 'RUN: at line 2';   /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc -amdgpu-codegenprepare-widen-constant-loads=0 -march=amdgcn -mcpu=tonga -verify-machineinstrs < /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/widen-smrd-loads.ll | /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/FileCheck -enable-var-scope -check-prefixes=GCN,VI /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/widen-smrd-loads.ll
>> --
>> Exit Code: 1
>>
>> Command Output (stderr):
>> --
>> =================================================================
>> ==22327==ERROR: AddressSanitizer: global-buffer-overflow on address 0x000007134b68 at pc 0x0000012c05c8 bp 0x7fff2e2b6b40 sp 0x7fff2e2b6b38
>> READ of size 1 at 0x000007134b68 thread T0
>>     #0 0x12c05c7 in getAliasResult /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp:99:10
>>     #1 0x12c05c7 in llvm::AMDGPUAAResult::alias(llvm::MemoryLocation const&, llvm::MemoryLocation const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp:107
>>     #2 0x3367dc1 in llvm::AAResults::alias(llvm::MemoryLocation const&, llvm::MemoryLocation const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/AliasAnalysis.cpp:105:23
>>     #3 0x3396a90 in alias /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/Analysis/AliasAnalysis.h:896:25
>>     #4 0x3396a90 in llvm::BasicAAResult::aliasCheck(llvm::Value const*, unsigned long, llvm::AAMDNodes, llvm::Value const*, unsigned long, llvm::AAMDNodes, llvm::Value const*, llvm::Value const*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/BasicAliasAnalysis.cpp:1779
>>     #5 0x33951de in llvm::BasicAAResult::alias(llvm::MemoryLocation const&, llvm::MemoryLocation const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/BasicAliasAnalysis.cpp:780:23
>>     #6 0x3367dc1 in llvm::AAResults::alias(llvm::MemoryLocation const&, llvm::MemoryLocation const&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/AliasAnalysis.cpp:105:23
>>     #7 0x35d070c in llvm::MemoryDependenceResults::getSimplePointerDependencyFrom(llvm::MemoryLocation const&, bool, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, false>, llvm::BasicBlock*, llvm::Instruction*, unsigned int*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp:577:26
>>     #8 0x35cfb45 in llvm::MemoryDependenceResults::getSimplePointerDependencyFrom(llvm::MemoryLocation const&, bool, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, false>, llvm::BasicBlock*, llvm::Instruction*, unsigned int*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp:448:12
>>     #9 0x35ce759 in llvm::MemoryDependenceResults::getPointerDependencyFrom(llvm::MemoryLocation const&, bool, llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, false>, llvm::BasicBlock*, llvm::Instruction*, unsigned int*) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp:341:28
>>     #10 0x12c95d4 in isClobberedInFunction /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp:112:19
>>     #11 0x12c95d4 in visitLoadInst /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp:142
>>     #12 0x12c95d4 in visitLoad /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/IR/Instruction.def:153
>>     #13 0x12c95d4 in visit /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/IR/Instruction.def:153
>>     #14 0x12c95d4 in visit<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::Instruction, true, false, void>, false, false> > /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/IR/InstVisitor.h:92
>>     #15 0x12c95d4 in visit /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/IR/InstVisitor.h:107    #16 0x12c95d4 in visit<llvm::ilist_iterator<llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void>, false, false> > /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/IR/InstVisitor.h:92
>>     #17 0x12c95d4 in visit /b/sanitizer-x86_64-linux-bootstrap/build/llvm/include/llvm/IR/InstVisitor.h:103
>>     #18 0x12c95d4 in (anonymous namespace)::AMDGPUAnnotateUniformValues::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAnnotateUniformValues.cpp:184
>>     #19 0x47fea6d in llvm::FPPassManager::runOnFunction(llvm::Function&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1586:27
>>     #20 0x3464f8c in RunPassOnSCC /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/CallGraphSCCPass.cpp:166:25
>>     #21 0x3464f8c in RunAllPassesOnSCC /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/CallGraphSCCPass.cpp:430
>>     #22 0x3464f8c in (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Analysis/CallGraphSCCPass.cpp:486
>>     #23 0x47ffe7e in runOnModule /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1669:27
>>     #24 0x47ffe7e in llvm::legacy::PassManagerImpl::run(llvm::Module&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/IR/LegacyPassManager.cpp:1774
>>     #25 0xa074af in compileModule(char**, llvm::LLVMContext&) /b/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llc/llc.cpp:597:8
>>     #26 0xa00ae0 in main /b/sanitizer-x86_64-linux-bootstrap/build/llvm/tools/llc/llc.cpp:351:22
>>     #27 0x7f33f66c22e0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202e0)
>>     #28 0x8f4b99 in _start (/b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/bin/llc+0x8f4b99)
>>
>> 0x000007134b68 is located 56 bytes to the left of global variable '<string literal>' defined in '/b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp:74:5' (0x7134ba0) of size 129
>>   '<string literal>' is ascii string 'AS.GLOBAL_ADDRESS == 1 && AS.REGION_ADDRESS == 2 && AS.LOCAL_ADDRESS == 3 && AS.CONSTANT_ADDRESS == 4 && AS.PRIVATE_ADDRESS == 5'
>> 0x000007134b68 is located 4 bytes to the right of global variable 'ASAliasRulesGenIsZero' defined in '/b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp:63:28' (0x7134b40) of size 36
>> SUMMARY: AddressSanitizer: global-buffer-overflow /b/sanitizer-x86_64-linux-bootstrap/build/llvm/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp:99:10 in getAliasResult
>> Shadow bytes around the buggy address:
>>   0x000080e1e910: 00 00 00 00 00 00 00 00 00 07 f9 f9 f9 f9 f9 f9
>>   0x000080e1e920: 00 00 00 00 00 00 00 01 f9 f9 f9 f9 00 00 00 00
>>   0x000080e1e930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>>   0x000080e1e940: f9 f9 f9 f9 00 00 00 00 00 03 f9 f9 f9 f9 f9 f9
>>   0x000080e1e950: 00 00 00 00 00 00 04 f9 f9 f9 f9 f9 00 00 00 00
>> =>0x000080e1e960: 00 00 00 00 00 00 00 00 00 00 00 00 04[f9]f9 f9
>>   0x000080e1e970: f9 f9 f9 f9 00 00 00 00 00 00 00 00 00 00 00 00
>>   0x000080e1e980: 00 00 00 00 01 f9 f9 f9 f9 f9 f9 f9 00 00 00 00
>>   0x000080e1e990: 00 00 00 00 00 00 00 01 f9 f9 f9 f9 00 00 00 00
>>   0x000080e1e9a0: 00 00 00 00 00 00 01 f9 f9 f9 f9 f9 00 00 00 00
>>   0x000080e1e9b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01
>> 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
>> ==22327==ABORTING
>> /b/sanitizer-x86_64-linux-bootstrap/build/llvm/test/CodeGen/AMDGPU/widen-smrd-loads.ll:143:14: error: GCN-LABEL: expected string not found in input
>> ; GCN-LABEL: {{^}}widen_i16_constant32_load:
>>              ^
>> <stdin>:518:37: note: scanning from here
>> widen_i1_zext_to_i64_constant_load: ; @widen_i1_zext_to_i64_constant_load
>>                                     ^
>> <stdin>:518:48: note: possible intended match here
>> widen_i1_zext_to_i64_constant_load: ; @widen_i1_zext_to_i64_constant_load
>>                                                ^
>>
>> --
>>
>> ********************
>> Testing: 0 .. 10.. 20.. 30.. 40.. 50.. 60.. 70.. 80.. 90..
>> Testing Time: 384.24s
>> ********************
>> Failing Tests (2):
>>     LLVM :: CodeGen/AMDGPU/amdgpu-alias-analysis.ll
>>     LLVM :: CodeGen/AMDGPU/widen-smrd-loads.ll
>>
>>   Expected Passes    : 26393
>>   Expected Failures  : 148
>>   Unsupported Tests  : 686
>>   Unexpected Failures: 2
>> FAILED: test/CMakeFiles/check-llvm
>> cd /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/test && /usr/bin/python2.7 /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/./bin/llvm-lit -sv /b/sanitizer-x86_64-linux-bootstrap/build/llvm_build_asan/test
>> ninja: build stopped: subcommand failed.
>> + echo @@@STEP_FAILURE@@@
>> + echo @@@BUILD_STEP check-clang asan@@@
>> @@@STEP_FAILURE@@@
>>
>>
>> --------------------------------------------------------------------------------
>> started: Mon Aug 20 06:50:07 2018
>> ended: Mon Aug 20 07:15:07 2018
>> duration: 24 mins, 59 secs
>>
>>
>> On Mon, Aug 20, 2018 at 6:19 AM Samuel Pitoiset via llvm-commits <
>> llvm-commits at lists.llvm.org> wrote:
>>
>>> Author: hakzsam
>>> Date: Mon Aug 20 06:18:59 2018
>>> New Revision: 340171
>>>
>>> URL: http://llvm.org/viewvc/llvm-project?rev=340171&view=rev
>>> Log:
>>> AMDGPU: bump AS.MAX_COMMON_ADDRESS to 6 since 32-bit addr space
>>>
>>> 32-bit constant address space is declared as 6, so the
>>> maximum number of address spaces is 6, not 5.
>>>
>>> Fixes "LLVM ERROR: Pointer address space out of range".
>>>
>>> v3: use static_assert()
>>> v2: add a very simple test for 32-bit addr space
>>>
>>> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=106630
>>> Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
>>>
>>> Modified:
>>>     llvm/trunk/lib/Target/AMDGPU/AMDGPU.h
>>>     llvm/trunk/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp
>>>     llvm/trunk/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll
>>>
>>> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPU.h
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPU.h?rev=340171&r1=340170&r2=340171&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/lib/Target/AMDGPU/AMDGPU.h (original)
>>> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPU.h Mon Aug 20 06:18:59 2018
>>> @@ -229,7 +229,7 @@ struct AMDGPUAS {
>>>
>>>    enum : unsigned {
>>>      // The maximum value for flat, generic, local, private, constant
>>> and region.
>>> -    MAX_COMMON_ADDRESS = 5,
>>> +    MAX_COMMON_ADDRESS = 6,
>>>
>>>      GLOBAL_ADDRESS = 1,   ///< Address space for global memory (RAT0,
>>> VTX0).
>>>      CONSTANT_ADDRESS = 4, ///< Address space for constant memory (VTX2)
>>>
>>> Modified: llvm/trunk/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp?rev=340171&r1=340170&r2=340171&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp (original)
>>> +++ llvm/trunk/lib/Target/AMDGPU/AMDGPUAliasAnalysis.cpp Mon Aug 20
>>> 06:18:59 2018
>>> @@ -69,7 +69,7 @@ AMDGPUAAResult::ASAliasRulesTy::ASAliasR
>>>    /* Region   */ {MayAlias, NoAlias , NoAlias , NoAlias,  MayAlias,
>>> NoAlias},
>>>    /* Private  */ {MayAlias, NoAlias , NoAlias , NoAlias , NoAlias ,
>>> MayAlias}
>>>    };
>>> -  assert(AS.MAX_COMMON_ADDRESS <= 5);
>>> +  static_assert(AS.MAX_COMMON_ADDRESS <= 6, "Addr space out of range");
>>>    if (AS.FLAT_ADDRESS == 0) {
>>>      assert(AS.GLOBAL_ADDRESS   == 1 &&
>>>             AS.REGION_ADDRESS   == 2 &&
>>>
>>> Modified: llvm/trunk/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll?rev=340171&r1=340170&r2=340171&view=diff
>>>
>>> ==============================================================================
>>> --- llvm/trunk/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll (original)
>>> +++ llvm/trunk/test/CodeGen/AMDGPU/amdgpu-alias-analysis.ll Mon Aug 20
>>> 06:18:59 2018
>>> @@ -7,3 +7,9 @@ define void @test(i8 addrspace(5)* %p, i
>>>    ret void
>>>  }
>>>
>>> +; CHECK: NoAlias:      i8 addrspace(1)* %p1, i8 addrspace(6)* %p
>>> +
>>> +define void @test_32bit_addr_space(i8 addrspace(6)* %p, i8
>>> addrspace(1)* %p1) {
>>> +  ret void
>>> +}
>>> +
>>>
>>>
>>> _______________________________________________
>>> llvm-commits mailing list
>>> llvm-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180820/0c7a2258/attachment.html>


More information about the llvm-commits mailing list