| /* { dg-do compile } */ |
| /* { dg-options "-O1 -fdump-tree-dom3" } */ |
| |
| extern void abort (void); |
| struct rtx_def; |
| typedef struct rtx_def *rtx; |
| struct rtvec_def; |
| typedef struct rtvec_def *rtvec; |
| union tree_node; |
| typedef union tree_node *tree; |
| struct tree_common |
| { |
| int code; |
| }; |
| union tree_node |
| { |
| struct tree_common common; |
| }; |
| extern tree current_function_decl; |
| struct cgraph_rtl_info |
| { |
| _Bool pure_function; |
| }; |
| struct cgraph_rtl_info *cgraph_rtl_info (tree); |
| void |
| mark_constant_function (void) |
| { |
| rtx insn; |
| int nonlocal_memory_referenced; |
| |
| if (current_function_decl->common.code != 42) |
| abort (); |
| |
| cgraph_rtl_info (current_function_decl)->pure_function = 1; |
| } |
| |
| /* current_function_decl should be loaded once into a temporary |
| and the temporary used as the argument to cgraph_rtl_info. |
| This if we find current_function_decl used as an argument, then |
| we have failed. */ |
| /* { dg-final { scan-tree-dump-times "\\(current_function_decl\\)" 0 "dom3"} } */ |