llvm-project/llvm/test/CodeGen/X86/func-sanitizer.ll
Yuanfang Chen 6678f8e505 [ubsan] Using metadata instead of prologue data for function sanitizer
Information in the function `Prologue Data` is intentionally opaque.
When a function with `Prologue Data` is duplicated. The self (global
value) references inside `Prologue Data` is still pointing to the
original function. This may cause errors like `fatal error: error in backend: Cannot represent a difference across sections`.

This patch detaches the information from function `Prologue Data`
and attaches it to a function metadata node.

This and D116130 fix https://github.com/llvm/llvm-project/issues/49689.

Reviewed By: pcc

Differential Revision: https://reviews.llvm.org/D115844
2022-06-27 12:09:13 -07:00

19 lines
518 B
LLVM

; RUN: llc -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s
; CHECK: _Z3funv:
; CHECK: .cfi_startproc
; CHECK: .long 846595819
; CHECK: .long .L__llvm_rtti_proxy-_Z3funv
; CHECK: .L__llvm_rtti_proxy:
; CHECK: .quad i
; CHECK: .size .L__llvm_rtti_proxy, 8
@i = linkonce_odr constant i32 1
@__llvm_rtti_proxy = private unnamed_addr constant i32* @i
define dso_local void @_Z3funv() !func_sanitize !0 {
ret void
}
!0 = !{i32 846595819, i32** @__llvm_rtti_proxy}