summaryrefslogtreecommitdiff
path: root/gcc/builtins.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-24 08:59:28 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2005-01-24 08:59:28 +0000
commit552752f776e86b3e417f34ab2265f85b291d710f (patch)
tree4cdc7b4c1a5f853c36928c79729dee8419d6837f /gcc/builtins.c
parenta87cf6e52599827f05332c8815625bb79d663bd2 (diff)
downloadgcc-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.c32
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;
}