[llvm] [X86] Make WinEH crash test reliable under ASan (PR #212820)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 29 09:49:09 PDT 2026


https://github.com/compilersutra created https://github.com/llvm/llvm-project/pull/212820

None

>From d6e3bbc01336a285c338c75a56a91e77da99c9a5 Mon Sep 17 00:00:00 2001
From: compilersutra <osc at compilersutra.com>
Date: Wed, 29 Jul 2026 22:12:59 +0530
Subject: [PATCH] [X86] Make WinEH crash test reliable under ASan

---
 .../CodeGen/X86/win64-eh-unwindv2-errors.mir  | 56 +++++++++----------
 1 file changed, 28 insertions(+), 28 deletions(-)

diff --git a/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir b/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir
index c8eee80bd7265..32023d1d85f25 100644
--- a/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir
+++ b/llvm/test/CodeGen/X86/win64-eh-unwindv2-errors.mir
@@ -6,10 +6,10 @@
 # BESTEFFORT-NOT: SEH_UnwindV2Start
 
 ;--- alloc_no_dealloc.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/alloc_no_dealloc.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=ALLOC-NO-DEALLOC
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/alloc_no_dealloc.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=ALLOC-NO-DEALLOC
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/alloc_no_dealloc.mir \
@@ -42,10 +42,10 @@ body:             |
 ...
 
 ;--- missed_push.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/missed_push.mir \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/missed_push.mir \
 # RUN:    -run-pass=x86-wineh-unwindv2 2>&1 | FileCheck %s \
 # RUN:    --check-prefix=MISSED-PUSH
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/missed_push.mir \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/missed_push.mir \
 # RUN:    -passes=x86-wineh-unwindv2 2>&1 | FileCheck %s \
 # RUN:    --check-prefix=MISSED-PUSH
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/missed_push.mir \
@@ -81,10 +81,10 @@ body:             |
 ...
 
 ;--- dealloc_no_alloc.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/dealloc_no_alloc.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=DEALLOC-NO-ALLOC
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/dealloc_no_alloc.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=DEALLOC-NO-ALLOC
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/dealloc_no_alloc.mir \
@@ -116,10 +116,10 @@ body:             |
 ...
 
 ;--- dealloc_after_epilog.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/dealloc_after_epilog.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=DEALLOC-AFTER-EPILOG
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/dealloc_after_epilog.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=DEALLOC-AFTER-EPILOG
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - \
@@ -153,10 +153,10 @@ body:             |
 ...
 
 ;--- pop_before_dealloc.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_before_dealloc.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-BEFORE-DEALLOC
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_before_dealloc.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-BEFORE-DEALLOC
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/pop_before_dealloc.mir \
@@ -193,10 +193,10 @@ body:             |
 ...
 
 ;--- mov_no_setframe.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/mov_no_setframe.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=MOV-NO-SETFRAME
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/mov_no_setframe.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=MOV-NO-SETFRAME
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/mov_no_setframe.mir \
@@ -228,10 +228,10 @@ body:             |
 ...
 
 ;--- mov_after_epilog.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/mov_after_epilog.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=MOV-AFTER-EPILOG
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/mov_after_epilog.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=MOV-AFTER-EPILOG
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - \
@@ -267,10 +267,10 @@ body:             |
 ...
 
 ;--- pop_before_mov.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_before_mov.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-BEFORE-MOV
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_before_mov.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-BEFORE-MOV
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/pop_before_mov.mir \
@@ -307,10 +307,10 @@ body:             |
 ...
 
 ;--- mov_after_dealloc.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/mov_after_dealloc.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=MOV-AFTER-DEALLOC
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/mov_after_dealloc.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=MOV-AFTER-DEALLOC
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/mov_after_dealloc.mir \
@@ -347,10 +347,10 @@ body:             |
 ...
 
 ;--- too_many_pops.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/too_many_pops.mir \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/too_many_pops.mir \
 # RUN:    -run-pass=x86-wineh-unwindv2 2>&1 | FileCheck %s \
 # RUN:    --check-prefix=TOO-MANY-POPS
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/too_many_pops.mir \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - %t/too_many_pops.mir \
 # RUN:    -passes=x86-wineh-unwindv2 2>&1 | FileCheck %s \
 # RUN:    --check-prefix=TOO-MANY-POPS
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/too_many_pops.mir \
@@ -385,10 +385,10 @@ body:             |
 ...
 
 ;--- pop_in_wrong_order.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_in_wrong_order.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-WRONG-ORDER
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_in_wrong_order.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-WRONG-ORDER
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/pop_in_wrong_order.mir \
@@ -425,10 +425,10 @@ body:             |
 ...
 
 ;--- pop_after_epilog.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_after_epilog.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-AFTER-EPILOG
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/pop_after_epilog.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=POP-AFTER-EPILOG
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/pop_after_epilog.mir \
@@ -460,10 +460,10 @@ body:             |
 ...
 
 ;--- instr_after_epilog.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/instr_after_epilog.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=INSTR-AFTER-END
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/instr_after_epilog.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=INSTR-AFTER-END
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/instr_after_epilog.mir \
@@ -495,10 +495,10 @@ body:             |
 ...
 
 ;--- dealloc_pop_dealloc.mir
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/dealloc_pop_dealloc.mir -run-pass=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=DEALLOC-POP-DEALLOC
-# RUN: not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
+# RUN: env ASAN_OPTIONS=abort_on_error=1 not --crash llc -mtriple=x86_64-pc-windows-msvc -o - \
 # RUN:    %t/dealloc_pop_dealloc.mir -passes=x86-wineh-unwindv2 2>&1 | \
 # RUN:    FileCheck %s --check-prefix=DEALLOC-POP-DEALLOC
 # RUN: llc -mtriple=x86_64-pc-windows-msvc -o - %t/dealloc_pop_dealloc.mir \



More information about the llvm-commits mailing list