1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 19:23:23 +01:00
llvm-mirror/test/ThinLTO/X86/cache-icall.ll
Amy Huang 062b5d40cb Reland "Change the X86 datalayout to add three address spaces
for 32 bit signed, 32 bit unsigned, and 64 bit pointers."
This reverts 57076d3199fc2b0af4a3736b7749dd5462cacda5.

Original review at https://reviews.llvm.org/D64931.
Review for added fix at https://reviews.llvm.org/D66843.

llvm-svn: 371568
2019-09-10 23:15:38 +00:00

56 lines
1.8 KiB
LLVM

; Test that the list of CFI jumptable entries is part of ThinLTO cache key.
; Linking Inputs/cache-icall.ll results in f() being added to CFI jumptable; otherwise it is not.
; This affects code generated for any users of f(). Make sure that we don't pull a stale object
; file for %t.o from the cache.
; RUN: opt -module-hash -module-summary -thinlto-bc -thinlto-split-lto-unit %s -o %t.bc
; RUN: opt -module-hash -module-summary -thinlto-bc -thinlto-split-lto-unit %p/Inputs/cache-icall.ll -o %t2.bc
; RUN: rm -Rf %t.cache && mkdir %t.cache
; RUN: llvm-lto2 run -o %t-no.o %t.bc -cache-dir %t.cache \
; RUN: -r=%t.bc,_start,px \
; RUN: -r=%t.bc,f,
; RUN: llvm-readelf -s %t-no.o.* | FileCheck %s --check-prefix=SYMBOLS-NO
; RUN: llvm-lto2 run -o %t-yes.o %t.bc %t2.bc -cache-dir %t.cache \
; RUN: -r=%t.bc,_start,px \
; RUN: -r=%t.bc,f, \
; RUN: -r=%t2.bc,f,p
; RUN: llvm-readelf -s %t-yes.o.* | FileCheck %s --check-prefix=SYMBOLS-YES
; SYMBOLS-NO-DAG: {{FUNC .* f.cfi_jt$}}
; SYMBOLS-NO-DAG: {{NOTYPE .* UND f.cfi_jt$}}
; SYMBOLS-YES-NOT: f.cfi_jt
; SYMBOLS-YES-DAG: {{FUNC .* f.cfi$}}
; SYMBOLS-YES-DAG: {{NOTYPE .* UND f.cfi$}}
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"
define i8* @_start(void ()* %p) !type !0 {
entry:
%0 = bitcast void ()* %p to i8*
%1 = tail call i1 @llvm.type.test(i8* %0, metadata !"_ZTSFvvE")
br i1 %1, label %cont, label %trap
trap: ; preds = %entry
tail call void @llvm.trap()
unreachable
cont: ; preds = %entry
tail call void %p()
ret i8* bitcast (void ()* @f to i8*)
}
declare i1 @llvm.type.test(i8*, metadata)
declare void @llvm.trap()
declare !type !1 void @f()
!0 = !{i64 0, !"_ZTSFPvPFvvEE"}
!1 = !{i64 0, !"_ZTSFvvE"}