diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-24 08:59:28 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-01-24 08:59:28 +0000 |
commit | 552752f776e86b3e417f34ab2265f85b291d710f (patch) | |
tree | 4cdc7b4c1a5f853c36928c79729dee8419d6837f /gcc/builtins.c | |
parent | a87cf6e52599827f05332c8815625bb79d663bd2 (diff) | |
download | gcc-552752f776e86b3e417f34ab2265f85b291d710f.tar.gz |
* builtins.c (get_pointer_alignment, gimplify_va_arg_expr,
expand_builtin_printf, expand_builtin_fprintf,
expand_builtin_sprintf): Use POINTER_TYPE_P instead TREE_CODE
checking against POINTER_TYPE.
(validate_arglist): Handle POINTER_TYPE code by checking
POINTER_TYPE_P.
* g++.dg/tree-ssa/empty-1.C: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@94147 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/builtins.c')
-rw-r--r-- | gcc/builtins.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/gcc/builtins.c b/gcc/builtins.c index a13ecef5f65..78076db2bf2 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -201,7 +201,7 @@ get_pointer_alignment (tree exp, unsigned int max_align) { unsigned int align, inner; - if (TREE_CODE (TREE_TYPE (exp)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (exp))) return 0; align = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (exp))); @@ -215,7 +215,7 @@ get_pointer_alignment (tree exp, unsigned int max_align) case CONVERT_EXPR: case NON_LVALUE_EXPR: exp = TREE_OPERAND (exp, 0); - if (TREE_CODE (TREE_TYPE (exp)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (exp))) return align; inner = TYPE_ALIGN (TREE_TYPE (TREE_TYPE (exp))); @@ -3988,7 +3988,7 @@ gimplify_va_arg_expr (tree *expr_p, tree *pre_p, tree *post_p) In that case, unwrap both types so that we can compare the underlying records. */ if (TREE_CODE (have_va_type) == ARRAY_TYPE - || TREE_CODE (have_va_type) == POINTER_TYPE) + || POINTER_TYPE_P (have_va_type)) { want_va_type = TREE_TYPE (want_va_type); have_va_type = TREE_TYPE (have_va_type); @@ -4486,7 +4486,7 @@ expand_builtin_printf (tree arglist, rtx target, enum machine_mode mode, if (! arglist) return 0; fmt = TREE_VALUE (arglist); - if (TREE_CODE (TREE_TYPE (fmt)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (fmt))) return 0; arglist = TREE_CHAIN (arglist); @@ -4499,7 +4499,7 @@ expand_builtin_printf (tree arglist, rtx target, enum machine_mode mode, if (strcmp (fmt_str, "%s\n") == 0) { if (! arglist - || TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE + || ! POINTER_TYPE_P (TREE_TYPE (TREE_VALUE (arglist))) || TREE_CHAIN (arglist)) return 0; fn = fn_puts; @@ -4588,13 +4588,13 @@ expand_builtin_fprintf (tree arglist, rtx target, enum machine_mode mode, if (! arglist) return 0; fp = TREE_VALUE (arglist); - if (TREE_CODE (TREE_TYPE (fp)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (fp))) return 0; arglist = TREE_CHAIN (arglist); if (! arglist) return 0; fmt = TREE_VALUE (arglist); - if (TREE_CODE (TREE_TYPE (fmt)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (fmt))) return 0; arglist = TREE_CHAIN (arglist); @@ -4607,7 +4607,7 @@ expand_builtin_fprintf (tree arglist, rtx target, enum machine_mode mode, if (strcmp (fmt_str, "%s") == 0) { if (! arglist - || TREE_CODE (TREE_TYPE (TREE_VALUE (arglist))) != POINTER_TYPE + || ! POINTER_TYPE_P (TREE_TYPE (TREE_VALUE (arglist))) || TREE_CHAIN (arglist)) return 0; arg = TREE_VALUE (arglist); @@ -4675,13 +4675,13 @@ expand_builtin_sprintf (tree arglist, rtx target, enum machine_mode mode) if (! arglist) return 0; dest = TREE_VALUE (arglist); - if (TREE_CODE (TREE_TYPE (dest)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (dest))) return 0; arglist = TREE_CHAIN (arglist); if (! arglist) return 0; fmt = TREE_VALUE (arglist); - if (TREE_CODE (TREE_TYPE (fmt)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (fmt))) return 0; arglist = TREE_CHAIN (arglist); @@ -4717,7 +4717,7 @@ expand_builtin_sprintf (tree arglist, rtx target, enum machine_mode mode) if (! arglist || TREE_CHAIN (arglist)) return 0; arg = TREE_VALUE (arglist); - if (TREE_CODE (TREE_TYPE (arg)) != POINTER_TYPE) + if (! POINTER_TYPE_P (TREE_TYPE (arg))) return 0; if (target != const0_rtx) @@ -8058,8 +8058,14 @@ validate_arglist (tree arglist, ...) /* If no parameters remain or the parameter's code does not match the specified code, return false. Otherwise continue checking any remaining arguments. */ - if (arglist == 0 - || code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist)))) + if (arglist == 0) + goto end; + if (code == POINTER_TYPE) + { + if (! POINTER_TYPE_P (TREE_TYPE (TREE_VALUE (arglist)))) + goto end; + } + else if (code != TREE_CODE (TREE_TYPE (TREE_VALUE (arglist)))) goto end; break; } |