diff --git a/clang/lib/Serialization/ASTWriterDecl.cpp b/clang/lib/Serialization/ASTWriterDecl.cpp --- a/clang/lib/Serialization/ASTWriterDecl.cpp +++ b/clang/lib/Serialization/ASTWriterDecl.cpp @@ -2260,7 +2260,7 @@ Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Defaulted Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // ExplicitlyDefaulted Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // ImplicitReturnZero - Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // Constexpr + Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // Constexpr Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // UsesSEHTry Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // SkippedBody Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // MultiVersion diff --git a/clang/test/AST/ast-dump-constant-expr.cpp b/clang/test/AST/ast-dump-constant-expr.cpp --- a/clang/test/AST/ast-dump-constant-expr.cpp +++ b/clang/test/AST/ast-dump-constant-expr.cpp @@ -6,6 +6,7 @@ // RUN: %clang_cc1 -std=c++20 -triple x86_64-unknown-unknown -emit-pch -o %t %s // RUN: %clang_cc1 -x c++ -std=c++20 -triple x86_64-unknown-unknown -include-pch %t \ // RUN: -ast-dump-all -ast-dump-filter Test /dev/null \ +// RUN: | sed -e "s/ //" -e "s/ imported//" \ // RUN: | FileCheck --strict-whitespace --match-full-lines %s // FIXME: ASTRecordReader::readAPValue and ASTRecordWriter::AddAPValue @@ -39,47 +40,54 @@ // FIXME: consteval U test_Union() { return U(); } // FIXME: consteval SU test_SU() { return SU(); } -void Test() { - (void) test_Int(); - (void) test_Float(); - (void) test_ComplexInt(); - (void) test_ComplexFloat(); - (void) test_Int128(); - //(void) test_Array(); - //(void) test_Struct(); - //(void) test_Union(); - //(void) test_SU(); -} +struct Test { + void test() { + (void)test_Int(); + (void)test_Float(); + (void)test_ComplexInt(); + (void)test_ComplexFloat(); + (void)test_Int128(); + //(void) test_Array(); + //(void) test_Struct(); + //(void) test_Union(); + //(void) test_SU(); + } + + consteval void consteval_method() {} +}; + // CHECK:Dumping Test: -// CHECK-NEXT:FunctionDecl {{.*}} <{{.*}}ast-dump-constant-expr.cpp:42:1, line:52:1> line:42:6{{( imported)?}} Test 'void ()' -// CHECK-NEXT:`-CompoundStmt {{.*}} -// CHECK-NEXT: |-CStyleCastExpr {{.*}} 'void' -// CHECK-NEXT: | `-ConstantExpr {{.*}} 'int' -// CHECK-NEXT: | |-value: Int 42 -// CHECK-NEXT: | `-CallExpr {{.*}} 'int' -// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'int (*)()' -// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'int ()' lvalue Function {{.*}} 'test_Int' 'int ()' -// CHECK-NEXT: |-CStyleCastExpr {{.*}} 'void' -// CHECK-NEXT: | `-ConstantExpr {{.*}} 'float' -// CHECK-NEXT: | |-value: Float 1.000000e+00 -// CHECK-NEXT: | `-CallExpr {{.*}} 'float' -// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} 'float (*)()' -// CHECK-NEXT: | `-DeclRefExpr {{.*}} 'float ()' lvalue Function {{.*}} 'test_Float' 'float ()' -// CHECK-NEXT: |-CStyleCastExpr {{.*}} 'void' -// CHECK-NEXT: | `-ConstantExpr {{.*}} '_Complex int' -// CHECK-NEXT: | |-value: ComplexInt 1 + 2i -// CHECK-NEXT: | `-CallExpr {{.*}} '_Complex int' -// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Complex int (*)()' -// CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Complex int ()' lvalue Function {{.*}} 'test_ComplexInt' '_Complex int ()' -// CHECK-NEXT: |-CStyleCastExpr {{.*}} 'void' -// CHECK-NEXT: | `-ConstantExpr {{.*}} '_Complex float' -// CHECK-NEXT: | |-value: ComplexFloat 1.200000e+00 + 3.400000e+00i -// CHECK-NEXT: | `-CallExpr {{.*}} '_Complex float' -// CHECK-NEXT: | `-ImplicitCastExpr {{.*}} '_Complex float (*)()' -// CHECK-NEXT: | `-DeclRefExpr {{.*}} '_Complex float ()' lvalue Function {{.*}} 'test_ComplexFloat' '_Complex float ()' -// CHECK-NEXT: `-CStyleCastExpr {{.*}} 'void' -// CHECK-NEXT: `-ConstantExpr {{.*}} '__int128' -// CHECK-NEXT: |-value: Int 18446744073709551616 -// CHECK-NEXT: `-CallExpr {{.*}} '__int128' -// CHECK-NEXT: `-ImplicitCastExpr {{.*}} '__int128 (*)()' -// CHECK-NEXT: `-DeclRefExpr {{.*}} '__int128 ()' lvalue Function {{.*}} 'test_Int128' '__int128 ()' +// CHECK-NEXT:CXXRecordDecl {{.*}} <{{.*}}ast-dump-constant-expr.cpp:43:1, line:57:1> line:43:8 struct Test definition +// CHECK:|-CXXMethodDecl {{.*}} line:44:8 test 'void ()' +// CHECK-NEXT:| `-CompoundStmt {{.*}} +// CHECK-NEXT:| |-CStyleCastExpr {{.*}} 'void' +// CHECK-NEXT:| | `-ConstantExpr {{.*}} 'int' +// CHECK-NEXT:| | |-value: Int 42 +// CHECK-NEXT:| | `-CallExpr {{.*}} 'int' +// CHECK-NEXT:| | `-ImplicitCastExpr {{.*}} 'int (*)()' +// CHECK-NEXT:| | `-DeclRefExpr {{.*}} 'int ()' lvalue Function {{.*}} 'test_Int' 'int ()' +// CHECK-NEXT:| |-CStyleCastExpr {{.*}} 'void' +// CHECK-NEXT:| | `-ConstantExpr {{.*}} 'float' +// CHECK-NEXT:| | |-value: Float 1.000000e+00 +// CHECK-NEXT:| | `-CallExpr {{.*}} 'float' +// CHECK-NEXT:| | `-ImplicitCastExpr {{.*}} 'float (*)()' +// CHECK-NEXT:| | `-DeclRefExpr {{.*}} 'float ()' lvalue Function {{.*}} 'test_Float' 'float ()' +// CHECK-NEXT:| |-CStyleCastExpr {{.*}} 'void' +// CHECK-NEXT:| | `-ConstantExpr {{.*}} '_Complex int' +// CHECK-NEXT:| | |-value: ComplexInt 1 + 2i +// CHECK-NEXT:| | `-CallExpr {{.*}} '_Complex int' +// CHECK-NEXT:| | `-ImplicitCastExpr {{.*}} '_Complex int (*)()' +// CHECK-NEXT:| | `-DeclRefExpr {{.*}} '_Complex int ()' lvalue Function {{.*}} 'test_ComplexInt' '_Complex int ()' +// CHECK-NEXT:| |-CStyleCastExpr {{.*}} 'void' +// CHECK-NEXT:| | `-ConstantExpr {{.*}} '_Complex float' +// CHECK-NEXT:| | |-value: ComplexFloat 1.200000e+00 + 3.400000e+00i +// CHECK-NEXT:| | `-CallExpr {{.*}} '_Complex float' +// CHECK-NEXT:| | `-ImplicitCastExpr {{.*}} '_Complex float (*)()' +// CHECK-NEXT:| | `-DeclRefExpr {{.*}} '_Complex float ()' lvalue Function {{.*}} 'test_ComplexFloat' '_Complex float ()' +// CHECK-NEXT:| `-CStyleCastExpr {{.*}} 'void' +// CHECK-NEXT:| `-ConstantExpr {{.*}} '__int128' +// CHECK-NEXT:| |-value: Int 18446744073709551616 +// CHECK-NEXT:| `-CallExpr {{.*}} '__int128' +// CHECK-NEXT:| `-ImplicitCastExpr {{.*}} '__int128 (*)()' +// CHECK-NEXT:| `-DeclRefExpr {{.*}} '__int128 ()' lvalue Function {{.*}} 'test_Int128' '__int128 ()' +// CHECK-NEXT:`-CXXMethodDecl {{.*}} col:18 consteval consteval_method 'void ()' \ No newline at end of file