diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-08-09 00:37:14 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-08-09 00:37:14 +0000 |
commit | 34f6c6db2625bec1845315e59202d37d3d202d87 (patch) | |
tree | 878e8b06635ab170ec9815c45a8dcc9a84de2ccf /clang/test/CodeGenCXX/reference-cast.cpp | |
parent | b24a1d29cbebac5d689826a25371368f07a343c0 (diff) | |
download | bcm5719-llvm-34f6c6db2625bec1845315e59202d37d3d202d87.tar.gz bcm5719-llvm-34f6c6db2625bec1845315e59202d37d3d202d87.zip |
Hand materialization of temporary expressions when emitting a scalar
expression. Fxies PR10592.
llvm-svn: 137086
Diffstat (limited to 'clang/test/CodeGenCXX/reference-cast.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/reference-cast.cpp | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/clang/test/CodeGenCXX/reference-cast.cpp b/clang/test/CodeGenCXX/reference-cast.cpp index 585d1dbd408..549434e9414 100644 --- a/clang/test/CodeGenCXX/reference-cast.cpp +++ b/clang/test/CodeGenCXX/reference-cast.cpp @@ -168,3 +168,16 @@ const _Complex float &f1() { // CHECK: store float return get_complex_double(); } + +// CHECK: define i32 @_Z7pr10592RKi(i32* +unsigned pr10592(const int &v) { + // CHECK: [[VADDR:%[a-zA-Z0-9.]+]] = alloca i32* + // CHECK-NEXT: [[REFTMP:%[a-zA-Z0-9.]+]] = alloca i32 + // CHECK-NEXT: store i32* [[V:%[a-zA-Z0-9.]+]], i32** [[VADDR]] + // CHECK-NEXT: [[VADDR_1:%[a-zA-Z0-9.]+]] = load i32** [[VADDR]] + // CHECK-NEXT: [[VVAL:%[a-zA-Z0-9.]+]] = load i32* [[VADDR_1]] + // CHECK-NEXT: store i32 [[VVAL]], i32* [[REFTMP]] + // CHECK-NEXT: [[VVAL_I:%[a-zA-Z0-9.]+]] = load i32* [[REFTMP]] + // CHECK-NEXT: ret i32 [[VVAL_I]] + return static_cast<const unsigned &>(v); +} |