mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-12-14 07:09:08 +00:00
633f234017
For aliases, any expression that lowers at the MC level to global_object or global_object+constant is valid at the object file level. getBaseObject() should return a result if the aliasee ends up being of that form even if the IR used to produce it is somewhat unconventional. Note that this is different from what stripInBoundsOffsets() and that family of functions is doing. Those functions are concerned about semantic properties of IR, whereas here we only care about the lowering result. Therefore reimplement getBaseObject() in a way that matches the lowering result. This fixes a crash when producing a summary for aliases such as that in the included test case. Differential Revision: https://reviews.llvm.org/D65115 llvm-svn: 366952
12 lines
449 B
LLVM
12 lines
449 B
LLVM
; Test that inttoptr, add and ptrtoint don't cause problems in alias summaries.
|
|
; RUN: opt -module-summary %s -o - | llvm-dis | FileCheck %s
|
|
|
|
; CHECK: ^1 = gv: (name: "a", {{.*}} aliasee: ^2
|
|
; CHECK: ^2 = gv: (name: "b",
|
|
|
|
target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
|
|
target triple = "x86_64-unknown-linux-gnu"
|
|
|
|
@a = alias i32, i32* inttoptr (i64 add (i64 ptrtoint (i32* @b to i64), i64 1297036692682702848) to i32*)
|
|
@b = global i32 1
|