Index: llvm/lib/CodeGen/AsmPrinter/WinException.cpp =================================================================== --- llvm/lib/CodeGen/AsmPrinter/WinException.cpp +++ llvm/lib/CodeGen/AsmPrinter/WinException.cpp @@ -258,11 +258,11 @@ if (F.hasPersonalityFn()) Per = classifyEHPersonality(F.getPersonalityFn()->stripPointerCasts()); - // Emit an UNWIND_INFO struct describing the prologue. - Asm->OutStreamer->EmitWinEHHandlerData(); - if (Per == EHPersonality::MSVC_CXX && shouldEmitPersonality && !CurrentFuncletEntry->isCleanupFuncletEntry()) { + // Emit an UNWIND_INFO struct describing the prologue. + Asm->OutStreamer->EmitWinEHHandlerData(); + // If this is a C++ catch funclet (or the parent function), // emit a reference to the LSDA for the parent function. StringRef FuncLinkageName = GlobalValue::dropLLVMManglingEscape(F.getName()); @@ -271,9 +271,22 @@ Asm->OutStreamer->emitValue(create32bitRef(FuncInfoXData), 4); } else if (Per == EHPersonality::MSVC_Win64SEH && MF->hasEHFunclets() && !CurrentFuncletEntry->isEHFuncletEntry()) { + // Emit an UNWIND_INFO struct describing the prologue. + Asm->OutStreamer->EmitWinEHHandlerData(); + // If this is the parent function in Win64 SEH, emit the LSDA immediately // following .seh_handlerdata. emitCSpecificHandlerTable(MF); + } else if (shouldEmitPersonality || shouldEmitLSDA) { + // Emit an UNWIND_INFO struct describing the prologue. + Asm->OutStreamer->EmitWinEHHandlerData(); + // In these cases, no further info is written to the .xdata section + // right here, but is written by e.g. emitExceptionTable in endFunction() + // above. + } else { + // No need to emit the EH handler data right here if nothing needs + // writing to the .xdata section; it will be emitted for all + // functions that need it in the end anyway. } // Switch back to the funclet start .text section now that we are done Index: llvm/test/CodeGen/AArch64/win64-jumptable.ll =================================================================== --- llvm/test/CodeGen/AArch64/win64-jumptable.ll +++ llvm/test/CodeGen/AArch64/win64-jumptable.ll @@ -44,8 +44,6 @@ ; CHECK: .word .LBB0_3-.LJTI0_0 ; CHECK: .word .LBB0_4-.LJTI0_0 ; CHECK: .word .LBB0_5-.LJTI0_0 -; CHECK: .seh_handlerdata -; CHECK: .text ; CHECK: .seh_endproc ; Check that we can emit an object file with correct unwind info. Index: llvm/test/CodeGen/AArch64/wineh1.mir =================================================================== --- llvm/test/CodeGen/AArch64/wineh1.mir +++ llvm/test/CodeGen/AArch64/wineh1.mir @@ -73,8 +73,6 @@ # ASM: .seh_endepilogue # ASM: .seh_endfunclet -# ASM: .seh_handlerdata -# ASM: .text # ASM: .seh_endproc ... Index: llvm/test/CodeGen/X86/avx512-intel-ocl.ll =================================================================== --- llvm/test/CodeGen/X86/avx512-intel-ocl.ll +++ llvm/test/CodeGen/X86/avx512-intel-ocl.ll @@ -423,8 +423,6 @@ ; WIN64-KNL-NEXT: nop ; WIN64-KNL-NEXT: addq $40, %rsp ; WIN64-KNL-NEXT: retq -; WIN64-KNL-NEXT: .seh_handlerdata -; WIN64-KNL-NEXT: .text ; WIN64-KNL-NEXT: .seh_endproc ; ; WIN64-SKX-LABEL: testf16_inp_mask: @@ -439,8 +437,6 @@ ; WIN64-SKX-NEXT: nop ; WIN64-SKX-NEXT: addq $40, %rsp ; WIN64-SKX-NEXT: retq -; WIN64-SKX-NEXT: .seh_handlerdata -; WIN64-SKX-NEXT: .text ; WIN64-SKX-NEXT: .seh_endproc ; ; X64-KNL-LABEL: testf16_inp_mask: Index: llvm/test/CodeGen/X86/avx512-regcall-Mask.ll =================================================================== --- llvm/test/CodeGen/X86/avx512-regcall-Mask.ll +++ llvm/test/CodeGen/X86/avx512-regcall-Mask.ll @@ -157,8 +157,6 @@ ; WIN64-NEXT: popq %r14 ; WIN64-NEXT: popq %r15 ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_argv64i1: @@ -263,8 +261,6 @@ ; WIN64-NEXT: popq %rdi ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_retv64i1: @@ -349,8 +345,6 @@ ; WIN64-NEXT: popq %r11 ; WIN64-NEXT: popq %rbp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_argv32i1: @@ -438,8 +432,6 @@ ; WIN64-NEXT: popq %rdi ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_argv32i1: @@ -503,8 +495,6 @@ ; WIN64-NEXT: popq %rdi ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_retv32i1: @@ -584,8 +574,6 @@ ; WIN64-NEXT: popq %r10 ; WIN64-NEXT: popq %r11 ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_argv16i1: @@ -672,8 +660,6 @@ ; WIN64-NEXT: popq %rdi ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_argv16i1: @@ -741,8 +727,6 @@ ; WIN64-NEXT: popq %rdi ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_retv16i1: @@ -824,8 +808,6 @@ ; WIN64-NEXT: popq %r10 ; WIN64-NEXT: popq %r11 ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_argv8i1: @@ -912,8 +894,6 @@ ; WIN64-NEXT: popq %rdi ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_argv8i1: @@ -985,8 +965,6 @@ ; WIN64-NEXT: popq %rsi ; WIN64-NEXT: vzeroupper ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: caller_retv8i1: Index: llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll =================================================================== --- llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll +++ llvm/test/CodeGen/X86/avx512-regcall-NoMask.ll @@ -49,8 +49,6 @@ ; WIN64-NEXT: incb %al ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargReti1: @@ -117,8 +115,6 @@ ; WIN64-NEXT: incb %al ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargReti8: @@ -187,8 +183,6 @@ ; WIN64-NEXT: # kill: def $ax killed $ax killed $eax ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargReti16: @@ -251,8 +245,6 @@ ; WIN64-NEXT: incl %eax ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargReti32: @@ -318,8 +310,6 @@ ; WIN64-NEXT: incq %rax ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargReti64: @@ -392,8 +382,6 @@ ; WIN64-NEXT: addq $16, %rsp ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRetFloat: @@ -474,8 +462,6 @@ ; WIN64-NEXT: addq $16, %rsp ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRetDouble: @@ -575,8 +561,6 @@ ; WIN64-NEXT: fadd %st, %st(0) ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRetf80: @@ -616,8 +600,6 @@ ; WIN64-NEXT: vaddsd %xmm0, %xmm0, %xmm0 ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargParamf80: @@ -680,8 +662,6 @@ ; WIN64-NEXT: incl %eax ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRetPointer: @@ -774,8 +754,6 @@ ; WIN64-NEXT: addq $32, %rsp ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRet128Vector: @@ -866,8 +844,6 @@ ; WIN64-NEXT: addq $80, %rsp ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRet256Vector: @@ -954,8 +930,6 @@ ; WIN64-NEXT: addq $176, %rsp ; WIN64-NEXT: popq %rsp ; WIN64-NEXT: retq -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc ; ; LINUXOSX64-LABEL: test_CallargRet512Vector: Index: llvm/test/CodeGen/X86/break-false-dep.ll =================================================================== --- llvm/test/CodeGen/X86/break-false-dep.ll +++ llvm/test/CodeGen/X86/break-false-dep.ll @@ -519,8 +519,6 @@ ; SSE-WIN-NEXT: addq $160, %rsp ; SSE-WIN-NEXT: popq %rsi ; SSE-WIN-NEXT: retq -; SSE-WIN-NEXT: .seh_handlerdata -; SSE-WIN-NEXT: .text ; SSE-WIN-NEXT: .seh_endproc ; ; AVX-LABEL: loopdep3: @@ -597,8 +595,6 @@ ; AVX-NEXT: addq $160, %rsp ; AVX-NEXT: popq %rsi ; AVX-NEXT: retq -; AVX-NEXT: .seh_handlerdata -; AVX-NEXT: .text ; AVX-NEXT: .seh_endproc entry: br label %for.cond1.preheader @@ -716,8 +712,6 @@ ; SSE-WIN-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; SSE-WIN-NEXT: addq $168, %rsp ; SSE-WIN-NEXT: retq -; SSE-WIN-NEXT: .seh_handlerdata -; SSE-WIN-NEXT: .text ; SSE-WIN-NEXT: .seh_endproc ; ; AVX-LABEL: inlineasmdep: @@ -775,8 +769,6 @@ ; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; AVX-NEXT: addq $168, %rsp ; AVX-NEXT: retq -; AVX-NEXT: .seh_handlerdata -; AVX-NEXT: .text ; AVX-NEXT: .seh_endproc top: tail call void asm sideeffect "", "~{xmm0},~{xmm1},~{xmm2},~{xmm3},~{dirflag},~{fpsr},~{flags}"() @@ -879,8 +871,6 @@ ; SSE-WIN-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; SSE-WIN-NEXT: addq $184, %rsp ; SSE-WIN-NEXT: retq -; SSE-WIN-NEXT: .seh_handlerdata -; SSE-WIN-NEXT: .text ; SSE-WIN-NEXT: .seh_endproc ; ; AVX-LABEL: truedeps: @@ -942,8 +932,6 @@ ; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; AVX-NEXT: addq $184, %rsp ; AVX-NEXT: retq -; AVX-NEXT: .seh_handlerdata -; AVX-NEXT: .text ; AVX-NEXT: .seh_endproc top: tail call void asm sideeffect "", "~{xmm6},~{dirflag},~{fpsr},~{flags}"() @@ -1043,8 +1031,6 @@ ; SSE-WIN-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; SSE-WIN-NEXT: addq $168, %rsp ; SSE-WIN-NEXT: retq -; SSE-WIN-NEXT: .seh_handlerdata -; SSE-WIN-NEXT: .text ; SSE-WIN-NEXT: .seh_endproc ; ; AVX-LABEL: clearence: @@ -1104,8 +1090,6 @@ ; AVX-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; AVX-NEXT: addq $168, %rsp ; AVX-NEXT: retq -; AVX-NEXT: .seh_handlerdata -; AVX-NEXT: .text ; AVX-NEXT: .seh_endproc top: tail call void asm sideeffect "", "~{xmm6},~{dirflag},~{fpsr},~{flags}"() @@ -1416,8 +1400,6 @@ ; SSE-WIN-NEXT: movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; SSE-WIN-NEXT: addq $152, %rsp ; SSE-WIN-NEXT: retq -; SSE-WIN-NEXT: .seh_handlerdata -; SSE-WIN-NEXT: .text ; SSE-WIN-NEXT: .seh_endproc ; ; AVX1-LABEL: loopclearance2: @@ -1499,8 +1481,6 @@ ; AVX1-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; AVX1-NEXT: addq $152, %rsp ; AVX1-NEXT: retq -; AVX1-NEXT: .seh_handlerdata -; AVX1-NEXT: .text ; AVX1-NEXT: .seh_endproc ; ; AVX512VL-LABEL: loopclearance2: @@ -1582,8 +1562,6 @@ ; AVX512VL-NEXT: vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload ; AVX512VL-NEXT: addq $152, %rsp ; AVX512VL-NEXT: retq -; AVX512VL-NEXT: .seh_handlerdata -; AVX512VL-NEXT: .text ; AVX512VL-NEXT: .seh_endproc entry: tail call void asm sideeffect "", "~{xmm7},~{dirflag},~{fpsr},~{flags}"() Index: llvm/test/CodeGen/X86/conditional-tailcall-pgso.ll =================================================================== --- llvm/test/CodeGen/X86/conditional-tailcall-pgso.ll +++ llvm/test/CodeGen/X86/conditional-tailcall-pgso.ll @@ -124,8 +124,6 @@ ; WIN64-NEXT: jmp bar # TAILCALL ; WIN64-NEXT: # encoding: [0xeb,A] ; WIN64-NEXT: # fixup A - offset: 1, value: bar-1, kind: FK_PCRel_1 -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc entry: ; Force %ebx to be spilled on the stack, turning this into Index: llvm/test/CodeGen/X86/conditional-tailcall.ll =================================================================== --- llvm/test/CodeGen/X86/conditional-tailcall.ll +++ llvm/test/CodeGen/X86/conditional-tailcall.ll @@ -124,8 +124,6 @@ ; WIN64-NEXT: jmp bar # TAILCALL ; WIN64-NEXT: # encoding: [0xeb,A] ; WIN64-NEXT: # fixup A - offset: 1, value: bar-1, kind: FK_PCRel_1 -; WIN64-NEXT: .seh_handlerdata -; WIN64-NEXT: .text ; WIN64-NEXT: .seh_endproc entry: ; Force %ebx to be spilled on the stack, turning this into Index: llvm/test/CodeGen/X86/gnu-seh-nolpads.ll =================================================================== --- llvm/test/CodeGen/X86/gnu-seh-nolpads.ll +++ llvm/test/CodeGen/X86/gnu-seh-nolpads.ll @@ -15,7 +15,6 @@ ; CHECK: .seh_proc use_gxx_seh ; CHECK-NOT: .seh_handler __gxx_personality_seh0 ; CHECK: callq throwit -; CHECK: .seh_handlerdata ; CHECK: .seh_endproc define void @use_gcc_seh() @@ -29,6 +28,5 @@ ; CHECK: .seh_proc use_gcc_seh ; CHECK-NOT: .seh_handler __gcc_personality_seh0 ; CHECK: callq throwit -; CHECK: .seh_handlerdata ; CHECK: .seh_endproc Index: llvm/test/CodeGen/X86/mingw-comdats.ll =================================================================== --- llvm/test/CodeGen/X86/mingw-comdats.ll +++ llvm/test/CodeGen/X86/mingw-comdats.ll @@ -78,7 +78,6 @@ ; names. ; GNUOBJ: .text$_Z3fooi ; GNUOBJ: .xdata$_Z3fooi -; GNUOBJ: .data$gv ; GNUOBJ: .pdata$_Z3fooi declare dso_local i32 @_Z3bari(i32) Index: llvm/test/CodeGen/X86/musttail-varargs.ll =================================================================== --- llvm/test/CodeGen/X86/musttail-varargs.ll +++ llvm/test/CodeGen/X86/musttail-varargs.ll @@ -236,8 +236,6 @@ ; WINDOWS-NEXT: popq %rsi ; WINDOWS-NEXT: popq %r14 ; WINDOWS-NEXT: rex64 jmpq *%rax # TAILCALL -; WINDOWS-NEXT: .seh_handlerdata -; WINDOWS-NEXT: .text ; WINDOWS-NEXT: .seh_endproc ; ; X86-NOSSE-LABEL: f_thunk: Index: llvm/test/CodeGen/X86/no-sse-win64.ll =================================================================== --- llvm/test/CodeGen/X86/no-sse-win64.ll +++ llvm/test/CodeGen/X86/no-sse-win64.ll @@ -54,8 +54,6 @@ ; CHECK-NEXT: nop ; CHECK-NEXT: addq $40, %rsp ; CHECK-NEXT: retq -; CHECK-NEXT: .seh_handlerdata -; CHECK-NEXT: .text ; CHECK-NEXT: .seh_endproc %v = load double, double* %p call void @take_double(double %v) @@ -73,8 +71,6 @@ ; CHECK-NEXT: nop ; CHECK-NEXT: addq $40, %rsp ; CHECK-NEXT: retq -; CHECK-NEXT: .seh_handlerdata -; CHECK-NEXT: .text ; CHECK-NEXT: .seh_endproc %v = load float, float* %p call void @take_float(float %v) @@ -98,8 +94,6 @@ ; CHECK-NEXT: addq $32, %rsp ; CHECK-NEXT: popq %rsi ; CHECK-NEXT: retq -; CHECK-NEXT: .seh_handlerdata -; CHECK-NEXT: .text ; CHECK-NEXT: .seh_endproc %v = call double @produce_double() store double %v, double* %p @@ -120,8 +114,6 @@ ; CHECK-NEXT: addq $32, %rsp ; CHECK-NEXT: popq %rsi ; CHECK-NEXT: retq -; CHECK-NEXT: .seh_handlerdata -; CHECK-NEXT: .text ; CHECK-NEXT: .seh_endproc %v = call float @produce_float() store float %v, float* %p Index: llvm/test/CodeGen/X86/win64-jumptable.ll =================================================================== --- llvm/test/CodeGen/X86/win64-jumptable.ll +++ llvm/test/CodeGen/X86/win64-jumptable.ll @@ -53,7 +53,6 @@ ; CHECK: .quad .LBB0_ ; CHECK: .quad .LBB0_ ; CHECK: .quad .LBB0_ -; CHECK: .seh_handlerdata ; It's important that we switch back to .text here, not .rdata. ; CHECK: .text Index: llvm/test/CodeGen/X86/win64_frame.ll =================================================================== --- llvm/test/CodeGen/X86/win64_frame.ll +++ llvm/test/CodeGen/X86/win64_frame.ll @@ -13,8 +13,6 @@ ; ALL-NEXT: movl 48(%rbp), %eax ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc ret i32 %p5 } @@ -37,8 +35,6 @@ ; ALL-NEXT: addq $8, %rsp ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %ap = alloca i8, align 8 call void @llvm.va_start(i8* %ap) @@ -56,8 +52,6 @@ ; ALL-NEXT: movq 8(%rbp), %rax ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %ra = call i8* @llvm.returnaddress(i32 0) ret i8* %ra @@ -77,8 +71,6 @@ ; ALL-NEXT: addq $304, %rsp # imm = 0x130 ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc alloca [300 x i8] %ra = call i8* @llvm.returnaddress(i32 0) @@ -103,8 +95,6 @@ ; ALL-NEXT: addq $336, %rsp # imm = 0x150 ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %a = alloca [300 x i8] %gep = getelementptr [300 x i8], [300 x i8]* %a, i32 0, i32 0 @@ -128,8 +118,6 @@ ; ALL-NEXT: addq $336, %rsp # imm = 0x150 ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %a = alloca [300 x i8] %gep = getelementptr [300 x i8], [300 x i8]* %a, i32 0, i32 0 @@ -152,8 +140,6 @@ ; ALL-NEXT: leaq 176(%rbp), %rsp ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc alloca [300 x i8], align 64 ret i32 %e @@ -191,8 +177,6 @@ ; ALL-NEXT: popq %rsi ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %alloca = alloca [300 x i8], align 64 alloca i32, i32 %a @@ -213,8 +197,6 @@ ; ALL-NEXT: popq %rax ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc entry: %call = call i64 @llvm.x86.flags.read.u64() @@ -244,8 +226,6 @@ ; ALL-NEXT: popq %rbx ; ALL-NEXT: popq %rsi ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %cx = cmpxchg i64* %foo, i64 %bar, i64 %baz seq_cst seq_cst %v = extractvalue { i64, i1 } %cx, 0 @@ -266,8 +246,6 @@ ; ALL-NEXT: leaq 8(%rbp), %rax ; ALL-NEXT: popq %rbp ; ALL-NEXT: retq -; ALL-NEXT: .seh_handlerdata -; ALL-NEXT: .text ; ALL-NEXT: .seh_endproc %aora = call i8* @llvm.addressofreturnaddress() ret i8* %aora Index: llvm/test/DebugInfo/COFF/defer-complete-type.ll =================================================================== --- llvm/test/DebugInfo/COFF/defer-complete-type.ll +++ llvm/test/DebugInfo/COFF/defer-complete-type.ll @@ -12,7 +12,7 @@ ; $ clang t.cpp -S -emit-llvm -g -gcodeview -o t.ll ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (6) +; CHECK: Section: .debug$T (5) ; CHECK: Magic: 0x4 ; CHECK: Struct (0x1000) { ; CHECK: TypeLeafKind: LF_STRUCTURE (0x1505) Index: llvm/test/DebugInfo/COFF/enum-co.ll =================================================================== --- llvm/test/DebugInfo/COFF/enum-co.ll +++ llvm/test/DebugInfo/COFF/enum-co.ll @@ -31,7 +31,7 @@ ; CHECK: Arch: x86_64 ; CHECK: AddressSize: 64bit ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (6) +; CHECK: Section: .debug$T (5) ; CHECK: Magic: 0x4 ; CHECK: Enum ({{.*}}) { ; CHECK: TypeLeafKind: LF_ENUM (0x1507) Index: llvm/test/DebugInfo/COFF/global_visibility.ll =================================================================== --- llvm/test/DebugInfo/COFF/global_visibility.ll +++ llvm/test/DebugInfo/COFF/global_visibility.ll @@ -42,7 +42,7 @@ ; ; CHECK: CodeViewDebugInfo [ -; CHECK: Section: .debug$S (9) +; CHECK: Section: .debug$S (8) ; CHECK: Subsection [ ; CHECK: SubSectionType: Symbols (0xF1) @@ -96,7 +96,7 @@ ; CHECK: ] ; CHECK: ] ; CHECK: CodeViewDebugInfo [ -; CHECK: Section: .debug$S (16) +; CHECK: Section: .debug$S (12) ; CHECK: Subsection [ ; CHECK: SubSectionType: Symbols (0xF1) ; CHECK: GlobalData { @@ -107,7 +107,7 @@ ; CHECK: ] ; CHECK: ] ; CHECK: CodeViewDebugInfo [ -; CHECK: Section: .debug$S (17) +; CHECK: Section: .debug$S (15) ; CHECK: Subsection [ ; CHECK: SubSectionType: Symbols (0xF1) ; CHECK: GlobalData { Index: llvm/test/DebugInfo/COFF/type-quals.ll =================================================================== --- llvm/test/DebugInfo/COFF/type-quals.ll +++ llvm/test/DebugInfo/COFF/type-quals.ll @@ -40,7 +40,7 @@ ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (7) +; CHECK: Section: .debug$T (6) ; CHECK: Magic: 0x4 ; CHECK: Modifier (0x1000) { ; CHECK: TypeLeafKind: LF_MODIFIER (0x1001) @@ -367,7 +367,7 @@ ; CHECK: ] ; CHECK-LABEL: CodeViewDebugInfo [ -; CHECK-NEXT: Section: .debug$S (6) +; CHECK-NEXT: Section: .debug$S (5) ; CHECK: Subsection [ ; CHECK: SubSectionType: Symbols (0xF1) ; CHECK: GlobalProcIdSym { Index: llvm/test/DebugInfo/COFF/types-basic.ll =================================================================== --- llvm/test/DebugInfo/COFF/types-basic.ll +++ llvm/test/DebugInfo/COFF/types-basic.ll @@ -35,7 +35,7 @@ ; $ clang t.cpp -S -emit-llvm -g -gcodeview -o t.ll ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (6) +; CHECK: Section: .debug$T (5) ; CHECK: Magic: 0x4 ; CHECK: ArgList (0x1000) { ; CHECK: TypeLeafKind: LF_ARGLIST (0x1201) Index: llvm/test/DebugInfo/COFF/types-data-members.ll =================================================================== --- llvm/test/DebugInfo/COFF/types-data-members.ll +++ llvm/test/DebugInfo/COFF/types-data-members.ll @@ -39,7 +39,7 @@ ; $ clang t.cpp -S -emit-llvm -g -gcodeview -o t.ll ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (8) +; CHECK: Section: .debug$T (7) ; CHECK: Magic: 0x4 ; CHECK: ArgList (0x1000) { ; CHECK: TypeLeafKind: LF_ARGLIST (0x1201) Index: llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll =================================================================== --- llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll +++ llvm/test/DebugInfo/COFF/types-method-ref-qualifiers.ll @@ -85,7 +85,7 @@ ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (7) +; CHECK: Section: .debug$T (6) ; CHECK: Magic: 0x4 ; CHECK: Pointer (0x1005) { ; CHECK: TypeLeafKind: LF_POINTER (0x1002) Index: llvm/test/DebugInfo/COFF/types-recursive-struct.ll =================================================================== --- llvm/test/DebugInfo/COFF/types-recursive-struct.ll +++ llvm/test/DebugInfo/COFF/types-recursive-struct.ll @@ -20,7 +20,7 @@ ; $ clang t.cpp -S -emit-llvm -g -gcodeview -o t.ll ; CHECK: CodeViewTypes [ -; CHECK: Section: .debug$T (6) +; CHECK: Section: .debug$T (5) ; CHECK: Magic: 0x4 ; CHECK: ArgList (0x1000) { ; CHECK: TypeLeafKind: LF_ARGLIST (0x1201)