diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp index d4a1b7b7813d0..aaaa02c1f0a1c 100644 --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -576,7 +576,7 @@ static ShadowMapping getShadowMapping(const Triple &TargetTriple, int LongSize, else Mapping.Offset = (kSmallX86_64ShadowOffsetBase & (kSmallX86_64ShadowOffsetAlignMask << Mapping.Scale)); - } else if (IsWindows && IsX86_64) { + } else if (IsWindows && (IsX86_64 || IsAArch64)) { Mapping.Offset = kWindowsShadowOffset64; } else if (IsMIPS64) Mapping.Offset = kMIPS64_ShadowOffset64; diff --git a/llvm/test/Instrumentation/AddressSanitizer/basic-msvc64.ll b/llvm/test/Instrumentation/AddressSanitizer/basic-msvc64.ll index 4e0424d1cbc24..4d0887ba39311 100644 --- a/llvm/test/Instrumentation/AddressSanitizer/basic-msvc64.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/basic-msvc64.ll @@ -1,8 +1,8 @@ ; Test basic address sanitizer instrumentation. ; -; RUN: opt -passes=asan -S < %s | FileCheck %s +; RUN: opt -passes=asan -mtriple=x86_64-pc-windows-msvc -S < %s | FileCheck %s +; RUN: opt -passes=asan -mtriple=aarch64-pc-windows-msvc -S < %s | FileCheck %s -target triple = "x86_64-pc-windows-msvc" ; CHECK: @llvm.global_ctors = {{.*}}@asan.module_ctor define i32 @test_load(ptr %a) sanitize_address {