Mercurial > hg > CbC > CbC_llvm
view clang/test/SemaCXX/constexpr-default-arg.cpp @ 221:79ff65ed7e25
LLVM12 Original
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 15 Jun 2021 19:15:29 +0900 |
parents | 1d019706d866 |
children |
line wrap: on
line source
// RUN: %clang_cc1 -std=c++1y -S -o - -emit-llvm -verify %s namespace default_arg_temporary { constexpr bool equals(const float& arg = 1.0f) { return arg == 1.0f; } constexpr const int &x(const int &p = 0) { return p; } struct S { constexpr S(const int &a = 0) {} }; void test_default_arg2() { // This piece of code used to cause an assertion failure in // CallStackFrame::createTemporary because the same MTE is used to initilize // both elements of the array (see PR33140). constexpr S s[2] = {}; // This piece of code used to cause an assertion failure in // CallStackFrame::createTemporary because multiple CXXDefaultArgExpr share // the same MTE (see PR33140). static_assert(equals() && equals(), ""); // Test that constant expression evaluation produces distinct lvalues for // each call. static_assert(&x() != &x(), ""); } // Check that multiple CXXDefaultInitExprs don't cause an assertion failure. struct A { int &&r = 0; }; // expected-note 2{{default member initializer}} struct B { A x, y; }; B b = {}; // expected-warning 2{{not supported}} }