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
c4dfe0fc
Commit
c4dfe0fc
authored
Mar 23, 1994
by
Jim Wilson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(expand_builtin, BUILT_IN_NEXT_ARG case): Verify that
parameter is last named argument. From-SVN: r6854
parent
8d0aed47
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
18 additions
and
11 deletions
+18
-11
gcc/expr.c
+18
-11
No files found.
gcc/expr.c
View file @
c4dfe0fc
...
...
@@ -6956,24 +6956,31 @@ expand_builtin (exp, target, subtarget, mode, ignore)
#endif
}
/* Return the address of the first anonymous stack arg. */
/* Return the address of the first anonymous stack arg.
This should only be used for stdarg functions. */
case
BUILT_IN_NEXT_ARG
:
{
tree
parm
;
tree
fntype
=
TREE_TYPE
(
current_function_decl
);
tree
fnargs
=
DECL_ARGUMENTS
(
current_function_decl
);
if
(
!
(
TYPE_ARG_TYPES
(
fntype
)
!=
0
&&
(
TREE_VALUE
(
tree_last
(
TYPE_ARG_TYPES
(
fntype
)))
!=
void_type_node
))
&&
!
(
fnargs
&&
(
parm
=
tree_last
(
fnargs
))
!=
0
&&
DECL_NAME
(
parm
)
&&
(
!
strcmp
(
IDENTIFIER_POINTER
(
DECL_NAME
(
parm
)),
"__builtin_va_alist"
))))
tree
last_parm
=
tree_last
(
DECL_ARGUMENTS
(
current_function_decl
));
tree
arg
;
if
(
TYPE_ARG_TYPES
(
fntype
)
==
0
||
(
TREE_VALUE
(
tree_last
(
TYPE_ARG_TYPES
(
fntype
)))
==
void_type_node
))
{
error
(
"`va_start' used in function with fixed args"
);
return
const0_rtx
;
}
arg
=
TREE_VALUE
(
arglist
);
/* Strip off all nops for the sake of the comparison. This is not
quite the same as STRIP_NOPS. It does more. */
while
(
TREE_CODE
(
arg
)
==
NOP_EXPR
||
TREE_CODE
(
arg
)
==
CONVERT_EXPR
||
TREE_CODE
(
arg
)
==
NON_LVALUE_EXPR
)
arg
=
TREE_OPERAND
(
arg
,
0
);
if
(
arg
!=
last_parm
)
warning
(
"second parameter of `va_start' not last named argument"
);
}
return
expand_binop
(
Pmode
,
add_optab
,
...
...
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