diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -1044,8 +1044,10 @@ OutStreamer->SwitchSection(StackSizeSection); const MCSymbol *FunctionSymbol = getFunctionBegin(); + const unsigned PointerSize = getPointerSize(); uint64_t StackSize = FrameInfo.getStackSize(); - OutStreamer->emitSymbolValue(FunctionSymbol, TM.getProgramPointerSize()); + emitAlignment(Align(PointerSize)); + OutStreamer->emitSymbolValue(FunctionSymbol, PointerSize); OutStreamer->emitULEB128IntValue(StackSize); OutStreamer->PopSection(); diff --git a/llvm/test/CodeGen/ARM/stack-size-section.ll b/llvm/test/CodeGen/ARM/stack-size-section.ll --- a/llvm/test/CodeGen/ARM/stack-size-section.ll +++ b/llvm/test/CodeGen/ARM/stack-size-section.ll @@ -3,6 +3,7 @@ ; CHECK-LABEL: func1: ; CHECK-NEXT: .Lfunc_begin0: ; CHECK: .section .stack_sizes,"o",%progbits,.text{{$}} +; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: .long .Lfunc_begin0 ; CHECK-NEXT: .byte 8 define void @func1(i32, i32) #0 { @@ -14,6 +15,7 @@ ; CHECK-LABEL: func2: ; CHECK-NEXT: .Lfunc_begin1: ; CHECK: .section .stack_sizes,"o",%progbits,.text{{$}} +; CHECK-NEXT: .p2align 2 ; CHECK-NEXT: .long .Lfunc_begin1 ; CHECK-NEXT: .byte 16 define void @func2() #0 { diff --git a/llvm/test/CodeGen/SystemZ/stack-size-section.ll b/llvm/test/CodeGen/SystemZ/stack-size-section.ll --- a/llvm/test/CodeGen/SystemZ/stack-size-section.ll +++ b/llvm/test/CodeGen/SystemZ/stack-size-section.ll @@ -3,6 +3,7 @@ ; CHECK-LABEL: func1: ; CHECK-NEXT: .Lfunc_begin0: ; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}} +; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: .quad .Lfunc_begin0 ; CHECK-NEXT: .byte 0 define void @func1(i32, i32) #0 { @@ -12,6 +13,7 @@ ; CHECK-LABEL: func2: ; CHECK-NEXT: .Lfunc_begin1: ; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}} +; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: .quad .Lfunc_begin1 ; CHECK-NEXT: .ascii "\250\001" define void @func2(i32, i32) #0 { @@ -23,6 +25,7 @@ ; CHECK-LABEL: func3: ; CHECK-NEXT: .Lfunc_begin2: ; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}} +; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: .quad .Lfunc_begin2 ; CHECK-NEXT: .ascii "\250\001" define void @func3() #0 { diff --git a/llvm/test/CodeGen/X86/stack-size-section.ll b/llvm/test/CodeGen/X86/stack-size-section.ll --- a/llvm/test/CodeGen/X86/stack-size-section.ll +++ b/llvm/test/CodeGen/X86/stack-size-section.ll @@ -3,6 +3,7 @@ ; CHECK-LABEL: func1: ; CHECK-NEXT: .Lfunc_begin0: ; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}} +; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: .quad .Lfunc_begin0 ; CHECK-NEXT: .byte 8 define void @func1(i32, i32) #0 { @@ -14,6 +15,7 @@ ; CHECK-LABEL: func2: ; CHECK-NEXT: .Lfunc_begin1: ; CHECK: .section .stack_sizes,"o",@progbits,.text{{$}} +; CHECK-NEXT: .p2align 3 ; CHECK-NEXT: .quad .Lfunc_begin1 ; CHECK-NEXT: .byte 24 define void @func2() #0 {