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
fc3ffe83
Commit
fc3ffe83
authored
Apr 16, 1992
by
Richard Kenner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r754
parent
ee243aa8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
114 additions
and
59 deletions
+114
-59
gcc/c-decl.c
+22
-5
gcc/config/a29k/a29k.c
+9
-5
gcc/config/m68k/3b1.h
+14
-4
gcc/config/m68k/amix.h
+5
-2
gcc/config/m68k/m68k.md
+3
-3
gcc/config/rs6000/rs6000.h
+5
-18
gcc/cse.c
+45
-11
gcc/objc/objc-act.c
+11
-11
No files found.
gcc/c-decl.c
View file @
fc3ffe83
...
@@ -399,10 +399,15 @@ int flag_short_double;
...
@@ -399,10 +399,15 @@ int flag_short_double;
int
flag_no_asm
;
int
flag_no_asm
;
/* Nonzero means don't recognize
the non-ANSI
builtin functions. */
/* Nonzero means don't recognize
any
builtin functions. */
int
flag_no_builtin
;
int
flag_no_builtin
;
/* Nonzero means don't recognize the non-ANSI builtin functions.
-ansi sets this. */
int
flag_no_nonansi_builtin
;
/* Nonzero means do some things the same way PCC does. */
/* Nonzero means do some things the same way PCC does. */
int
flag_traditional
;
int
flag_traditional
;
...
@@ -547,7 +552,7 @@ c_decode_option (p)
...
@@ -547,7 +552,7 @@ c_decode_option (p)
else
if
(
!
strcmp
(
p
,
"-fident"
))
else
if
(
!
strcmp
(
p
,
"-fident"
))
flag_no_ident
=
0
;
flag_no_ident
=
0
;
else
if
(
!
strcmp
(
p
,
"-ansi"
))
else
if
(
!
strcmp
(
p
,
"-ansi"
))
flag_no_asm
=
1
,
flag_no_builtin
=
1
,
dollars_in_ident
=
0
;
flag_no_asm
=
1
,
flag_no_
nonansi_
builtin
=
1
,
dollars_in_ident
=
0
;
else
if
(
!
strcmp
(
p
,
"-Wimplicit"
))
else
if
(
!
strcmp
(
p
,
"-Wimplicit"
))
warn_implicit
=
1
;
warn_implicit
=
1
;
else
if
(
!
strcmp
(
p
,
"-Wno-implicit"
))
else
if
(
!
strcmp
(
p
,
"-Wno-implicit"
))
...
@@ -612,6 +617,10 @@ c_decode_option (p)
...
@@ -612,6 +617,10 @@ c_decode_option (p)
;
/* cpp handles this one. */
;
/* cpp handles this one. */
else
if
(
!
strcmp
(
p
,
"-Wno-trigraphs"
))
else
if
(
!
strcmp
(
p
,
"-Wno-trigraphs"
))
;
/* cpp handles this one. */
;
/* cpp handles this one. */
else
if
(
!
strcmp
(
p
,
"-Wimport"
))
;
/* cpp handles this one. */
else
if
(
!
strcmp
(
p
,
"-Wno-import"
))
;
/* cpp handles this one. */
else
if
(
!
strcmp
(
p
,
"-Wall"
))
else
if
(
!
strcmp
(
p
,
"-Wall"
))
{
{
extra_warnings
=
1
;
extra_warnings
=
1
;
...
@@ -1325,7 +1334,8 @@ duplicate_decls (newdecl, olddecl)
...
@@ -1325,7 +1334,8 @@ duplicate_decls (newdecl, olddecl)
warning_with_decl
(
newdecl
,
warning_with_decl
(
newdecl
,
"`%s' declared inline after being called"
);
"`%s' declared inline after being called"
);
if
(
TREE_CODE
(
olddecl
)
==
FUNCTION_DECL
if
(
TREE_CODE
(
olddecl
)
==
FUNCTION_DECL
&&
TREE_INLINE
(
olddecl
)
!=
TREE_INLINE
(
newdecl
))
&&
TREE_INLINE
(
olddecl
)
!=
TREE_INLINE
(
newdecl
)
&&
!
(
TREE_EXTERNAL
(
olddecl
)
&&
TREE_EXTERNAL
(
newdecl
)))
warning_with_decl
(
newdecl
,
warning_with_decl
(
newdecl
,
"`%s' declarations disagree about `inline'"
);
"`%s' declarations disagree about `inline'"
);
/* It is nice to warn when a function is declared
/* It is nice to warn when a function is declared
...
@@ -2474,7 +2484,7 @@ init_decl_processing ()
...
@@ -2474,7 +2484,7 @@ init_decl_processing ()
sizetype
,
sizetype
,
endlink
)),
endlink
)),
BUILT_IN_ALLOCA
,
"alloca"
);
BUILT_IN_ALLOCA
,
"alloca"
);
if
(
!
flag_no_builtin
)
if
(
!
flag_no_builtin
&&
!
flag_no_nonansi_builtin
)
{
{
tree
exit_type
;
tree
exit_type
;
temp
=
builtin_function
(
"alloca"
,
temp
=
builtin_function
(
"alloca"
,
...
@@ -4177,11 +4187,18 @@ get_parm_info (void_at_end)
...
@@ -4177,11 +4187,18 @@ get_parm_info (void_at_end)
saveable_tree_cons
(
NULL_TREE
,
void_type_node
,
NULL_TREE
));
saveable_tree_cons
(
NULL_TREE
,
void_type_node
,
NULL_TREE
));
}
}
/* Extract enumerator values and other non-parms declared with the parms. */
/* Extract enumerator values and other non-parms declared with the parms.
Likewise any forward parm decls that didn't have real parm decls. */
for
(
decl
=
parms
;
decl
;
)
for
(
decl
=
parms
;
decl
;
)
{
{
tree
next
=
TREE_CHAIN
(
decl
);
tree
next
=
TREE_CHAIN
(
decl
);
if
(
TREE_ASM_WRITTEN
(
decl
))
{
error_with_decl
(
decl
,
"no real declaration for parameter `%s'"
);
TREE_CHAIN
(
decl
)
=
new_parms
;
new_parms
=
decl
;
}
if
(
TREE_CODE
(
decl
)
!=
PARM_DECL
)
if
(
TREE_CODE
(
decl
)
!=
PARM_DECL
)
{
{
TREE_CHAIN
(
decl
)
=
new_parms
;
TREE_CHAIN
(
decl
)
=
new_parms
;
...
...
gcc/config/a29k/a29k.c
View file @
fc3ffe83
...
@@ -876,11 +876,15 @@ print_operand (file, x, code)
...
@@ -876,11 +876,15 @@ print_operand (file, x, code)
case
'F'
:
case
'F'
:
output_addr_const
(
file
,
x
);
output_addr_const
(
file
,
x
);
if
(
!
strcmp
(
XSTR
(
x
,
0
),
current_function_name
)
if
(
dbr_sequence_length
()
==
0
)
&&
dbr_sequence_length
()
==
0
)
{
fprintf
(
file
,
"+4
\n\t
%s,%d"
,
if
(
!
strcmp
(
XSTR
(
x
,
0
),
current_function_name
))
a29k_regstack_size
>=
64
?
"const gr121"
:
"sub gr1,gr1"
,
fprintf
(
file
,
"+4
\n\t
%s,%d"
,
a29k_regstack_size
*
4
);
a29k_regstack_size
>=
64
?
"const gr121"
:
"sub gr1,gr1"
,
a29k_regstack_size
*
4
);
else
fprintf
(
file
,
"
\n\t
nop"
);
}
return
;
return
;
case
'L'
:
case
'L'
:
...
...
gcc/config/m68k/3b1.h
View file @
fc3ffe83
...
@@ -369,10 +369,20 @@ do { union { float f; long l;} tem; \
...
@@ -369,10 +369,20 @@ do { union { float f; long l;} tem; \
XVECLEN (PATTERN (TABLE), 1) + 1, (PREFIX), (NUM), \
XVECLEN (PATTERN (TABLE), 1) + 1, (PREFIX), (NUM), \
(PREFIX), (NUM), (PREFIX), (NUM))
(PREFIX), (NUM), (PREFIX), (NUM))
/* At end of a switch table, define LD%n iff the symbol LI%n was defined. */
/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
if (RTX_INTEGRATED_P (TABLE)) \
fails to assemble. Luckily "LDnnn(pc,d0.l*2)" produces the results
fprintf (FILE, "\tset LD%%%d,L%%%d-LI%%%d\n", (NUM), (NUM), (NUM))
we want. This difference can be accommodated by making the assembler
define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
macro. */
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
{ if (switch_table_difference_label_flag) \
fprintf (FILE, "\tset LD%%%d,L%%%d-LI%%%d\n", (NUM), (NUM), (NUM)) \
switch_table_difference_label_flag = 0; }
int
switch_table_difference_label_flag
;
#define ASM_OUTPUT_OPCODE(FILE, PTR) \
#define ASM_OUTPUT_OPCODE(FILE, PTR) \
{ if ((PTR)[0] == 'j' && (PTR)[1] == 'b') \
{ if ((PTR)[0] == 'j' && (PTR)[1] == 'b') \
...
...
gcc/config/m68k/amix.h
View file @
fc3ffe83
...
@@ -43,7 +43,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
...
@@ -43,7 +43,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
/* At end of a switch table, define LDnnn iff the symbol LInnn was defined.
Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
Some SGS assemblers have a bug such that "Lnnn-LInnn-2.b(pc,d0.l*2)"
fails to assemble. Luckily "Lnnn(pc,d0.l*2)" produces the results
fails to assemble. Luckily "Lnnn(pc,d0.l*2)" produces the results
we want. This difference can be accommodated by
using an
assembler
we want. This difference can be accommodated by
making the
assembler
define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
define such "LDnnn" to be either "Lnnn-LInnn-2.b", "Lnnn", or any other
string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
string, as necessary. This is accomplished via the ASM_OUTPUT_CASE_END
macro. (the Amiga assembler has this bug) */
macro. (the Amiga assembler has this bug) */
...
@@ -51,10 +51,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
...
@@ -51,10 +51,13 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
#undef ASM_OUTPUT_CASE_END
#undef ASM_OUTPUT_CASE_END
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
#define ASM_OUTPUT_CASE_END(FILE,NUM,TABLE) \
do { \
do { \
if (
RTX_INTEGRATED_P (TABLE))
\
if (
switch_table_difference_label_flag)
\
asm_fprintf ((FILE), "%s %LLD%d,%LL%d\n", SET_ASM_OP, (NUM), (NUM));\
asm_fprintf ((FILE), "%s %LLD%d,%LL%d\n", SET_ASM_OP, (NUM), (NUM));\
switch_table_difference_label_flag = 0;
}
while
(
0
)
}
while
(
0
)
int
switch_table_difference_label_flag
;
/* This says how to output assembler code to declare an
/* This says how to output assembler code to declare an
uninitialized external linkage data object. Under SVR4,
uninitialized external linkage data object. Under SVR4,
the linker seems to want the alignment of data objects
the linker seems to want the alignment of data objects
...
...
gcc/config/m68k/m68k.md
View file @
fc3ffe83
...
@@ -872,9 +872,9 @@
...
@@ -872,9 +872,9 @@
#else /* SGS_SWITCH_TABLES or not MOTOROLA */
#else /* SGS_SWITCH_TABLES or not MOTOROLA */
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file,
\"
LI
\"
,
ASM_OUTPUT_INTERNAL_LABEL (asm_out_file,
\"
LI
\"
,
CODE_LABEL_NUMBER (XEXP (labelref, 0)));
CODE_LABEL_NUMBER (XEXP (labelref, 0)));
/
*
For sake of 3b1, s
et flag saying we need to define the symbol
/
*
S
et flag saying we need to define the symbol
LD%n (with value L%n-LI%n) at the end of the switch table.
*
/
LD%n (with value L%n-LI%n) at the end of the switch table.
*
/
RTX_INTEGRATED_P (next_real_insn (XEXP (labelref, 0)))
= 1;
switch_table_difference_label_flag
= 1;
#endif /* SGS_SWITCH_TABLES or not MOTOROLA */
#endif /* SGS_SWITCH_TABLES or not MOTOROLA */
}
}
#endif /* SGS_NO_LI */
#endif /* SGS_NO_LI */
...
...
gcc/config/rs6000/rs6000.h
View file @
fc3ffe83
...
@@ -1307,7 +1307,6 @@ extern int rs6000_trunc_used;
...
@@ -1307,7 +1307,6 @@ extern int rs6000_trunc_used;
main_input_filename, ".ro_"); \
main_input_filename, ".ro_"); \
\
\
toc_section (); \
toc_section (); \
bss_section (); \
if (write_symbols != NO_DEBUG) \
if (write_symbols != NO_DEBUG) \
private_data_section (); \
private_data_section (); \
}
}
...
@@ -1401,18 +1400,7 @@ toc_section () \
...
@@ -1401,18 +1400,7 @@ toc_section () \
fprintf (asm_out_file, "\t.toc\n"); \
fprintf (asm_out_file, "\t.toc\n"); \
\
\
in_section = toc; \
in_section = toc; \
} \
}
\
void \
bss_section () \
{ \
if (in_section != bss) \
{ \
fprintf (asm_out_file, "\t.csect %s[BS]\n", \
xcoff_bss_section_name); \
in_section = bss; \
} \
} \
/* This macro produces the initial definition of a function name.
/* This macro produces the initial definition of a function name.
On the RS/6000, we need to place an extra '.' in the function name and
On the RS/6000, we need to place an extra '.' in the function name and
...
@@ -1637,7 +1625,8 @@ bss_section () \
...
@@ -1637,7 +1625,8 @@ bss_section () \
"fr28", 60, "fr29", 61, "fr30", 62, "fr31", 63, \
"fr28", 60, "fr29", 61, "fr30", 62, "fr31", 63, \
/* no additional names for: mq, lr, ctr, ap */
\
/* no additional names for: mq, lr, ctr, ap */
\
"cr0", 68, "cr1", 69, "cr2", 70, "cr3", 71, \
"cr0", 68, "cr1", 69, "cr2", 70, "cr3", 71, \
"cr4", 72, "cr5", 73, "cr6", 74, "cr7", 75 }
"cr4", 72, "cr5", 73, "cr6", 74, "cr7", 75, \
"cc", 68 }
/* How to renumber registers for dbx and gdb. */
/* How to renumber registers for dbx and gdb. */
...
@@ -1761,8 +1750,7 @@ bss_section () \
...
@@ -1761,8 +1750,7 @@ bss_section () \
to define a global common symbol. */
to define a global common symbol. */
#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
#define ASM_OUTPUT_COMMON(FILE, NAME, SIZE, ROUNDED) \
do { bss_section (); \
do { fputs (".comm ", (FILE)); \
fputs (".comm ", (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
fprintf ((FILE), ",%d\n", (SIZE)); } while (0)
fprintf ((FILE), ",%d\n", (SIZE)); } while (0)
...
@@ -1770,8 +1758,7 @@ bss_section () \
...
@@ -1770,8 +1758,7 @@ bss_section () \
to define a local common symbol. */
to define a local common symbol. */
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED) \
#define ASM_OUTPUT_LOCAL(FILE, NAME, SIZE,ROUNDED) \
do { bss_section (); \
do { fputs (".lcomm ", (FILE)); \
fputs (".lcomm ", (FILE)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
RS6000_OUTPUT_BASENAME ((FILE), (NAME)); \
fprintf ((FILE), ",%d,%s\n", (SIZE), xcoff_bss_section_name); \
fprintf ((FILE), ",%d,%s\n", (SIZE), xcoff_bss_section_name); \
} while (0)
} while (0)
...
...
gcc/cse.c
View file @
fc3ffe83
...
@@ -620,6 +620,11 @@ rtx_cost (x)
...
@@ -620,6 +620,11 @@ rtx_cost (x)
case
REG
:
case
REG
:
return
1
;
return
1
;
case
SUBREG
:
case
SUBREG
:
/* If we can't tie these modes, make this expensive. The larger
the mode, the more expensive it is. */
if
(
!
MODES_TIEABLE_P
(
GET_MODE
(
x
),
GET_MODE
(
SUBREG_REG
(
x
))))
return
COSTS_N_INSNS
(
2
+
GET_MODE_SIZE
(
GET_MODE
(
x
))
/
UNITS_PER_WORD
);
return
2
;
return
2
;
#ifdef RTX_COSTS
#ifdef RTX_COSTS
RTX_COSTS
(
x
,
code
);
RTX_COSTS
(
x
,
code
);
...
@@ -4036,7 +4041,7 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
...
@@ -4036,7 +4041,7 @@ simplify_ternary_operation (code, mode, op0_mode, op0, op1, op2)
val
&=
(
1
<<
INTVAL
(
op1
))
-
1
;
val
&=
(
1
<<
INTVAL
(
op1
))
-
1
;
/* If desired, propagate sign bit. */
/* If desired, propagate sign bit. */
if
(
code
==
SIGN_EXTRACT
&&
(
val
&
(
1
<<
(
INTVAL
(
op1
)
-
1
))))
if
(
code
==
SIGN_EXTRACT
&&
(
val
&
(
1
<<
(
INTVAL
(
op1
)
-
1
))))
val
|=
~
(
1
<<
INTVAL
(
op1
)
);
val
|=
~
(
(
1
<<
INTVAL
(
op1
))
-
1
);
}
}
/* Clear the bits that don't belong in our mode,
/* Clear the bits that don't belong in our mode,
...
@@ -4760,6 +4765,28 @@ equiv_constant (x)
...
@@ -4760,6 +4765,28 @@ equiv_constant (x)
if
(
x
!=
0
&&
CONSTANT_P
(
x
))
if
(
x
!=
0
&&
CONSTANT_P
(
x
))
return
x
;
return
x
;
/* If X is a MEM, try to fold it outside the context of any insn to see if
it might be equivalent to a constant. That handles the case where it
is a constant-pool reference. Then try to look it up in the hash table
in case it is something whose value we have seen before. */
if
(
GET_CODE
(
x
)
==
MEM
)
{
struct
table_elt
*
elt
;
x
=
fold_rtx
(
x
,
0
);
if
(
CONSTANT_P
(
x
))
return
x
;
elt
=
lookup
(
x
,
safe_hash
(
x
,
GET_MODE
(
x
))
%
NBUCKETS
,
GET_MODE
(
x
));
if
(
elt
==
0
)
return
0
;
for
(
elt
=
elt
->
first_same_value
;
elt
;
elt
=
elt
->
next_same_value
)
if
(
elt
->
is_const
&&
CONSTANT_P
(
elt
->
exp
))
return
elt
->
exp
;
}
return
0
;
return
0
;
}
}
...
@@ -6191,10 +6218,10 @@ cse_insn (insn, in_libcall_block)
...
@@ -6191,10 +6218,10 @@ cse_insn (insn, in_libcall_block)
||
sets
[
i
].
inner_dest
!=
SET_DEST
(
sets
[
i
].
rtl
));
||
sets
[
i
].
inner_dest
!=
SET_DEST
(
sets
[
i
].
rtl
));
}
}
/* If we have (set (subreg:m1 (reg:m2 foo) 0) (bar:m1)), M1 is
wider
/* If we have (set (subreg:m1 (reg:m2 foo) 0) (bar:m1)), M1 is
no
than M2, and both M1 and M2 are a single word, we are also doing
narrower than M2, and both M1 and M2 are the same number of words,
(set (reg:m2 foo) (subreg:m2 (bar:m1 0))) so make that equivalence
we are also doing (set (reg:m2 foo) (subreg:m2 (bar:m1) 0)) so
as well.
make that equivalence
as well.
However, BAR may have equivalences for which gen_lowpart_if_possible
However, BAR may have equivalences for which gen_lowpart_if_possible
will produce a simpler value than gen_lowpart_if_possible applied to
will produce a simpler value than gen_lowpart_if_possible applied to
...
@@ -6207,8 +6234,8 @@ cse_insn (insn, in_libcall_block)
...
@@ -6207,8 +6234,8 @@ cse_insn (insn, in_libcall_block)
already entered SRC and DEST of the SET in the table. */
already entered SRC and DEST of the SET in the table. */
if
(
GET_CODE
(
dest
)
==
SUBREG
if
(
GET_CODE
(
dest
)
==
SUBREG
&&
GET_MODE_SIZE
(
GET_MODE
(
dest
))
<=
UNITS_PER_WORD
&&
(
GET_MODE_SIZE
(
GET_MODE
(
SUBREG_REG
(
dest
)))
/
UNITS_PER_WORD
&&
GET_MODE_SIZE
(
GET_MODE
(
SUBREG_REG
(
dest
)))
<=
UNITS_PER_WORD
==
GET_MODE_SIZE
(
GET_MODE
(
dest
))
/
UNITS_PER_WORD
)
&&
(
GET_MODE_SIZE
(
GET_MODE
(
dest
))
&&
(
GET_MODE_SIZE
(
GET_MODE
(
dest
))
>=
GET_MODE_SIZE
(
GET_MODE
(
SUBREG_REG
(
dest
))))
>=
GET_MODE_SIZE
(
GET_MODE
(
SUBREG_REG
(
dest
))))
&&
sets
[
i
].
src_elt
!=
0
)
&&
sets
[
i
].
src_elt
!=
0
)
...
@@ -6813,6 +6840,7 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
...
@@ -6813,6 +6840,7 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
rtx
p
=
insn
,
q
;
rtx
p
=
insn
,
q
;
int
nsets
=
0
;
int
nsets
=
0
;
int
low_cuid
=
INSN_CUID
(
insn
),
high_cuid
=
INSN_CUID
(
insn
);
int
low_cuid
=
INSN_CUID
(
insn
),
high_cuid
=
INSN_CUID
(
insn
);
rtx
next
=
GET_RTX_CLASS
(
GET_CODE
(
insn
))
==
'i'
?
insn
:
next_real_insn
(
insn
);
int
path_size
=
data
->
path_size
;
int
path_size
=
data
->
path_size
;
int
path_entry
=
0
;
int
path_entry
=
0
;
int
i
;
int
i
;
...
@@ -6913,8 +6941,11 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
...
@@ -6913,8 +6941,11 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
{
{
/* Don't allow ourself to keep walking around an
/* Don't allow ourself to keep walking around an
always-executed loop. */
always-executed loop. */
if
(
next_real_insn
(
q
)
==
next_real_insn
(
insn
))
if
(
next_real_insn
(
q
)
==
next
)
break
;
{
p
=
NEXT_INSN
(
p
);
continue
;
}
/* Similarly, don't put a branch in our path more than once. */
/* Similarly, don't put a branch in our path more than once. */
for
(
i
=
0
;
i
<
path_entry
;
i
++
)
for
(
i
=
0
;
i
<
path_entry
;
i
++
)
...
@@ -6942,8 +6973,11 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
...
@@ -6942,8 +6973,11 @@ cse_end_of_basic_block (insn, data, follow_jumps, after_loop, skip_blocks)
{
{
register
rtx
tmp
;
register
rtx
tmp
;
if
(
next_real_insn
(
q
)
==
next_real_insn
(
insn
))
if
(
next_real_insn
(
q
)
==
next
)
break
;
{
p
=
NEXT_INSN
(
p
);
continue
;
}
for
(
i
=
0
;
i
<
path_entry
;
i
++
)
for
(
i
=
0
;
i
<
path_entry
;
i
++
)
if
(
data
->
path
[
i
].
branch
==
p
)
if
(
data
->
path
[
i
].
branch
==
p
)
...
...
gcc/objc/objc-act.c
View file @
fc3ffe83
...
@@ -36,7 +36,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
...
@@ -36,7 +36,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
*
*
* code generation `options':
* code generation `options':
*
*
* - OBJC_INT_SELECTORS, OBJC_
NONUNIQUE_SELECTOR
S, NEXT_OBJC_RUNTIME
* - OBJC_INT_SELECTORS, OBJC_
SELECTORS_WITHOUT_LABEL
S, NEXT_OBJC_RUNTIME
*/
*/
#include <stdio.h>
#include <stdio.h>
...
@@ -238,7 +238,7 @@ static tree _OBJC_SYMBOLS_decl;
...
@@ -238,7 +238,7 @@ static tree _OBJC_SYMBOLS_decl;
static
tree
_OBJC_INSTANCE_VARIABLES_decl
,
_OBJC_CLASS_VARIABLES_decl
;
static
tree
_OBJC_INSTANCE_VARIABLES_decl
,
_OBJC_CLASS_VARIABLES_decl
;
static
tree
_OBJC_INSTANCE_METHODS_decl
,
_OBJC_CLASS_METHODS_decl
;
static
tree
_OBJC_INSTANCE_METHODS_decl
,
_OBJC_CLASS_METHODS_decl
;
static
tree
_OBJC_CLASS_decl
,
_OBJC_METACLASS_decl
;
static
tree
_OBJC_CLASS_decl
,
_OBJC_METACLASS_decl
;
#ifdef OBJC_
NONUNIQUE_SELECTOR
S
#ifdef OBJC_
SELECTORS_WITHOUT_LABEL
S
static
tree
_OBJC_SELECTOR_REFERENCES_decl
;
static
tree
_OBJC_SELECTOR_REFERENCES_decl
;
#endif
#endif
static
tree
_OBJC_MODULES_decl
;
static
tree
_OBJC_MODULES_decl
;
...
@@ -565,7 +565,7 @@ synth_module_prologue ()
...
@@ -565,7 +565,7 @@ synth_module_prologue ()
/* extern SEL _OBJC_SELECTOR_REFERENCES[]; */
/* extern SEL _OBJC_SELECTOR_REFERENCES[]; */
#ifdef OBJC_
NONUNIQUE_SELECTOR
S
#ifdef OBJC_
SELECTORS_WITHOUT_LABEL
S
_OBJC_SELECTOR_REFERENCES_decl
_OBJC_SELECTOR_REFERENCES_decl
=
create_builtin_decl
(
VAR_DECL
,
build_array_type
(
selector_type
,
NULLT
),
=
create_builtin_decl
(
VAR_DECL
,
build_array_type
(
selector_type
,
NULLT
),
"_OBJC_SELECTOR_REFERENCES"
);
"_OBJC_SELECTOR_REFERENCES"
);
...
@@ -703,7 +703,7 @@ init_objc_symtab ()
...
@@ -703,7 +703,7 @@ init_objc_symtab ()
/* refs = { ..., _OBJC_SELECTOR_REFERENCES, ... } */
/* refs = { ..., _OBJC_SELECTOR_REFERENCES, ... } */
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
initlist
=
tree_cons
(
NULLT
,
build_int_2
(
0
,
0
),
initlist
);
initlist
=
tree_cons
(
NULLT
,
build_int_2
(
0
,
0
),
initlist
);
#else
#else
if
(
sel_ref_chain
)
if
(
sel_ref_chain
)
...
@@ -1050,7 +1050,7 @@ build_msg_pool_reference (offset)
...
@@ -1050,7 +1050,7 @@ build_msg_pool_reference (offset)
return
expr
;
return
expr
;
}
}
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
static
tree
static
tree
build_selector_reference
(
idx
)
build_selector_reference
(
idx
)
int
idx
;
int
idx
;
...
@@ -1100,7 +1100,7 @@ build_selector_translation_table ()
...
@@ -1100,7 +1100,7 @@ build_selector_translation_table ()
tree
sc_spec
,
decl_specs
,
expr_decl
;
tree
sc_spec
,
decl_specs
,
expr_decl
;
tree
chain
,
initlist
=
NULLT
;
tree
chain
,
initlist
=
NULLT
;
int
offset
=
0
;
int
offset
=
0
;
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
tree
decl
,
var_decl
;
tree
decl
,
var_decl
;
int
idx
=
0
;
int
idx
=
0
;
char
buf
[
256
];
char
buf
[
256
];
...
@@ -1114,7 +1114,7 @@ build_selector_translation_table ()
...
@@ -1114,7 +1114,7 @@ build_selector_translation_table ()
{
{
tree
expr
;
tree
expr
;
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
sprintf
(
buf
,
"_OBJC_SELECTOR_REFERENCES_%d"
,
idx
);
sprintf
(
buf
,
"_OBJC_SELECTOR_REFERENCES_%d"
,
idx
);
sc_spec
=
build_tree_list
(
NULLT
,
ridpointers
[(
int
)
RID_STATIC
]);
sc_spec
=
build_tree_list
(
NULLT
,
ridpointers
[(
int
)
RID_STATIC
]);
...
@@ -1133,7 +1133,7 @@ build_selector_translation_table ()
...
@@ -1133,7 +1133,7 @@ build_selector_translation_table ()
/* add one for the '\0' character */
/* add one for the '\0' character */
offset
+=
IDENTIFIER_LENGTH
(
TREE_VALUE
(
chain
))
+
1
;
offset
+=
IDENTIFIER_LENGTH
(
TREE_VALUE
(
chain
))
+
1
;
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
finish_decl
(
decl
,
expr
,
NULLT
);
finish_decl
(
decl
,
expr
,
NULLT
);
idx
++
;
idx
++
;
#else
#else
...
@@ -1141,7 +1141,7 @@ build_selector_translation_table ()
...
@@ -1141,7 +1141,7 @@ build_selector_translation_table ()
#endif
#endif
}
}
#ifdef OBJC_
NONUNIQUE_SELECTOR
S
#ifdef OBJC_
SELECTORS_WITHOUT_LABEL
S
DECL_INITIAL
(
_OBJC_SELECTOR_REFERENCES_decl
)
=
(
tree
)
1
;
DECL_INITIAL
(
_OBJC_SELECTOR_REFERENCES_decl
)
=
(
tree
)
1
;
initlist
=
build_nt
(
CONSTRUCTOR
,
NULLT
,
nreverse
(
initlist
));
initlist
=
build_nt
(
CONSTRUCTOR
,
NULLT
,
nreverse
(
initlist
));
finish_decl
(
_OBJC_SELECTOR_REFERENCES_decl
,
initlist
,
NULLT
);
finish_decl
(
_OBJC_SELECTOR_REFERENCES_decl
,
initlist
,
NULLT
);
...
@@ -2623,7 +2623,7 @@ build_message_expr (mess)
...
@@ -2623,7 +2623,7 @@ build_message_expr (mess)
/* Build the parameters list for looking up the method.
/* Build the parameters list for looking up the method.
These are the object itself and the selector. */
These are the object itself and the selector. */
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
selector
=
build_selector_reference
(
selTransTbl_index
);
selector
=
build_selector_reference
(
selTransTbl_index
);
#else
#else
selector
=
build_array_ref
(
_OBJC_SELECTOR_REFERENCES_decl
,
selector
=
build_array_ref
(
_OBJC_SELECTOR_REFERENCES_decl
,
...
@@ -2895,7 +2895,7 @@ build_selector_expr (selnamelist)
...
@@ -2895,7 +2895,7 @@ build_selector_expr (selnamelist)
selTransTbl_index
=
add_selector_reference
(
selname
);
selTransTbl_index
=
add_selector_reference
(
selname
);
#ifndef OBJC_
NONUNIQUE_SELECTOR
S
#ifndef OBJC_
SELECTORS_WITHOUT_LABEL
S
return
build_selector_reference
(
selTransTbl_index
);
return
build_selector_reference
(
selTransTbl_index
);
#else
#else
/* synthesize a reference into the selector translation table */
/* synthesize a reference into the selector translation table */
...
...
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