llvm-project/clang/test/AST
Xun Li 19f0770923 [Coroutine][Sema] Cleanup temporaries as early as possible
The original bug was discovered in T75057860. Clang front-end emits an AST that looks like this for an co_await expression:
|- ExprWithCleanups
  |- -CoawaitExpr
    |- -MaterializeTemporaryExpr ... Awaiter
      ...
    |- -CXXMemberCallExpr ... .await_ready
      ...
    |- -CallExpr ... __builtin_coro_resume
      ...
    |- -CXXMemberCallExpr ... .await_resume
      ...

ExprWithCleanups is responsible for cleaning up (including calling dtors) for the temporaries generated in the wrapping expression).
In the above structure, the __builtin_coro_resume part (which corresponds to the code for the suspend case in the co_await with symmetric transfer), the pseudocode looks like this:
  __builtin_coro_resume(
   awaiter.await_suspend(
     from_address(
       __builtin_coro_frame())).address());

One of the temporaries that's generated as part of this code is the coroutine handle returned from awaiter.await_suspend() call. The call returns a handle  which is a prvalue (since it's a returned value on the fly). In order to call the address() method on it, it needs to be converted into an xvalue. Hence a materialized temp is created to hold it. This temp will need to be cleaned up eventually. Now, since all cleanups happen at the end of the entire co_await expression, which is after the <coro.suspend> suspension point, the compiler will think that such a temp needs to live across suspensions, and need to be put on the coroutine frame, even though it's only used temporarily just to call address() method.
Such a phenomena not only unnecessarily increases the frame size, but can lead to ASAN failures, if the coroutine was already destroyed as part of the await_suspend() call. This is because if the coroutine was already destroyed, the frame no longer exists, and one can not store anything into it. But if the temporary object is considered to need to live on the frame, it will be stored into the frame after await_suspend() returns.

