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
a3100298
Commit
a3100298
authored
Jul 01, 1992
by
Tom Wood
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Undo rcs botch
From-SVN: r1370
parent
207f8358
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
50 additions
and
44 deletions
+50
-44
gcc/c-lex.c
+27
-28
gcc/c-pragma.c
+23
-16
No files found.
gcc/c-lex.c
View file @
a3100298
...
...
@@ -482,13 +482,7 @@ check_newline ()
&&
((
c
=
getc
(
finput
))
==
' '
||
c
==
'\t'
||
c
==
'\n'
))
{
#ifdef HANDLE_SYSV_PRAGMA
c
=
handle_sysv_pragma
(
finput
,
c
);
if
(
c
>=
0
)
;
else
if
(
nextchar
>=
0
)
c
=
nextchar
,
nextchar
=
-
1
;
else
c
=
getc
(
finput
);
return
handle_sysv_pragma
(
finput
,
c
);
#endif
/* HANDLE_SYSV_PRAGMA */
#ifdef HANDLE_PRAGMA
HANDLE_PRAGMA
(
finput
);
...
...
@@ -741,9 +735,8 @@ linenum:
#ifdef HANDLE_SYSV_PRAGMA
/* Handle a #pragma directive. INPUT is the current input stream,
and C is a character to reread.
Returns a character for the caller to reread,
or -1 meaning there isn't one. */
and C is a character to reread. Processes the entire input line
and returns a character for the caller to reread: either \n or EOF. */
/* This function has to be in this file, in order to get at
the token types. */
...
...
@@ -753,26 +746,32 @@ handle_sysv_pragma (input, c)
FILE
*
input
;
int
c
;
{
while
(
c
==
' '
||
c
==
'\t'
)
c
=
getc
(
input
);
if
(
c
==
'\n'
||
c
==
EOF
)
{
handle_pragma_token
(
0
,
0
);
return
c
;
}
ungetc
(
c
,
input
);
switch
(
yylex
())
for
(;;)
{
case
IDENTIFIER
:
case
TYPENAME
:
case
STRING
:
case
CONSTANT
:
handle_pragma_token
(
token_buffer
,
yylval
.
ttype
);
break
;
default
:
handle_pragma_token
(
token_buffer
,
0
);
while
(
c
==
' '
||
c
==
'\t'
)
c
=
getc
(
input
);
if
(
c
==
'\n'
||
c
==
EOF
)
{
handle_pragma_token
(
0
,
0
);
return
c
;
}
ungetc
(
c
,
input
);
switch
(
yylex
())
{
case
IDENTIFIER
:
case
TYPENAME
:
case
STRING
:
case
CONSTANT
:
handle_pragma_token
(
token_buffer
,
yylval
.
ttype
);
break
;
default
:
handle_pragma_token
(
token_buffer
,
0
);
}
if
(
nextchar
>=
0
)
c
=
nextchar
,
nextchar
=
-
1
;
else
c
=
getc
(
input
);
}
return
-
1
;
}
#endif
/* HANDLE_SYSV_PRAGMA */
...
...
gcc/c-pragma.c
View file @
a3100298
...
...
@@ -23,12 +23,20 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#ifdef HANDLE_SYSV_PRAGMA
/* Support #pragma weak by default if WEAK_ASM_OP is defined. */
#if !defined (HANDLE_PRAGMA_WEAK) && defined (WEAK_ASM_OP)
#define HANDLE_PRAGMA_WEAK 1
#endif
/* When structure field packing is in effect, this variable is the
number of bits to use as the maximum alignment. When packing is not
in effect, this is zero. */
extern
int
maximum_field_alignment
;
/* File used for outputting assembler code. */
extern
FILE
*
asm_out_file
;
/* Handle one token of a pragma directive. TOKEN is the
current token, and STRING is its printable form. */
...
...
@@ -64,27 +72,30 @@ handle_pragma_token (string, token)
else
warning
(
"malformed `#pragma pack'"
);
}
#ifdef WEAK_ASM_OP
else
if
(
type
==
ps_weak
)
{
if
(
state
==
ps_name
||
state
==
ps_value
)
#ifdef HANDLE_PRAGMA_WEAK
if
(
HANDLE_PRAGMA_WEAK
)
{
fprintf
(
asm_out_file
,
"
\t
%s
\t
"
,
WEAK_ASM_OP
);
ASM_OUTPUT_LABELREF
(
asm_out_file
,
name
);
fputc
(
'\n'
,
asm_out_file
);
if
(
state
==
ps_value
)
if
(
state
==
ps_name
||
state
==
ps_value
)
{
fprintf
(
asm_out_file
,
"
\t
%s
\t
"
,
SET
_ASM_OP
);
fprintf
(
asm_out_file
,
"
\t
%s
\t
"
,
WEAK
_ASM_OP
);
ASM_OUTPUT_LABELREF
(
asm_out_file
,
name
);
fputc
(
','
,
asm_out_file
);
ASM_OUTPUT_LABELREF
(
asm_out_file
,
value
);
fputc
(
'\n'
,
asm_out_file
);
if
(
state
==
ps_value
)
{
fprintf
(
asm_out_file
,
"
\t
%s
\t
"
,
SET_ASM_OP
);
ASM_OUTPUT_LABELREF
(
asm_out_file
,
name
);
fputc
(
','
,
asm_out_file
);
ASM_OUTPUT_LABELREF
(
asm_out_file
,
value
);
fputc
(
'\n'
,
asm_out_file
);
}
}
else
if
(
!
(
state
==
ps_done
||
state
==
ps_start
))
warning
(
"malformed `#pragma weak'"
);
}
else
if
(
!
(
state
==
ps_done
||
state
==
ps_start
))
warning
(
"malformed `#pragma weak'"
);
#endif
/* HANDLE_PRAMA_WEAK */
}
#endif
/* WEAK_ASM_OP */
type
=
state
=
ps_start
;
return
;
...
...
@@ -97,10 +108,8 @@ handle_pragma_token (string, token)
{
if
(
strcmp
(
IDENTIFIER_POINTER
(
token
),
"pack"
)
==
0
)
type
=
state
=
ps_pack
;
#ifdef WEAK_ASM_OP
else
if
(
strcmp
(
IDENTIFIER_POINTER
(
token
),
"weak"
)
==
0
)
type
=
state
=
ps_weak
;
#endif
else
type
=
state
=
ps_done
;
}
...
...
@@ -108,7 +117,6 @@ handle_pragma_token (string, token)
type
=
state
=
ps_done
;
break
;
#ifdef WEAK_ASM_OP
case
ps_weak
:
if
(
token
&&
TREE_CODE
(
token
)
==
IDENTIFIER_NODE
)
{
...
...
@@ -136,7 +144,6 @@ handle_pragma_token (string, token)
case
ps_value
:
state
=
ps_bad
;
break
;
#endif
/* WEAK_ASM_OP */
case
ps_pack
:
if
(
strcmp
(
string
,
"("
)
==
0
)
...
...
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