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
998d20d2
Commit
998d20d2
authored
Jul 13, 2001
by
Geoffrey Keating
Committed by
Geoffrey Keating
Jul 13, 2001
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert Jan Hubicka's patch of Fri Jul 13 14:46:21 CEST 2001.
From-SVN: r43986
parent
4a9d5109
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
69 additions
and
38 deletions
+69
-38
gcc/ChangeLog
+4
-0
gcc/doc/invoke.texi
+3
-0
gcc/emit-rtl.c
+1
-1
gcc/flow.c
+1
-1
gcc/jump.c
+0
-0
gcc/reg-stack.c
+1
-5
gcc/rtl.h
+4
-2
gcc/toplev.c
+55
-29
No files found.
gcc/ChangeLog
View file @
998d20d2
2001-07-13 Geoffrey Keating <geoffk@redhat.com>
Revert Jan Hubicka's patch of Fri Jul 13 14:46:21 CEST 2001.
2001-07-13 David Edelsohn <edelsohn@gnu.org>
* combine.c (try_combine): Ensure const_int pow2 is positive.
...
...
gcc/doc/invoke.texi
View file @
998d20d2
...
...
@@ -2908,6 +2908,9 @@ Dump after sibling call optimizations, to @file{@var{file}.01.sibling}.
@
item
j
@
opindex
dj
Dump
after
the
first
jump
optimization
,
to
@
file
{@
var
{
file
}
.03
.
jump
}.
@
item
J
@
opindex
dJ
Dump
after
the
last
jump
optimization
,
to
@
file
{@
var
{
file
}
.29
.
jump2
}.
@
item
k
@
opindex
dk
Dump
after
conversion
from
registers
to
stack
,
to
@
file
{@
var
{
file
}
.32
.
stack
}.
...
...
gcc/emit-rtl.c
View file @
998d20d2
...
...
@@ -2518,7 +2518,7 @@ try_split (pat, trial, last)
for
(
i
=
XVECLEN
(
seq
,
0
)
-
1
;
i
>=
0
;
i
--
)
if
(
GET_CODE
(
XVECEXP
(
seq
,
0
,
i
))
==
JUMP_INSN
)
mark_jump_label
(
PATTERN
(
XVECEXP
(
seq
,
0
,
i
)),
XVECEXP
(
seq
,
0
,
i
),
0
);
XVECEXP
(
seq
,
0
,
i
),
0
,
0
);
/* If we are splitting a CALL_INSN, look for the CALL_INSN
in SEQ and copy our CALL_INSN_FUNCTION_USAGE to it. */
...
...
gcc/flow.c
View file @
998d20d2
...
...
@@ -798,7 +798,7 @@ find_sub_basic_blocks (bb)
bb
=
BASIC_BLOCK
(
i
);
if
(
GET_CODE
(
bb
->
end
)
==
JUMP_INSN
)
{
mark_jump_label
(
PATTERN
(
bb
->
end
),
bb
->
end
,
0
);
mark_jump_label
(
PATTERN
(
bb
->
end
),
bb
->
end
,
0
,
0
);
make_label_edge
(
NULL
,
bb
,
JUMP_LABEL
(
bb
->
end
),
0
);
}
insn
=
NEXT_INSN
(
insn
);
...
...
gcc/jump.c
View file @
998d20d2
This diff is collapsed.
Click to expand it.
gcc/reg-stack.c
View file @
998d20d2
...
...
@@ -419,9 +419,6 @@ reg_to_stack (first, file)
int
max_uid
;
block_info
bi
;
if
(
!
optimize
)
split_all_insns
(
0
);
/* See if there is something to do. Flow analysis is quite
expensive so we might save some compilation time. */
for
(
i
=
FIRST_STACK_REG
;
i
<=
LAST_STACK_REG
;
i
++
)
...
...
@@ -432,8 +429,7 @@ reg_to_stack (first, file)
/* Ok, floating point instructions exist. If not optimizing,
build the CFG and run life analysis. */
if
(
!
optimize
)
find_basic_blocks
(
first
,
max_reg_num
(),
file
);
find_basic_blocks
(
first
,
max_reg_num
(),
file
);
count_or_remove_death_notes
(
NULL
,
1
);
life_analysis
(
first
,
file
,
PROP_DEATH_NOTES
);
...
...
gcc/rtl.h
View file @
998d20d2
...
...
@@ -1285,7 +1285,7 @@ extern enum rtx_code reverse_condition_maybe_unordered PARAMS ((enum rtx_code));
extern
enum
rtx_code
swap_condition
PARAMS
((
enum
rtx_code
));
extern
enum
rtx_code
unsigned_condition
PARAMS
((
enum
rtx_code
));
extern
enum
rtx_code
signed_condition
PARAMS
((
enum
rtx_code
));
extern
void
mark_jump_label
PARAMS
((
rtx
,
rtx
,
int
));
extern
void
mark_jump_label
PARAMS
((
rtx
,
rtx
,
int
,
int
));
/* In jump.c */
extern
rtx
squeeze_notes
PARAMS
((
rtx
,
rtx
));
...
...
@@ -1715,7 +1715,7 @@ extern int rtx_renumbered_equal_p PARAMS ((rtx, rtx));
extern
int
true_regnum
PARAMS
((
rtx
));
extern
int
redirect_jump_1
PARAMS
((
rtx
,
rtx
));
extern
int
redirect_jump
PARAMS
((
rtx
,
rtx
,
int
));
extern
void
jump_optimize
PARAMS
((
rtx
,
int
,
int
));
extern
void
jump_optimize
PARAMS
((
rtx
,
int
,
int
,
int
));
extern
void
jump_optimize_minimal
PARAMS
((
rtx
));
extern
void
rebuild_jump_labels
PARAMS
((
rtx
));
extern
void
thread_jumps
PARAMS
((
rtx
,
int
,
int
));
...
...
@@ -1729,6 +1729,8 @@ extern int condjump_in_parallel_p PARAMS ((rtx));
extern
void
never_reached_warning
PARAMS
((
rtx
));
/* Flags for jump_optimize() */
#define JUMP_CROSS_JUMP 1
#define JUMP_CROSS_JUMP_DEATH_MATTERS 2
#define JUMP_NOOP_MOVES 1
#define JUMP_AFTER_REGSCAN 1
...
...
gcc/toplev.c
View file @
998d20d2
...
...
@@ -282,10 +282,11 @@ enum dump_file_index
DFI_rnreg
,
DFI_ce2
,
DFI_sched2
,
DFI_stack
,
DFI_bbro
,
DFI_jump2
,
DFI_mach
,
DFI_dbr
,
DFI_stack
,
DFI_MAX
};
...
...
@@ -295,7 +296,7 @@ enum dump_file_index
Remaining -d letters:
" o q u "
" H
J
K OPQ TUV YZ"
" H
K OPQ TUV YZ"
*/
struct
dump_file_info
dump_file
[
DFI_MAX
]
=
...
...
@@ -329,6 +330,7 @@ struct dump_file_info dump_file[DFI_MAX] =
{
"ce2"
,
'E'
,
1
,
0
,
0
},
{
"sched2"
,
'R'
,
1
,
0
,
0
},
{
"bbro"
,
'B'
,
1
,
0
,
0
},
{
"jump2"
,
'J'
,
1
,
0
,
0
},
{
"mach"
,
'M'
,
1
,
0
,
0
},
{
"dbr"
,
'd'
,
0
,
0
,
0
},
{
"stack"
,
'k'
,
1
,
0
,
0
},
...
...
@@ -2837,7 +2839,8 @@ rest_of_compilation (decl)
optimize
=
0
;
find_exception_handler_labels
();
jump_optimize
(
insns
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
optimize
=
saved_optimize
;
}
...
...
@@ -2944,7 +2947,8 @@ rest_of_compilation (decl)
expected_value_to_br_prob
();
reg_scan
(
insns
,
max_reg_num
(),
0
);
jump_optimize
(
insns
,
!
JUMP_NOOP_MOVES
,
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
!
JUMP_NOOP_MOVES
,
JUMP_AFTER_REGSCAN
);
timevar_pop
(
TV_JUMP
);
...
...
@@ -3086,7 +3090,8 @@ rest_of_compilation (decl)
if
(
tem
||
optimize
>
1
)
{
timevar_push
(
TV_JUMP
);
jump_optimize
(
insns
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
timevar_pop
(
TV_JUMP
);
}
...
...
@@ -3158,7 +3163,8 @@ rest_of_compilation (decl)
{
tem
=
tem2
=
0
;
timevar_push
(
TV_JUMP
);
jump_optimize
(
insns
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
timevar_pop
(
TV_JUMP
);
if
(
flag_expensive_optimizations
)
...
...
@@ -3231,7 +3237,8 @@ rest_of_compilation (decl)
delete_trivially_dead_insns
(
insns
,
max_reg_num
());
reg_scan
(
insns
,
max_reg_num
(),
0
);
jump_optimize
(
insns
,
!
JUMP_NOOP_MOVES
,
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
!
JUMP_NOOP_MOVES
,
JUMP_AFTER_REGSCAN
);
timevar_push
(
TV_IFCVT
);
...
...
@@ -3249,7 +3256,8 @@ rest_of_compilation (decl)
if
(
tem
)
{
timevar_push
(
TV_JUMP
);
jump_optimize
(
insns
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
!
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
timevar_pop
(
TV_JUMP
);
}
}
...
...
@@ -3563,7 +3571,8 @@ rest_of_compilation (decl)
timevar_push
(
TV_FLOW2
);
open_dump_file
(
DFI_flow2
,
decl
);
jump_optimize
(
insns
,
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
jump_optimize
(
insns
,
!
JUMP_CROSS_JUMP
,
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
find_basic_blocks
(
insns
,
max_reg_num
(),
rtl_dump_file
);
/* On some machines, the prologue and epilogue code, or parts thereof,
...
...
@@ -3628,10 +3637,6 @@ rest_of_compilation (decl)
close_dump_file
(
DFI_ce2
,
print_rtl_with_bb
,
insns
);
timevar_pop
(
TV_IFCVT2
);
}
#ifdef STACK_REGS
if
(
optimize
)
split_all_insns
(
1
);
#endif
#ifdef INSN_SCHEDULING
if
(
optimize
>
0
&&
flag_schedule_insns_after_reload
)
...
...
@@ -3658,17 +3663,6 @@ rest_of_compilation (decl)
=
optimize
>
0
&&
only_leaf_regs_used
()
&&
leaf_function_p
();
#endif
#ifdef STACK_REGS
timevar_push
(
TV_REG_STACK
);
open_dump_file
(
DFI_stack
,
decl
);
reg_to_stack
(
insns
,
rtl_dump_file
);
close_dump_file
(
DFI_stack
,
print_rtl
,
insns
);
timevar_pop
(
TV_REG_STACK
);
ggc_collect
();
#endif
if
(
optimize
>
0
&&
flag_reorder_blocks
)
{
timevar_push
(
TV_REORDER_BLOCKS
);
...
...
@@ -3677,10 +3671,26 @@ rest_of_compilation (decl)
reorder_basic_blocks
();
close_dump_file
(
DFI_bbro
,
print_rtl_with_bb
,
insns
);
cleanup_cfg
(
CLEANUP_EXPENSIVE
|
CLEANUP_POST_REGSTACK
);
timevar_pop
(
TV_REORDER_BLOCKS
);
}
/* One more attempt to remove jumps to .+1 left by dead-store elimination.
Also do cross-jumping this time and delete no-op move insns. */
if
(
optimize
>
0
)
{
timevar_push
(
TV_JUMP
);
open_dump_file
(
DFI_jump2
,
decl
);
jump_optimize
(
insns
,
JUMP_CROSS_JUMP
,
JUMP_NOOP_MOVES
,
!
JUMP_AFTER_REGSCAN
);
/* CFG no longer kept up to date. */
close_dump_file
(
DFI_jump2
,
print_rtl
,
insns
);
timevar_pop
(
TV_JUMP
);
}
/* If a machine dependent reorganization is needed, call it. */
#ifdef MACHINE_DEPENDENT_REORG
open_dump_file
(
DFI_mach
,
decl
);
...
...
@@ -3692,8 +3702,6 @@ rest_of_compilation (decl)
ggc_collect
();
#endif
/* CFG no longer kept up to date. */
/* If a scheduling pass for delayed branches is to be done,
call the scheduling code. */
...
...
@@ -3712,10 +3720,28 @@ rest_of_compilation (decl)
}
#endif
#if defined (HAVE_ATTR_length) && !defined (STACK_REGS)
timevar_push
(
TV_SHORTEN_BRANCH
);
split_all_insns
(
0
);
if
(
0
#ifdef HAVE_ATTR_length
||
1
#endif
#ifdef STACK_REGS
||
1
#endif
)
split_all_insns
(
0
);
timevar_pop
(
TV_SHORTEN_BRANCH
);
#ifdef STACK_REGS
timevar_push
(
TV_REG_STACK
);
open_dump_file
(
DFI_stack
,
decl
);
reg_to_stack
(
insns
,
rtl_dump_file
);
close_dump_file
(
DFI_stack
,
print_rtl
,
insns
);
timevar_pop
(
TV_REG_STACK
);
ggc_collect
();
#endif
convert_to_eh_region_ranges
();
...
...
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