<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/109250>109250</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
SEH on Windows ARM64 causes error: Assembler label cannot be undefined
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
momo5502
</td>
</tr>
</table>
<pre>
Invoking LLC with the sample IR code below generates the following error:
```
<unknown>:0: error: assembler label '.LBB0_-1' can not be undefined
```
`-filetype=obj` must be passed as option, as the error happens during object file generation.
The issue can be reproduced in godbolt: https://godbolt.org/z/7zao143hP
Sample IR code:
```llvm
target datalayout = "e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128"
target triple = "aarch64-unknown-windows-msvc19.41.34120"
declare i32 @__CxxFrameHandler3(...)
; Function Attrs: nounwind willreturn memory(write)
declare void @llvm.seh.try.begin() #0
define fastcc ptr @test_function(i1 %0, ptr %_Fmtfl.i.i, i1 %1) personality ptr @__CxxFrameHandler3 {
entry:
br i1 %0, label %right-block527, label %left-block526
common.ret1: ; preds = %left-block530, %left-block526, %some-block, %invoke.cont.i124
%common.ret1.op = phi ptr [ null, %left-block530 ], [ null, %some-block ], [ %_Fmtfl.i.i, %invoke.cont.i124 ], [ null, %left-block526 ]
ret ptr %common.ret1.op
invoke.cont.i124: ; preds = %right-block527
%.not657 = icmp eq i32 1, 0
br i1 %.not657, label %some-block, label %common.ret1
catch.dispatch.i: ; preds = %right-block527
%2 = catchswitch within none [label %catch.i] unwind to caller
catch.i: ; preds = %catch.dispatch.i
%3 = catchpad within %2 [ptr null, i32 0, ptr null]
catchret from %3 to label %some-block
some-block: ; preds = %catch.i, %invoke.cont.i124
br label %common.ret1
left-block526: ; preds = %entry
br i1 %1, label %common.ret1, label %left-block530
right-block527: ; preds = %entry
invoke void @llvm.seh.try.begin()
to label %invoke.cont.i124 unwind label %catch.dispatch.i
left-block530: ; preds = %left-block526
%.not = icmp eq i32 0, 0
br label %common.ret1
}
attributes #0 = { nounwind willreturn memory(write) }
!llvm.module.flags = !{!0}
!0 = !{i32 2, !"eh-asynch", i32 1}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVtGO2rwSfhpzM0oU2wmQCy5gKWqlHumoPdK5XDnJQNw6dn7bWUqf_peTAAF2W6JVlozHM9_MfGOPcE4eNOKKZBuSbWei87Wxq8Y0JssSNitMdVp90W_mp9QH-Pr1BY7S1-BrBCeaViF8-QalqRAKVOYIB9RohUfXq-yNUuYYdqK1xhK-JsmWJOf3PBn_hk_-0umf2hw14Z8IXyeEry_7QDiHTaHQghIFKiBsEX_dbJLXiBK2gFJo0MZDgdDpCvdSY_W-l7Mw2kuF_tQi4VtT_CDzBJrO9Rba4KwC4cC0XhpN2Ev4CBH1eKAWbYvaQdXZEJwpfmDpIRg8J0AaHQ-u_lcjSOc67DEWCBZba6quxAqkhoOpCqN8CLH2vnUhR2xH2G5ciI09ELb7Tdhu8VsYmvL6v9NIvt9U4aMMK_XWDCIv7AE9VMILJU6m80D4FghjGDWEr49RS_h6nvavSHJG-JqzSF4klC0JX1O2jHS_OE-j70HG2I19b2WANdoWwpb1PI3G-kZHqStzdFHj3kqaxymNeUpZcjEyvCsslbAIkjMgafL6-vLr186KBj8LXSm0nLBlHMeE5Tcx8w3sOl2GEsDaextSCtp0OniFo1TKou-shgYbY0-ELY9WeryYObt9M7IKfkPuYod17O0pLvAgNQnx5kAYT27xBtrBXjhfltB6G3Z7dP51P-IhbCkpEJYlgVK9Bsted43fq1jGMgiHdRrst2id0UJJfzpbe8wBkMVmcI_a29OFAACFhYmzc9dkVh5qHxXKlD8ztrhZUri_rMynkZWmaYyOLXoakvnUE-rQWqzcSIKpdd5DevA4yJxpcJCNAhmOH4xLo30sKUvHAAnLJrhi0_aO2loOyco2oDulHh3xBEi27eW3OlfHU4WHCr2D6AODN9H1OmNpLPpz9W9DmCb9IewnMv-Q9Ltqj_4Jy2Jt_Dxb9HqybFrAf_pGowF78sChUf2GLreFuoinZJlySPiyjivp2v6HDOE8D5f1Gr0Nd5S-rPt7SIZDX2PI-9X9aD7bwtjy3kAplEL7COd9FA9Qrzj4FUcrqjOIAWC2CTU91z8k89LmvfBa_35_IMHemmYw6827iZ0gnkif7cGPQvuIx5Oy_62ct537HKAHNMORdc81-iGdPjisbo_hOw49Be3PyIY0_fVCOKufn2lJH06MkZt3tL3n3EOuefIuY985uS9d_tDiyX2L_6HWi-0UiPDeyqIL4124_Abvi81ztyvcGSOM9plsTNUpjPdKHM7x0HCpMZo87kgmGiEWNjCZhgGmjoQ76bIOY8TYgPRq4XYMnFUrXuU8FzNc0QWbLzjNF_msXpUU83mWp3lepjlDttyLfT4vMKNZmSS0nMkVS1ia5DRPFumc5nGR8qXAfEmrHBeJQJIm2Aip4j46Yw-zfvxb0SRnWTLrk-36eZsxjcdhOAyYs-3MrsKmqOgOLhBNOu-uZrz0ClffP30Go-H_wwgF62__madQis6hu07L67tpuRT6fjqedVat7kZO6euuiEvTELbrR8bhX9RaEyZcwnY9WEfYbozmbcX-DQAA__9qeoou">