Arthur Eubanks | feeed16 | 2020-06-26 14:58:01 -0700 | [diff] [blame] | 1 | ; RUN: opt -basic-aa -aa-eval -print-all-alias-modref-info -disable-output < %s 2>&1 | FileCheck %s |
Reid Kleckner | 40e7663 | 2018-08-14 01:24:35 +0000 | [diff] [blame] | 2 | |
Matt Arsenault | 06c192d | 2020-11-20 10:52:27 -0500 | [diff] [blame] | 3 | declare void @takebyval(i32* byval(i32) %p) |
Reid Kleckner | 40e7663 | 2018-08-14 01:24:35 +0000 | [diff] [blame] | 4 | |
| 5 | define i32 @tailbyval() { |
| 6 | entry: |
| 7 | %p = alloca i32 |
| 8 | store i32 42, i32* %p |
Matt Arsenault | 06c192d | 2020-11-20 10:52:27 -0500 | [diff] [blame] | 9 | tail call void @takebyval(i32* byval(i32) %p) |
Reid Kleckner | 40e7663 | 2018-08-14 01:24:35 +0000 | [diff] [blame] | 10 | %rv = load i32, i32* %p |
| 11 | ret i32 %rv |
| 12 | } |
| 13 | ; FIXME: This should be Just Ref. |
| 14 | ; CHECK-LABEL: Function: tailbyval: 1 pointers, 1 call sites |
Matt Arsenault | 06c192d | 2020-11-20 10:52:27 -0500 | [diff] [blame] | 15 | ; CHECK-NEXT: Both ModRef: Ptr: i32* %p <-> tail call void @takebyval(i32* byval(i32) %p) |