+2005-02-26 James A. Morrison <phython@gcc.gnu.org>
+
+ * treelang.texi: Treelang does have warnings.
+ * treetree.c (tree_code_create_function_prototype): Don't set
+ TREE_USED and set TREE_PUBLIC, DECL_EXTERNAL, and TREE_STATIC
+ as few times as needed on the function declaration.
+ (tree_code_create_function_initial): Don't set TREE_USED,
+ TREE_ADDRESSABLE, but set TREE_STATIC on the function declaration.
+ (tree_code_create_variable): Don't set TREE_USED on VAR_DECL.
+ (tree_code_get_expression): Set TREE_USED for variable references
+ and function calls.
+
2005-02-26 James A. Morrison <phython@gcc.gnu.org>
* parse.y: Do comparisons as the type of the first expression.
@cindex warnings
@cindex questionable instructions
@item
-There are few warnings in treelang. A program is either correct or in
-error. The only exception to this is an expression in a return statement for
-functions that return nothing.
+There are a few warnings in treelang. For example an unused static function
+generate a warnings when -Wunused-function is specified, similarily an unused
+static variable generates a warning when -Wunused-variable are specified.
+The only treelang specific warning is a warning when an expression is in a
+return statement for functions that return void.
@end itemize
@cindex components of treelang
DECL_CONTEXT (fn_decl) = NULL_TREE;
DECL_SOURCE_LOCATION (fn_decl) = loc;
- TREE_USED (fn_decl) = 1;
-
TREE_PUBLIC (fn_decl) = 0;
DECL_EXTERNAL (fn_decl) = 0;
TREE_STATIC (fn_decl) = 0;
switch (storage_class)
{
case STATIC_STORAGE:
- TREE_PUBLIC (fn_decl) = 0;
break;
case EXTERNAL_DEFINITION_STORAGE:
TREE_PUBLIC (fn_decl) = 1;
- TREE_STATIC (fn_decl) = 0;
- DECL_EXTERNAL (fn_decl) = 0;
break;
case EXTERNAL_REFERENCE_STORAGE:
- TREE_PUBLIC (fn_decl) = 0;
DECL_EXTERNAL (fn_decl) = 1;
break;
pushlevel (0);
- /* Force it to be output, else may be solely inlined. */
- TREE_ADDRESSABLE (fn_decl) = 1;
-
- /* Stop -O3 from deleting it. */
- TREE_USED (fn_decl) = 1;
+ TREE_STATIC (fn_decl) = 1;
}
/* Wrapup a function contained in file FILENAME, ending at line LINENO. */
gcc_unreachable ();
}
- /* This should really only be set if the variable is used. */
- TREE_USED (var_decl) = 1;
-
TYPE_NAME (TREE_TYPE (var_decl)) = TYPE_NAME (var_type);
return pushdecl (copy_node (var_decl));
}
variable type, convert it. */
case EXP_REFERENCE:
gcc_assert (op1);
+ TREE_USED (op1) = 1;
if (type == TREE_TYPE (op1))
ret1 = op1;
else
gcc_assert (op1);
{
tree fun_ptr;
+ TREE_USED (op1) = 1;
fun_ptr = fold (build1 (ADDR_EXPR,
build_pointer_type (TREE_TYPE (op1)), op1));
ret1 = build3 (CALL_EXPR, type, fun_ptr, nreverse (op2), NULL_TREE);