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
09e3dd72
Commit
09e3dd72
authored
Feb 01, 1994
by
Richard Kenner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(decl_attributes): Allow format attributes on old style
(non-prototype) function declarations. From-SVN: r6463
parent
e7373556
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
24 deletions
+28
-24
gcc/c-common.c
+28
-24
No files found.
gcc/c-common.c
View file @
09e3dd72
/* Subroutines shared by all languages that are variants of C.
Copyright (C) 1992, 1993 Free Software Foundation, Inc.
Copyright (C) 1992, 1993
, 1994
Free Software Foundation, Inc.
This file is part of GNU CC.
...
...
@@ -345,35 +345,39 @@ decl_attributes (decl, attributes)
continue
;
}
/* Verify that the format_num argument is actually a string, in case
the format attribute is in error. */
/* If a parameter list is specified, verify that the format_num
argument is actually a string, in case the format attribute
is in error. */
argument
=
TYPE_ARG_TYPES
(
TREE_TYPE
(
decl
));
for
(
arg_num
=
1
;
;
++
arg_num
)
if
(
argument
)
{
if
(
argument
==
0
||
arg_num
==
format_num
)
break
;
argument
=
TREE_CHAIN
(
argument
);
}
if
(
!
argument
||
TREE_CODE
(
TREE_VALUE
(
argument
))
!=
POINTER_TYPE
||
(
TYPE_MAIN_VARIANT
(
TREE_TYPE
(
TREE_VALUE
(
argument
)))
!=
char_type_node
))
{
error_with_decl
(
decl
,
"format string arg not a string type, for `%s'"
);
continue
;
}
if
(
first_arg_num
!=
0
)
{
/* Verify that first_arg_num points to the last arg, the ... */
while
(
argument
)
arg_num
++
,
argument
=
TREE_CHAIN
(
argument
);
if
(
arg_num
!=
first_arg_num
)
for
(
arg_num
=
1
;
;
++
arg_num
)
{
if
(
argument
==
0
||
arg_num
==
format_num
)
break
;
argument
=
TREE_CHAIN
(
argument
);
}
if
(
!
argument
||
TREE_CODE
(
TREE_VALUE
(
argument
))
!=
POINTER_TYPE
||
(
TYPE_MAIN_VARIANT
(
TREE_TYPE
(
TREE_VALUE
(
argument
)))
!=
char_type_node
))
{
error_with_decl
(
decl
,
"args to be formatted is not ...
, for `%s'"
);
"format string arg not a string type
, for `%s'"
);
continue
;
}
if
(
first_arg_num
!=
0
)
{
/* Verify that first_arg_num points to the last arg, the ... */
while
(
argument
)
arg_num
++
,
argument
=
TREE_CHAIN
(
argument
);
if
(
arg_num
!=
first_arg_num
)
{
error_with_decl
(
decl
,
"args to be formatted is not ..., for `%s'"
);
continue
;
}
}
}
record_function_format
(
DECL_NAME
(
decl
),
DECL_ASSEMBLER_NAME
(
decl
),
...
...
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