|
9 | 9 | ; RUN: opt < %s -passes=hwasan -hwasan-recover=0 -hwasan-mapping-offset=0 -S | FileCheck %s --check-prefixes=ABORT-ZERO-BASED-SHADOW |
10 | 10 | ; RUN: opt < %s -passes=hwasan -hwasan-recover=1 -hwasan-mapping-offset=0 -S | FileCheck %s --check-prefixes=RECOVER-ZERO-BASED-SHADOW |
11 | 11 |
|
12 | | -; CHECK: @llvm.used = appending global [1 x ptr] [ptr @hwasan.module_ctor] |
13 | | -; CHECK: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 0, ptr @hwasan.module_ctor, ptr @hwasan.module_ctor }] |
14 | 12 |
|
15 | 13 | target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" |
16 | 14 | target triple = "aarch64--linux-android10000" |
@@ -101,7 +99,7 @@ define i8 @test_load8(ptr %a) sanitize_hwaddress { |
101 | 99 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]]) #[[ATTR0:[0-9]+]] { |
102 | 100 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
103 | 101 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
104 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 0) |
| 102 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 0, i64 0) |
105 | 103 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[B:%.*]] = load i8, ptr [[A]], align 4 |
106 | 104 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret i8 [[B]] |
107 | 105 | ; |
@@ -233,7 +231,7 @@ define i16 @test_load16(ptr %a) sanitize_hwaddress { |
233 | 231 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]]) #[[ATTR0]] { |
234 | 232 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
235 | 233 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
236 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 1) |
| 234 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 1, i64 0) |
237 | 235 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[B:%.*]] = load i16, ptr [[A]], align 4 |
238 | 236 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret i16 [[B]] |
239 | 237 | ; |
@@ -365,7 +363,7 @@ define i32 @test_load32(ptr %a) sanitize_hwaddress { |
365 | 363 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]]) #[[ATTR0]] { |
366 | 364 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
367 | 365 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
368 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 2) |
| 366 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 2, i64 0) |
369 | 367 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[B:%.*]] = load i32, ptr [[A]], align 4 |
370 | 368 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret i32 [[B]] |
371 | 369 | ; |
@@ -497,7 +495,7 @@ define i64 @test_load64(ptr %a) sanitize_hwaddress { |
497 | 495 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]]) #[[ATTR0]] { |
498 | 496 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
499 | 497 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
500 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 3) |
| 498 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 3, i64 0) |
501 | 499 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[B:%.*]] = load i64, ptr [[A]], align 8 |
502 | 500 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret i64 [[B]] |
503 | 501 | ; |
@@ -629,7 +627,7 @@ define i128 @test_load128(ptr %a) sanitize_hwaddress { |
629 | 627 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]]) #[[ATTR0]] { |
630 | 628 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
631 | 629 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
632 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 4) |
| 630 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 4, i64 0) |
633 | 631 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[B:%.*]] = load i128, ptr [[A]], align 16 |
634 | 632 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret i128 [[B]] |
635 | 633 | ; |
@@ -830,7 +828,7 @@ define void @test_store8(ptr %a, i8 %b) sanitize_hwaddress { |
830 | 828 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]], i8 [[B:%.*]]) #[[ATTR0]] { |
831 | 829 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
832 | 830 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
833 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 16) |
| 831 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 16, i64 0) |
834 | 832 | ; ABORT-ZERO-BASED-SHADOW-NEXT: store i8 [[B]], ptr [[A]], align 4 |
835 | 833 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret void |
836 | 834 | ; |
@@ -962,7 +960,7 @@ define void @test_store16(ptr %a, i16 %b) sanitize_hwaddress { |
962 | 960 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]], i16 [[B:%.*]]) #[[ATTR0]] { |
963 | 961 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
964 | 962 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
965 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 17) |
| 963 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 17, i64 0) |
966 | 964 | ; ABORT-ZERO-BASED-SHADOW-NEXT: store i16 [[B]], ptr [[A]], align 4 |
967 | 965 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret void |
968 | 966 | ; |
@@ -1094,7 +1092,7 @@ define void @test_store32(ptr %a, i32 %b) sanitize_hwaddress { |
1094 | 1092 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]], i32 [[B:%.*]]) #[[ATTR0]] { |
1095 | 1093 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
1096 | 1094 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
1097 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 18) |
| 1095 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 18, i64 0) |
1098 | 1096 | ; ABORT-ZERO-BASED-SHADOW-NEXT: store i32 [[B]], ptr [[A]], align 4 |
1099 | 1097 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret void |
1100 | 1098 | ; |
@@ -1226,7 +1224,7 @@ define void @test_store64(ptr %a, i64 %b) sanitize_hwaddress { |
1226 | 1224 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]], i64 [[B:%.*]]) #[[ATTR0]] { |
1227 | 1225 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
1228 | 1226 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
1229 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 19) |
| 1227 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 19, i64 0) |
1230 | 1228 | ; ABORT-ZERO-BASED-SHADOW-NEXT: store i64 [[B]], ptr [[A]], align 8 |
1231 | 1229 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret void |
1232 | 1230 | ; |
@@ -1358,7 +1356,7 @@ define void @test_store128(ptr %a, i128 %b) sanitize_hwaddress { |
1358 | 1356 | ; ABORT-ZERO-BASED-SHADOW-SAME: (ptr [[A:%.*]], i128 [[B:%.*]]) #[[ATTR0]] { |
1359 | 1357 | ; ABORT-ZERO-BASED-SHADOW-NEXT: entry: |
1360 | 1358 | ; ABORT-ZERO-BASED-SHADOW-NEXT: [[DOTHWASAN_SHADOW:%.*]] = call ptr asm "", "=r,0"(ptr null) |
1361 | | -; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules(ptr [[DOTHWASAN_SHADOW]], ptr [[A]], i32 20) |
| 1359 | +; ABORT-ZERO-BASED-SHADOW-NEXT: call void @llvm.hwasan.check.memaccess.shortgranules.fixedshadow(ptr [[A]], i32 20, i64 0) |
1362 | 1360 | ; ABORT-ZERO-BASED-SHADOW-NEXT: store i128 [[B]], ptr [[A]], align 16 |
1363 | 1361 | ; ABORT-ZERO-BASED-SHADOW-NEXT: ret void |
1364 | 1362 | ; |
|
0 commit comments