A fix attempt was done in https://reviews.llvm.org/D87470. Unfortunately it is incorrect. The reason is that cleanups in Clang works more like linearly than nested. There is one current state indicating whether it needs cleanup, and an ExprWithCleanups resets that state. This means that an ExprWithCleanups must be capable of cleaning up all temporaries created  in the wrapping expression, otherwise there will be dangling temporaries cleaned up at the wrong place.
I eventually found a walk-around (https://reviews.llvm.org/D89066) that doesn't break any existing tests while fixing the issue. But it targets the final co_await only. If we ever have a co_await that's not on the final awaiter and the frame gets destroyed after suspend, we are in trouble. Hence we need a proper fix.

This patch is the proper fix. It does the folllowing things to fully resolve the issue:
1. The AST has to be generated in the order according to their nesting relationship. We should not generate AST out of order because then the code generator would incorrectly track the state of temporaries and when a cleanup is needed. So the code in buildCoawaitCalls is reorganized so that we will be generating the AST for each coawait member call in order along with their child AST.
2. await_ready() call is wrapped with an ExprWithCleanups so that temporaries in it gets cleaned up as early as possible to avoid living across suspension.
3. await_suspend() call is wrapped with an ExprWithCleanups if it's not a symmetric transfer. In the case of a symmetric transfer, in order to maintain the musttail call contract, the ExprWithCleanups is wraaped before the resume call.
4. In the end, we mark again that it needs a cleanup, so that the entire CoawaitExpr will be wrapped with a ExprWithCleanups which will clean up the Awaiter object associated with the await expression.

Differential Revision: https://reviews.llvm.org/D90990
2020-11-10 13:27:42 -08:00
..
Inputs [Coroutine][Sema] Cleanup temporaries as early as possible 2020-11-10 13:27:42 -08:00
Interp [ConstExprPreter] Removed the flag forcing the use of the interpreter 2019-11-27 20:07:19 +00:00
address_space_attribute.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
alignas_maybe_odr_cleanup.cpp [clang] Rework how and when APValues are dumped 2020-07-06 22:03:08 +01:00
ast-dump-APValue-anon-union.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-APValue-arithmetic.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-APValue-array.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-APValue-struct.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-APValue-todo.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-APValue-union.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-APValue-vector.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-APValue-* 2020-07-08 16:39:11 +01:00
ast-dump-aarch64-sve-types.c [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-arm-attr.c [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-array.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-attr.cpp [NFC] Remove string parameter of annotation attribute from AST childs. 2020-11-09 16:39:59 +01:00
ast-dump-attr.m [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-c-attr.c [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-color.cpp [clang] Rework how and when APValues are dumped 2020-07-06 22:03:08 +01:00
ast-dump-comment-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-comment.cpp [clang][NFC] Also test for serialization in test/AST/ast-dump-comment.cpp 2020-07-03 13:59:23 +01:00
ast-dump-concepts.cpp [AST] Fix the CXXFoldExpr source range when parentheses range is invalid. 2020-08-12 09:20:23 +02:00
ast-dump-constant-expr.cpp [clang] Rework how and when APValues are dumped 2020-07-06 22:03:08 +01:00
ast-dump-decl-context-json.cpp PR46209: properly determine whether a copy assignment operator is 2020-06-05 16:05:32 -07:00
ast-dump-decl-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-decl-json.m Fix a variety of minor issues with ObjC method mangling: 2020-09-29 19:51:53 -04:00
ast-dump-decl-stmts.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-decl.c [test] Fix unused check prefixes in test/AST 2020-10-31 21:46:45 -07:00
ast-dump-decl.cpp [clang] Rework how and when APValues are dumped 2020-07-06 22:03:08 +01:00
ast-dump-decl.m [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-decl.mm [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-enum-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-expr-errors.cpp [AST] Preserve the invalid initializer for auto VarDecl. 2020-04-27 10:25:36 +02:00
ast-dump-expr-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-expr-json.cpp PR30738: Implement two-phase name lookup for fold-expressions. 2020-08-06 16:56:39 -07:00
ast-dump-expr-json.m Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-expr.c [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-expr.cpp PR30738: Implement two-phase name lookup for fold-expressions. 2020-08-06 16:56:39 -07:00
ast-dump-file-line-json.c Correcting the offsets within the test to fix the bots. 2019-12-03 13:21:35 -05:00
ast-dump-fpfeatures.cpp [FPEnv] Use typed accessors in FPOptions 2020-09-18 14:16:43 +07:00
ast-dump-funcs-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-funcs.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-if-json.cpp Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-invalid-auto-return-funcs.cpp [AST][RecoveryExpr] Make DeduceAutoType fail if the auto is deduced from recovery exprs. 2020-05-29 09:54:28 +02:00
ast-dump-invalid-initialized.cpp [AST] dont invaliate VarDecl when the initializer contains errors. 2020-04-21 10:53:35 +02:00
ast-dump-invalid.cpp
ast-dump-lambda-body-not-duplicated.cpp [clang][Serialization] Don't duplicate the body of LambdaExpr during deserialization 2020-07-02 14:13:35 +01:00
ast-dump-lambda.cpp Revert "[clang] Prevent that Decl::dump on a CXXRecordDecl deserialises further declarations." 2020-09-07 14:50:13 +02:00
ast-dump-lookups.cpp
ast-dump-macro-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-msp430-attr.c [clang][test][NFC] Also test for serialization in AST dump tests, part 2/n. 2020-06-21 13:59:11 +01:00
ast-dump-namespace-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-objc-arc-json.m [CodeGen] Emit destructor calls to destruct compound literals 2020-03-10 14:08:28 -07:00
ast-dump-openmp-atomic.c [OPENMP]Simplify representation for atomic, critical, master and section 2020-08-07 09:58:23 -04:00
ast-dump-openmp-barrier.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-begin-declare-variant-varying-return.c [OpenMP] Context selector extensions for return value overloading 2020-09-16 13:37:09 -05:00
ast-dump-openmp-begin-declare-variant_1.c [OpenMP] `omp begin/end declare variant` - part 2, sema ("+CG") 2020-03-27 02:30:58 -05:00
ast-dump-openmp-begin-declare-variant_2.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_3.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_4.c [OpenMP] `omp begin/end declare variant` - part 2, sema ("+CG") 2020-03-27 02:30:58 -05:00
ast-dump-openmp-begin-declare-variant_5.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_6.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_7.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_8.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_9.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_10.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_11.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_12.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_13.c [OpenMP][FIX] Do not crash trying to print a missing (demangled) user condition 2020-09-16 13:37:08 -05:00
ast-dump-openmp-begin-declare-variant_addr_1.c [OpenMP] Try to find an existing base for `omp begin/end declare variant` 2020-04-07 23:33:24 -05:00
ast-dump-openmp-begin-declare-variant_decl_1.c [OpenMP] `omp begin/end declare variant` - part 2, sema ("+CG") 2020-03-27 02:30:58 -05:00
ast-dump-openmp-begin-declare-variant_namespace_1.cpp [AST][RecoveryExpr] Build recovery expressions by default for C++. 2020-06-12 15:21:38 +02:00
ast-dump-openmp-begin-declare-variant_nested.c [OpenMP] Support nested OpenMP context selectors (declare variant) 2020-09-16 13:37:09 -05:00
ast-dump-openmp-begin-declare-variant_template_1.cpp When performing a substitution into a dependent alias template, mark the 2020-06-23 14:43:04 -07:00
ast-dump-openmp-begin-declare-variant_template_2.cpp [OpenMP] Context selector extensions for template functions 2020-09-16 13:37:10 -05:00
ast-dump-openmp-begin-declare-variant_template_3.cpp Reapply "[OpenMP][FIX] Verify compatible types for declare variant calls" D88384 2020-10-07 00:06:51 -05:00
ast-dump-openmp-cancel.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-cancellation-point.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-critical.c [OPENMP]Simplify representation for atomic, critical, master and section 2020-08-07 09:58:23 -04:00
ast-dump-openmp-declare-variant-extensions-messages.c [OpenMP] Add match_{all,any,none} declare variant selector extensions. 2020-04-07 23:33:24 -05:00
ast-dump-openmp-declare-variant-extensions.c [OpenMP][FIX] Do not drop a '$' while demangling declare variant names 2020-09-16 13:37:09 -05:00
ast-dump-openmp-distribute-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-distribute-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-distribute-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-distribute.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-flush.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-master.c [OPENMP]Simplify representation for atomic, critical, master and section 2020-08-07 09:58:23 -04:00
ast-dump-openmp-ordered.c [OPENMP]Redesign of OMPExecutableDirective/OMPDeclarativeDirective representation. 2020-08-06 12:25:19 -04:00
ast-dump-openmp-parallel-for-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-for.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-master-XFAIL.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel-sections.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-parallel.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-section.c [OPENMP]Simplify representation for atomic, critical, master and section 2020-08-07 09:58:23 -04:00
ast-dump-openmp-sections.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-simd.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-single.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-data.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-enter-data.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-target-exit-data.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-target-parallel-for-simd.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-parallel-for.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-parallel.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-simd.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-teams-distribute-parallel-for-simd.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-teams-distribute-parallel-for.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-teams-distribute-simd.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-teams-distribute.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-target-teams.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-target-update.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-target.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-task.c [OPENMP50]Mark expression in detach clause as firstprivate. 2020-03-17 14:05:13 -04:00
ast-dump-openmp-taskgroup.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-openmp-taskloop-simd.c [OPENMP]Fix PR45047: Do not copy firstprivates in tasks twice. 2020-03-13 18:04:16 -04:00
ast-dump-openmp-taskloop.c [OPENMP]Fix PR45047: Do not copy firstprivates in tasks twice. 2020-03-13 18:04:16 -04:00
ast-dump-openmp-taskwait.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-taskyield.c [OpenMP] Set pragma start loc to `#pragma` loc 2019-05-28 19:27:19 +00:00
ast-dump-openmp-teams-distribute-parallel-for-simd.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-teams-distribute-parallel-for.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-teams-distribute-simd.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-teams-distribute.c [openmp] Base of tablegen generated OpenMP common declaration 2020-06-23 10:32:32 -04:00
ast-dump-openmp-teams.c [clang] Prune 'IsOMPStructuredBlock' Stmt bit 2020-03-12 14:48:57 +03:00
ast-dump-overloaded-operators.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-pipe.cl [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-ppc-mma-types.c [Clang][PowerPC] Add __vector_pair and __vector_quad types 2020-10-28 13:19:20 -05:00
ast-dump-record-definition-data-json.cpp PR46209: properly determine whether a copy assignment operator is 2020-06-05 16:05:32 -07:00
ast-dump-record-definition-data.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-records-json.cpp PR46209: properly determine whether a copy assignment operator is 2020-06-05 16:05:32 -07:00
ast-dump-records.c [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-records.cpp Revert "[clang] Prevent that Decl::dump on a CXXRecordDecl deserialises further declarations." 2020-09-07 14:50:13 +02:00
ast-dump-recovery.c [AST][RecoveryExpr] Don't perform early typo correction in C. 2020-10-12 11:24:45 +02:00
ast-dump-recovery.cpp [clang] Suppress "follow-up" diagnostics on recovery call expressions. 2020-10-26 12:40:00 +01:00
ast-dump-recovery.m [clang][RecoveryExpr] Add tests for ObjectiveC. 2020-10-27 09:42:19 +01:00
ast-dump-special-member-functions.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-stmt-json.c Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-stmt-json.cpp [clang] Annotating C++'s `operator new` with more attributes 2020-02-26 01:37:17 +03:00
ast-dump-stmt-json.m Include the mangled name in -ast-dump=json 2019-11-15 12:52:56 +00:00
ast-dump-stmt.c [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-stmt.cpp [clang] Rework how and when APValues are dumped 2020-07-06 22:03:08 +01:00
ast-dump-stmt.m [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-template-decls-json.cpp AST dump: recurse into type template arguments when dumping. 2020-06-23 00:07:00 -07:00
ast-dump-template-decls.cpp AST dump: recurse into type template arguments when dumping. 2020-06-23 00:07:00 -07:00
ast-dump-templates.cpp
ast-dump-temporaries-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-traits.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-types-errors-json.cpp [AST] Dump containsErrors bit for the Type. 2020-06-19 08:45:46 +02:00
ast-dump-types-errors.cpp [AST] Dump containsErrors bit for the Type. 2020-06-19 08:45:46 +02:00
ast-dump-types-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
ast-dump-undeserialized.cpp Move decl context dumping to TextNodeDumper 2019-01-19 09:05:55 +00:00
ast-dump-wasm-attr-export.c [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-wasm-attr-import.c [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-dump-wchar.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 1/n. 2020-06-19 13:40:20 +01:00
ast-print-attr.c Introduce ns_error_domain attribute. 2020-08-13 15:05:12 +02:00
ast-print-bool.c
ast-print-char-literal.cpp
ast-print-enum-decl.c [AST] Print fixed enum type regardless of language mode 2020-05-05 15:30:39 -04:00
ast-print-no-sanitize.cpp Do not use the incorrect attribute spelling list index when translating a no_sanitize_foo attribute into a no_sanitize("foo") attribute. 2019-05-21 17:24:49 +00:00
ast-print-objc-property.m Clean up ObjCPropertyDecl printing 2019-04-08 19:52:45 +00:00
ast-print-objectivec.m
ast-print-out-of-line-func.cpp
ast-print-pragmas.cpp [Clang] New loop pragma vectorize_predicate 2019-07-25 07:33:13 +00:00
ast-print-record-decl.c [test] Fix unused check prefixes in test/AST 2020-10-31 21:46:45 -07:00
ast-printer-lambda.cpp [clang] Fix printing of lambdas with capture expressions 2020-07-16 12:50:25 +02:00
atomic-expr.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
attr-print-emit.cpp
attr-swift_bridge.m Sema: add support for `__attribute__((__swift_bridge__))` 2020-09-16 17:54:57 +00:00
attr-swift_bridged_typedef.m Sema: add support for `__attribute__((__swift_bridged_typedef__))` 2020-09-15 20:15:34 +00:00
attr-swift_bridged_typedef.mm Sema: add support for `__attribute__((__swift_bridged_typedef__))` 2020-09-15 20:15:34 +00:00
attr-swift_newtype.m Sema: add support for `__attribute__((__swift_newtype__))` 2020-09-24 15:17:35 +00:00
attr-swift_private.m Sema: add support for `__attribute__((__swift_private__))` 2020-09-25 22:33:53 +00:00
attr-target-ast.c
auto-pragma.cpp
bool-type.m
builtins-arm-strex-rettype.c
c-casts.c [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
category-attribute.m [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
const-fpfeatures.c [clang] add fexperimental-strict-floating-point to test cases that fail on arm and aarch not sure this will work due to commit rG13bfd89c4962 2020-10-30 07:30:06 -07:00
const-fpfeatures.cpp [FPEnv] Evaluate constant expressions under non-default rounding modes 2020-09-26 17:59:39 +07:00
coroutine-locals-cleanup.cpp [Coroutine][Sema] Cleanup temporaries as early as possible 2020-11-10 13:27:42 -08:00
coroutine-source-location-crash.cpp [Coroutines] Ensure co_await promise.final_suspend() does not throw 2020-06-22 15:01:42 -07:00
deduction-guides.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
dump.cpp [OPENMP]Fix PR47158, case 3: allow devic_typein nested declare target region. 2020-08-24 09:58:37 -04:00
finally-msvc.m
fixed_point.c [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
fixed_point_to_string.c [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
float16.cpp AST dump: recurse into type template arguments when dumping. 2020-06-23 00:07:00 -07:00
foreachtemplatized.mm
function-alias.cpp Look through typedefs in getFunctionTypeWithExceptionSpec 2019-02-13 09:39:17 +00:00
gen_ast_dump_json_test.py Switch to opening the temp file in binary mode 2019-12-03 15:31:46 -05:00
implicit-cast-dump.c [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
language_address_space_attribute.cpp [OpenCL] Add global_device and global_host address spaces 2020-07-29 17:24:53 +03:00
multistep-explicit-cast-json.c Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
multistep-explicit-cast-json.cpp Add more information to JSON AST dumping of source locations. 2019-10-15 17:30:19 +00:00
multistep-explicit-cast.c [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
multistep-explicit-cast.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
objc-default-ctor-init.mm
pr43983.cpp [clang] Rework how and when APValues are dumped 2020-07-06 22:03:08 +01:00
pragma-attribute-cxx-subject-match-rules.cpp
pragma-attribute-objc-subject-match-rules.m
property-atomic-bool.m [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
rdr6094103-unordered-compare-promote.c
regression-new-expr-crash.cpp [AST][NFC] Simplify a regression test 2020-07-16 12:07:18 -07:00
sourceranges.cpp Add begin source location for the attributed statement created from PragmaLoopHint decorated loop 2020-06-09 10:08:40 -07:00
spurious-regparm.c Fix the check for regparm in FunctionType::ExtInfo 2020-04-27 16:01:07 +01:00
template-implicit-vars.cpp [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00
variadic-promotion.c [clang][test][NFC] Also test for serialization in AST dump tests, part 3/n. 2020-06-21 13:59:11 +01:00