Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
ec2343c4
Commit
ec2343c4
authored
Apr 04, 1992
by
Michael Meissner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r679
parent
59014d0a
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
42 additions
and
28 deletions
+42
-28
gcc/c-decl.c
+42
-28
No files found.
gcc/c-decl.c
View file @
ec2343c4
...
...
@@ -574,7 +574,7 @@ c_decode_option (p)
warn_missing_prototypes
=
0
;
else
if
(
!
strcmp
(
p
,
"-Wredundant-decls"
))
warn_redundant_decls
=
1
;
else
if
(
!
strcmp
(
p
,
"-Wnoredundant-decls"
))
else
if
(
!
strcmp
(
p
,
"-Wno
-
redundant-decls"
))
warn_redundant_decls
=
0
;
else
if
(
!
strcmp
(
p
,
"-Wnested-externs"
))
warn_nested_externs
=
1
;
...
...
@@ -1369,8 +1369,9 @@ duplicate_decls (newdecl, olddecl)
{
/* Since the type is OLDDECL's, make OLDDECL's size go with. */
DECL_SIZE
(
newdecl
)
=
DECL_SIZE
(
olddecl
);
if
(
DECL_ALIGN
(
olddecl
)
>
DECL_ALIGN
(
newdecl
))
DECL_ALIGN
(
newdecl
)
=
DECL_ALIGN
(
olddecl
);
if
(
TREE_CODE
(
olddecl
)
!=
FUNCTION_DECL
)
if
(
DECL_ALIGN
(
olddecl
)
>
DECL_ALIGN
(
newdecl
))
DECL_ALIGN
(
newdecl
)
=
DECL_ALIGN
(
olddecl
);
}
/* Merge the type qualifiers. */
...
...
@@ -2562,10 +2563,7 @@ init_decl_processing ()
builtin_function
(
"strcmp"
,
int_ftype_string_string
,
BUILT_IN_STRCMP
,
0
);
builtin_function
(
"strcpy"
,
string_ftype_ptr_ptr
,
BUILT_IN_STRCPY
,
0
);
builtin_function
(
"strlen"
,
sizet_ftype_string
,
BUILT_IN_STRLEN
,
0
);
#if 0 /* No good, since open-coded implementation fails to set errno.
The ANSI committee made a real mistake in specifying math fns. */
builtin_function
(
"sqrt"
,
double_ftype_double
,
BUILT_IN_FSQRT
,
0
);
#endif
}
#if 0
...
...
@@ -3601,7 +3599,8 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
error
(
"size of array `%s' is negative"
,
name
);
size
=
integer_one_node
;
}
itype
=
build_index_type
(
build_int_2
(
TREE_INT_CST_LOW
(
size
)
-
1
,
0
));
itype
=
build_index_type
(
size_binop
(
MINUS_EXPR
,
size
,
size_one_node
));
}
else
{
...
...
@@ -4532,8 +4531,13 @@ finish_struct (t, fieldlist)
}
}
else
/* Non-bit-fields are aligned for their type. */
DECL_ALIGN
(
x
)
=
MAX
(
DECL_ALIGN
(
x
),
TYPE_ALIGN
(
TREE_TYPE
(
x
)));
{
int
min_align
=
(
DECL_PACKED
(
x
)
?
BITS_PER_UNIT
:
TYPE_ALIGN
(
TREE_TYPE
(
x
)));
/* Non-bit-fields are aligned for their type, except packed
fields which require only BITS_PER_UNIT alignment. */
DECL_ALIGN
(
x
)
=
MAX
(
DECL_ALIGN
(
x
),
min_align
);
}
}
/* Now DECL_INITIAL is null on all members. */
...
...
@@ -4819,7 +4823,8 @@ finish_enum (enumtype, values)
{
TREE_TYPE
(
TREE_PURPOSE
(
pair
))
=
enumtype
;
DECL_SIZE
(
TREE_PURPOSE
(
pair
))
=
TYPE_SIZE
(
enumtype
);
DECL_ALIGN
(
TREE_PURPOSE
(
pair
))
=
TYPE_ALIGN
(
enumtype
);
if
(
TREE_CODE
(
TREE_PURPOSE
(
pair
))
!=
FUNCTION_DECL
)
DECL_ALIGN
(
TREE_PURPOSE
(
pair
))
=
TYPE_ALIGN
(
enumtype
);
}
/* Replace the decl nodes in VALUES with their names. */
...
...
@@ -5289,27 +5294,33 @@ store_parm_decls ()
}
/* Type for passing arg must be consistent
with that declared for the arg. */
if
(
!
comptypes
(
DECL_ARG_TYPE
(
parm
),
TREE_VALUE
(
type
))
/* If -traditional, allow `unsigned int' instead of `int'
in the prototype. */
&&
(
!
(
flag_traditional
&&
DECL_ARG_TYPE
(
parm
)
==
integer_type_node
&&
TREE_VALUE
(
type
)
==
unsigned_type_node
)))
if
(
!
comptypes
(
DECL_ARG_TYPE
(
parm
),
TREE_VALUE
(
type
)))
{
error
(
"argument `%s' doesn't match function prototype"
,
IDENTIFIER_POINTER
(
DECL_NAME
(
parm
)));
if
(
DECL_ARG_TYPE
(
parm
)
==
integer_type_node
&&
TREE_VALUE
(
type
)
==
TREE_TYPE
(
parm
))
if
(
TREE_TYPE
(
parm
)
==
TREE_VALUE
(
type
))
{
error
(
"a formal parameter type that promotes to `int'"
);
error
(
"can match only `int' in the prototype"
);
}
if
(
DECL_ARG_TYPE
(
parm
)
==
double_type_node
&&
TREE_VALUE
(
type
)
==
TREE_TYPE
(
parm
))
{
error
(
"a formal parameter type that promotes to `double'"
);
error
(
"can match only `double' in the prototype"
);
/* Adjust argument to match prototype. E.g. a previous
`int foo(float);' prototype causes
`int foo(x) float x; {...}' to be treated like
`int foo(float x) {...}'. This is particularly
useful for argument types like uid_t. */
DECL_ARG_TYPE
(
parm
)
=
TREE_TYPE
(
parm
);
#ifdef PROMOTE_PROTOTYPES
if
(
TREE_CODE
(
TREE_TYPE
(
parm
))
==
INTEGER_TYPE
&&
TYPE_PRECISION
(
TREE_TYPE
(
parm
))
<
TYPE_PRECISION
(
integer_type_node
))
DECL_ARG_TYPE
(
parm
)
=
integer_type_node
;
#endif
if
(
pedantic
)
warning
(
"promoted argument `%s' doesn't match prototype"
,
IDENTIFIER_POINTER
(
DECL_NAME
(
parm
)));
}
/* If -traditional, allow `int' argument to match
`unsigned' prototype. */
else
if
(
!
(
flag_traditional
&&
TREE_TYPE
(
parm
)
==
integer_type_node
&&
TREE_VALUE
(
type
)
==
unsigned_type_node
))
error
(
"argument `%s' doesn't match prototype"
,
IDENTIFIER_POINTER
(
DECL_NAME
(
parm
)));
}
}
TYPE_ACTUAL_ARG_TYPES
(
TREE_TYPE
(
fndecl
))
=
0
;
...
...
@@ -5653,6 +5664,9 @@ push_c_function_context ()
struct
c_function
*
p
=
(
struct
c_function
*
)
xmalloc
(
sizeof
(
struct
c_function
));
if
(
pedantic
)
pedwarn
(
"ANSI C forbids nested functions"
);
push_function_context
();
p
->
next
=
c_function_chain
;
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment