Files
llvm-project/clang/test/CodeGenCXX/pass-object-size.cpp
George Burgess IV 08a4a8c389 Add tests for pass_object_size.
These additions were meant to go in as a part of r254554; while it's
certainly nice to have new functionality, it's nicer if we have tests to
go with it. :)

llvm-svn: 254632
2015-12-03 19:19:09 +00:00

28 lines
819 B
C++

// RUN: %clang_cc1 -triple x86_64-apple-darwin -emit-llvm -O0 %s -o - 2>&1 -std=c++11 | FileCheck %s
int gi;
namespace lambdas {
// CHECK-LABEL: define void @_ZN7lambdas7LambdasEPc
void Lambdas(char *ptr) {
auto L1 = [](void *const p __attribute__((pass_object_size(0)))) {
return __builtin_object_size(p, 0);
};
int i = 0;
auto L2 = [&i](void *const p __attribute__((pass_object_size(0)))) {
return __builtin_object_size(p, 0) + i;
};
// CHECK: @llvm.objectsize
gi = L1(ptr);
// CHECK: @llvm.objectsize
gi = L2(ptr);
}
// CHECK-DAG: define internal i64 @"_ZZN7lambdas7LambdasEPcENK3$_0clEPvU17pass_object_size0"
// CHECK-NOT: call i64 @llvm.objectsize
// CHECK-DAG: define internal i64 @"_ZZN7lambdas7LambdasEPcENK3$_1clEPvU17pass_object_size0"
// CHECK-NOT: call i64 @llvm.objectsize
}