aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/Transforms/SafeStack/X86/alloca-addrspace-wrong-addrspace.ll
blob: 4f780fa9695ff70046291c479a6be6efd3e1e78f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt -S -passes=safe-stack -mtriple=x86_64-pc-linux-gnu < %s -o - | FileCheck %s --check-prefix=TLS

target datalayout = "A5"

; Use has wrong address space for the alloca, addrspacecast is inserted.
define void @correct_alloca_addrspace() nounwind uwtable safestack {
; TLS-LABEL: define void @correct_alloca_addrspace(
; TLS-SAME: ) #[[ATTR0:[0-9]+]] !annotation [[META0:![0-9]+]] {
; TLS-NEXT:  [[ENTRY:.*:]]
; TLS-NEXT:    [[UNSAFE_STACK_PTR:%.*]] = load ptr addrspace(5), ptr @__safestack_unsafe_stack_ptr, align 8
; TLS-NEXT:    [[UNSAFE_STACK_STATIC_TOP:%.*]] = getelementptr i8, ptr addrspace(5) [[UNSAFE_STACK_PTR]], i32 -16
; TLS-NEXT:    store ptr addrspace(5) [[UNSAFE_STACK_STATIC_TOP]], ptr @__safestack_unsafe_stack_ptr, align 8
; TLS-NEXT:    [[TMP0:%.*]] = getelementptr i8, ptr addrspace(5) [[UNSAFE_STACK_PTR]], i32 -8
; TLS-NEXT:    [[A_UNSAFE:%.*]] = addrspacecast ptr addrspace(5) [[TMP0]] to ptr
; TLS-NEXT:    call void @Capture(ptr [[A_UNSAFE]])
; TLS-NEXT:    store ptr addrspace(5) [[UNSAFE_STACK_PTR]], ptr @__safestack_unsafe_stack_ptr, align 8
; TLS-NEXT:    ret void
;
entry:
  %a = alloca i8, align 8
  call void @Capture(ptr %a)
  ret void
}

declare void @Capture(ptr)
;.
; TLS: [[META0]] = !{!"unsafe-stack-size", i32 16}
;.