Files
clang-p2996/llvm/test/CodeGen/X86/catchpad-dynamic-alloca.ll
Harald van Dijk a21abc782a [X86] Align i128 to 16 bytes in x86 datalayouts
This is an attempt at rebooting https://reviews.llvm.org/D28990

I've included AutoUpgrade changes to modify the data layout to satisfy the compatible layout check. But this does mean alloca, loads, stores, etc in old IR will automatically get this new alignment.

This should fix PR46320.

Reviewed By: echristo, rnk, tmgross

Differential Revision: https://reviews.llvm.org/D86310
2023-10-11 10:23:38 +01:00

66 lines
1.5 KiB
LLVM

; RUN: llc < %s | FileCheck %s
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc"
declare void @rt_init()
declare i32 @__CxxFrameHandler3(...)
define void @test1(ptr %fp, i64 %n) personality ptr @__CxxFrameHandler3 {
entry:
%t.i = alloca ptr
%t.ii = alloca i8
%.alloca8 = alloca i8, i64 %n
store volatile i8 0, ptr %t.ii
store volatile i8 0, ptr %.alloca8
invoke void @rt_init()
to label %try.cont unwind label %catch.switch
try.cont:
invoke void %fp()
to label %exit unwind label %catch.switch
exit:
ret void
catch.pad:
%cp = catchpad within %cs [ptr null, i32 0, ptr %t.i]
catchret from %cp to label %exit
catch.switch:
%cs = catchswitch within none [label %catch.pad] unwind to caller
}
; CHECK-LABEL: $handlerMap$0$test1:
; CHECK: .long 0
; CHECK-NEXT: .long 0
; CHECK-NEXT: .long 16
define void @test2(ptr %fp, i64 %n) personality ptr @__CxxFrameHandler3 {
entry:
%t.i = alloca i128
%.alloca8 = alloca i8, i64 %n
store volatile i8 0, ptr %.alloca8
invoke void @rt_init()
to label %try.cont unwind label %catch.switch
try.cont:
invoke void %fp()
to label %exit unwind label %catch.switch
exit:
ret void
catch.pad:
%cp = catchpad within %cs [ptr null, i32 0, ptr %t.i]
catchret from %cp to label %exit
catch.switch:
%cs = catchswitch within none [label %catch.pad] unwind to caller
}
; CHECK-LABEL: $handlerMap$0$test2:
; CHECK: .long 0
; CHECK-NEXT: .long 0
; CHECK-NEXT: .long 16