Don't promote byval pointer arguments when padding matters
[oota-llvm.git] / test / Transforms / ArgumentPromotion / tail.ll
1 ; RUN: opt %s -argpromotion -S -o - | FileCheck %s
2 ; PR14710
3
4 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
5
6 %pair = type { i32, i32 }
7
8 declare i8* @foo(%pair*)
9
10 define internal void @bar(%pair* byval %Data) {
11 ; CHECK: define internal void @bar(i32 %Data.0, i32 %Data.1)
12 ; CHECK: %Data = alloca %pair
13 ; CHECK-NOT: tail
14 ; CHECK: call i8* @foo(%pair* %Data)
15   tail call i8* @foo(%pair* %Data)
16   ret void
17 }
18
19 define void @zed(%pair* byval %Data) {
20   call void @bar(%pair* byval %Data)
21   ret void
22 }