Add __builtin_frame_address(0)
Adding the GCC extension __builtin_frame_address(). We support only zero as the argument for now. With this functionality, we can implement GCC compatible stdarg by macros in x86-64.
This commit is contained in:
		
							parent
							
								
									73a84cefda
								
							
						
					
					
						commit
						d6072d3703
					
				
					 2 changed files with 19 additions and 0 deletions
				
			
		
							
								
								
									
										18
									
								
								tcc.c
									
										
									
									
									
								
							
							
						
						
									
										18
									
								
								tcc.c
									
										
									
									
									
								
							|  | @ -7599,6 +7599,24 @@ static void unary(void) | |||
|             vpushi(res); | ||||
|         } | ||||
|         break; | ||||
|     case TOK_builtin_frame_address: | ||||
|         { | ||||
|             CType type; | ||||
|             next(); | ||||
|             skip('('); | ||||
|             if (tok != TOK_CINT) { | ||||
|                 error("__builtin_frame_address only takes integers"); | ||||
|             } | ||||
|             if (tokc.i != 0) { | ||||
|                 error("TCC only supports __builtin_frame_address(0)"); | ||||
|             } | ||||
|             next(); | ||||
|             skip(')'); | ||||
|             type.t = VT_VOID; | ||||
|             mk_pointer(&type); | ||||
|             vset(&type, VT_LOCAL, 0); | ||||
|         } | ||||
|         break; | ||||
|     case TOK_INC: | ||||
|     case TOK_DEC: | ||||
|         t = tok; | ||||
|  |  | |||
							
								
								
									
										1
									
								
								tcctok.h
									
										
									
									
									
								
							
							
						
						
									
										1
									
								
								tcctok.h
									
										
									
									
									
								
							|  | @ -109,6 +109,7 @@ | |||
|      DEF(TOK_NORETURN2, "__noreturn__") | ||||
|      DEF(TOK_builtin_types_compatible_p, "__builtin_types_compatible_p") | ||||
|      DEF(TOK_builtin_constant_p, "__builtin_constant_p") | ||||
|      DEF(TOK_builtin_frame_address, "__builtin_frame_address") | ||||
|      DEF(TOK_REGPARM1, "regparm") | ||||
|      DEF(TOK_REGPARM2, "__regparm__") | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue