9813131936 
								
							 
						 
						
							
							
								
								[coroutines] Fix co_return statement for initializer list arguments  
							
							... 
							
							
							
							Summary:
Previously the statement `co_return {42}` would be transformed into `P.return_void()`, since the type of `{42}` is represented as `void` by Clang.
This patch fixes the bug by checking for `InitListExpr` arguments and transforming them accordingly.
Reviewers: majnemer, GorNishanov, rsmith
Subscribers: mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D25296 
llvm-svn: 283495 
							
						 
						
							2016-10-06 21:23:38 +00:00  
				
					
						
							
							
								 
						
							
								3e048bb140 
								
							 
						 
						
							
							
								
								[coroutines] Switch to using std::experimental namespace per P0057R5  
							
							... 
							
							
							
							Summary:
Look for coroutine_traits and friends in std::experimental namespace.
Patch (mostly) by EricWF.
Reviewers: cfe-commits, EricWF, rsmith
Subscribers: majnemer, mehdi_amini
Differential Revision: https://reviews.llvm.org/D25068 
llvm-svn: 283170 
							
						 
						
							2016-10-04 00:31:16 +00:00  
				
					
						
							
							
								 
						
							
								7d5773e610 
								
							 
						 
						
							
							
								
								[coroutines] Diagnose when 'main' is declared as a coroutine.  
							
							... 
							
							
							
							Summary: The title says it all.
Reviewers: rsmith, GorNishanov
Subscribers: mehdi_amini, cfe-commits
Differential Revision: https://reviews.llvm.org/D25078 
llvm-svn: 282973 
							
						 
						
							2016-09-30 22:38:31 +00:00  
				
					
						
							
							
								 
						
							
								a546528d7b 
								
							 
						 
						
							
							
								
								[Coroutines] Fix assertion about uncorrected typos in co_await/co_yield/co_return expressions  
							
							... 
							
							
							
							llvm-svn: 282792 
							
						 
						
							2016-09-29 21:47:39 +00:00  
				
					
						
							
							
								 
						
							
								4a05bb8d8d 
								
							 
						 
						
							
							
								
								Re-commit "[Temporary] Add an ExprWithCleanups for each C++ MaterializeTemporaryExpr."  
							
							... 
							
							
							
							Since D21243 fixes relative clang-tidy tests.
This reverts commit a71d9fbd41e99def9159af2b01ef6509394eaeed.
llvm-svn: 273312 
							
						 
						
							2016-06-21 20:29:17 +00:00  
				
					
						
							
							
								 
						
							
								17b3deeff3 
								
							 
						 
						
							
							
								
								Revert "[Temporary] Add an ExprWithCleanups for each C++ MaterializeTemporaryExpr."  
							
							... 
							
							
							
							This reverts r272296, since there are clang-tidy failures that appear to
be caused by this change.
llvm-svn: 272310 
							
						 
						
							2016-06-09 21:13:39 +00:00  
				
					
						
							
							
								 
						
							
								f120a7b6a3 
								
							 
						 
						
							
							
								
								[Temporary] Add an ExprWithCleanups for each C++ MaterializeTemporaryExpr.  
							
							... 
							
							
							
							These ExprWithCleanups are added for holding a RunCleanupsScope not
for destructor calls; rather, they are for lifetime marks. This requires
ExprWithCleanups to keep a bit to indicate whether it have cleanups with
side effects (e.g. dtor calls).
Differential Revision: http://reviews.llvm.org/D20498 
llvm-svn: 272296 
							
						 
						
							2016-06-09 19:54:46 +00:00  
				
					
						
							
							
								 
						
							
								2af65c4a89 
								
							 
						 
						
							
							
								
								[coroutines] Build a CoroutineBodyStmt when finishing parsing a coroutine, and form the initial_suspend, final_suspend, and get_return_object calls.  
							
							... 
							
							
							
							llvm-svn: 253946 
							
						 
						
							2015-11-24 02:34:39 +00:00  
				
					
						
							
							
								 
						
							
								71d403effb 
								
							 
						 
						
							
							
								
								[coroutines] Check for overload sets in co_yield / co_return operands being resolved by a call to yield_value / return_value before rejecting them.  
							
							... 
							
							
							
							llvm-svn: 253817 
							
						 
						
							2015-11-22 07:33:28 +00:00  
				
					
						
							
							
								 
						
							
								4ba66602bd 
								
							 
						 
						
							
							
								
								[coroutines] Build implicit return_value / return_void calls for co_return.  
							
							... 
							
							
							
							llvm-svn: 253816 
							
						 
						
							2015-11-22 07:05:16 +00:00  
				
					
						
							
							
								 
						
							
								1f38eddee0 
								
							 
						 
						
							
							
								
								[coroutines] Materialize the awaitable before generating the await_* calls.  
							
							... 
							
							
							
							llvm-svn: 253812 
							
						 
						
							2015-11-22 03:13:02 +00:00  
				
					
						
							
							
								 
						
							
								d7bed4d660 
								
							 
						 
						
							
							
								
								[coroutines] Factor out co_await representation into common base class for co_await and co_yield, and use it to hold await_* calls.  
							
							... 
							
							
							
							llvm-svn: 253811 
							
						 
						
							2015-11-22 02:57:17 +00:00  
				
					
						
							
							
								 
						
							
								10610f7f2f 
								
							 
						 
						
							
							
								
								[coroutines] Better handling of placeholder types.  
							
							... 
							
							
							
							llvm-svn: 253731 
							
						 
						
							2015-11-20 22:57:24 +00:00  
				
					
						
							
							
								 
						
							
								23da82c5ea 
								
							 
						 
						
							
							
								
								[coroutines] Synthesize yield_value call for co_yield.  
							
							... 
							
							
							
							llvm-svn: 253725 
							
						 
						
							2015-11-20 22:40:06 +00:00  
				
					
						
							
							
								 
						
							
								744b224bb5 
								
							 
						 
						
							
							
								
								[coroutines] Per latest wording paper, co_* are no longer permitted in any  
							
							... 
							
							
							
							unevaluated operands.
llvm-svn: 253641 
							
						 
						
							2015-11-20 02:54:01 +00:00  
				
					
						
							
							
								 
						
							
								9b2f53e39e 
								
							 
						 
						
							
							
								
								[coroutines] Tweak diagnostics to always use fully-qualified name for std::coroutine_traits.  
							
							... 
							
							
							
							llvm-svn: 253535 
							
						 
						
							2015-11-19 02:36:35 +00:00  
				
					
						
							
							
								 
						
							
								9f690bd80b 
								
							 
						 
						
							
							
								
								[coroutines] Creation of promise object, lookup of operator co_await, building  
							
							... 
							
							
							
							of await_* calls, and AST representation for same.
llvm-svn: 251387 
							
						 
						
							2015-10-27 06:02:45 +00:00  
				
					
						
							
							
								 
						
							
								cfd53b4e99 
								
							 
						 
						
							
							
								
								[coroutines] Initial stub Sema functionality for handling coroutine await / yield / return.  
							
							... 
							
							
							
							llvm-svn: 250993 
							
						 
						
							2015-10-22 06:13:50 +00:00