18bc2c662SGiorgis Georgakoudis// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --prefix-filecheck-ir-name _
2*b16a3b4fSNikita Popov// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-unknown-linux-gnu -emit-llvm %s -o - | FileCheck %s
38bc2c662SGiorgis Georgakoudis
48bc2c662SGiorgis Georgakoudis// CHECK-LABEL: define {{[^@]+}}@_Z3fooi
51b1c8d83Shyeongyu kim// CHECK-SAME: (i32 noundef [[A:%.*]]) #[[ATTR0:[0-9]+]] {
68bc2c662SGiorgis Georgakoudis// CHECK-NEXT:  entry:
78bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    [[A_ADDR:%.*]] = alloca i32, align 4
88bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    [[_TMP0:%.*]] = alloca i32*, align 8
98bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    [[_TMP1:%.*]] = alloca i32*, align 8
108bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    [[REF_TMP:%.*]] = alloca i32, align 4
118bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    store i32 [[A]], i32* [[A_ADDR]], align 4
128bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    store i32* [[A_ADDR]], i32** [[_TMP0]], align 8
138bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    store i32 1, i32* [[REF_TMP]], align 4
148bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    store i32* [[REF_TMP]], i32** [[_TMP1]], align 8
158bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    [[TMP0:%.*]] = load i32, i32* [[A_ADDR]], align 4
168bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    [[TMP1:%.*]] = load i32*, i32** [[_TMP1]], align 8
178bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    store i32 [[TMP0]], i32* [[TMP1]], align 4
188bc2c662SGiorgis Georgakoudis// CHECK-NEXT:    ret void
198bc2c662SGiorgis Georgakoudis//
208bc2c662SGiorgis Georgakoudisvoid foo(int a) {
218bc2c662SGiorgis Georgakoudis  int &tmp0 = a;
228bc2c662SGiorgis Georgakoudis  int &&tmp1 = 1;
238bc2c662SGiorgis Georgakoudis  tmp1 = a;
248bc2c662SGiorgis Georgakoudis  return;
258bc2c662SGiorgis Georgakoudis}
26