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
412dc348
Commit
412dc348
authored
Mar 03, 1992
by
Richard Kenner
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
*** empty log message ***
From-SVN: r380
parent
983a9061
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
34 additions
and
51 deletions
+34
-51
gcc/config/vax/vax.md
+6
-4
gcc/config/vax/vms.h
+3
-4
gcc/genattrtab.c
+2
-3
gcc/unroll.c
+23
-40
No files found.
gcc/config/vax/vax.md
View file @
412dc348
...
...
@@ -1533,8 +1533,9 @@
(define_insn ""
[
(set (pc)
(if_then_else
(gt (match_operand:SI 0 "general_operand" "+g")
(const_int 1))
(gt (plus:SI (match_operand:SI 0 "general_operand" "+g")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))
(pc)))
(set (match_dup 0)
...
...
@@ -1546,8 +1547,9 @@
(define_insn ""
[
(set (pc)
(if_then_else
(ge (match_operand:SI 0 "general_operand" "+g")
(const_int 1))
(ge (plus:SI (match_operand:SI 0 "general_operand" "+g")
(const_int -1))
(const_int 0))
(label_ref (match_operand 1 "" ""))
(pc)))
(set (match_dup 0)
...
...
gcc/config/vax/vms.h
View file @
412dc348
...
...
@@ -35,7 +35,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Predefine this in CPP because VMS limits the size of command options
and GNU CPP is not used on VMS except with GNU C. */
#define CPP_PREDEFINES "-Dvax -Dvms -DVMS -D__GNU__ -D__GNUC__"
/* ??? __GNU__ is probably obsolete; delete it for 2.1. */
#define CPP_PREDEFINES "-Dvax -Dvms -DVMS -D__GNU__ -D__GNUC__=2"
/* Strictly speaking, VMS does not use DBX at all, but the interpreter built
into gas only speaks straight DBX. */
...
...
@@ -161,7 +162,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */
? (const_section (), 0) : (data_section (), 0)), \
fputs (".comm ", (FILE)), \
assemble_name ((FILE), (NAME)), \
fprintf ((FILE), ",%u\n", (
ROUNDED
)))
fprintf ((FILE), ",%u\n", (
SIZE
)))
/* We define this to prevent the name mangler from putting dollar signs into
function names. This isn't really needed, but it has been here for
...
...
@@ -254,7 +255,6 @@ const_section () \
__CTOR_LIST__, and essentially points to the same list as __CTOR_LIST. */
#ifdef L__main
#include <stdio.h>
#define __CTOR_LIST__ __gxx_init_0
#define __CTOR_LIST_END__ __gxx_init_2
...
...
@@ -269,7 +269,6 @@ do { \
extern func_ptr __CTOR_LIST_END__[1]; \
extern func_ptr __CTOR_LIST_SHR__[1]; \
extern func_ptr __CTOR_LIST_SHR_END__[1]; \
fflush(stdout); \
if( &__CTOR_LIST_SHR__[0] != &__CTOR_LIST__[1]) \
for (p = __CTOR_LIST_SHR__ + 1; p < __CTOR_LIST_SHR_END__ ; p++ ) \
if (*p) (*p) (); \
...
...
gcc/genattrtab.c
View file @
412dc348
...
...
@@ -2459,7 +2459,7 @@ write_test_expr (exp, in_comparison)
printf
(
" / "
);
break
;
case
MOD
:
printf
(
" % "
);
printf
(
" %
%
"
);
break
;
case
AND
:
if
(
in_comparison
)
...
...
@@ -3025,8 +3025,7 @@ write_eligible_delay (kind)
if
(
num_delays
>
1
)
{
sprintf
(
str
,
"*delay_type"
,
kind
);
attr
=
find_attr
(
str
,
0
);
attr
=
find_attr
(
"*delay_type"
,
0
);
if
(
!
attr
)
abort
();
common_av
=
find_most_used
(
attr
);
...
...
gcc/unroll.c
View file @
412dc348
...
...
@@ -1248,7 +1248,7 @@ precondition_loop_p (initial_value, final_value, increment, loop_start,
/* Fail for floating point values, since the caller of this function
does not have code to deal with them. */
if
(
GET_MODE_CLASS
(
GET_MODE
(
loop_final_value
))
==
MODE_FLOAT
||
GET_MODE_CLASS
(
GET_MODE
(
loop_initial_value
)
==
MODE_FLOAT
)
)
||
GET_MODE_CLASS
(
GET_MODE
(
loop_initial_value
)
)
==
MODE_FLOAT
)
{
if
(
loop_dump_stream
)
fprintf
(
loop_dump_stream
,
...
...
@@ -1493,8 +1493,11 @@ copy_loop_body (copy_start, copy_end, map, exit_label, last_iteration,
XEXP
(
value
,
1
));
/* Reset the giv to be just the register again, in case
it is used after the set we have just emitted. */
tv
->
dest_reg
=
dest_reg
;
it is used after the set we have just emitted.
We must subtract the const_adjust factor added in
above. */
tv
->
dest_reg
=
plus_constant
(
dest_reg
,
-
tv
->
const_adjust
);
*
tv
->
location
=
tv
->
dest_reg
;
}
}
...
...
@@ -2669,6 +2672,7 @@ reg_dead_after_loop (reg, loop_start, loop_end)
{
rtx
insn
,
label
;
enum
rtx_code
code
;
int
jump_count
=
0
;
/* HACK: Must also search the loop fall through exit, create a label_ref
here which points to the loop_end, and append the loop_number_exit_labels
...
...
@@ -2684,54 +2688,33 @@ reg_dead_after_loop (reg, loop_start, loop_end)
a conditional jump. */
insn
=
NEXT_INSN
(
XEXP
(
label
,
0
));
while
(
1
)
while
(
insn
)
{
if
(
insn
==
0
)
break
;
if
((
code
=
GET_CODE
(
insn
))
==
INSN
||
code
==
JUMP_INSN
||
code
==
CALL_INSN
)
code
=
GET_CODE
(
insn
);
if
(
GET_RTX_CLASS
(
code
)
==
'i'
)
{
if
(
GET_CODE
(
PATTERN
(
insn
))
==
SET
)
{
if
(
reg_mentioned_p
(
reg
,
SET_SRC
(
PATTERN
(
insn
))))
return
0
;
if
(
SET_DEST
(
PATTERN
(
insn
))
==
reg
)
break
;
if
(
reg_mentioned_p
(
reg
,
SET_DEST
(
PATTERN
(
insn
))))
return
0
;
}
else
if
(
reg_mentioned_p
(
reg
,
PATTERN
(
insn
)))
rtx
set
;
if
(
reg_referenced_p
(
reg
,
PATTERN
(
insn
)))
return
0
;
set
=
single_set
(
insn
);
if
(
set
&&
rtx_equal_p
(
SET_DEST
(
set
),
reg
))
break
;
}
if
(
code
==
JUMP_INSN
)
{
if
(
GET_CODE
(
PATTERN
(
insn
))
==
RETURN
)
break
;
else
if
(
!
simplejump_p
(
insn
))
else
if
(
!
simplejump_p
(
insn
)
/* Prevent infinite loop following infinite loops. */
||
jump_count
++
>
20
)
return
0
;
else
{
insn
=
JUMP_LABEL
(
insn
);
/* If this branches to a code label after a LOOP_BEG or
a LOOP_CONT note, then assume it is a loop back edge.
Must fail in that case to prevent going into an infinite
loop trying to trace infinite loops.
In the presence of syntax errors, this may be a jump to
a CODE_LABEL that was never emitted. Fail in this case
also. */
if
(
!
PREV_INSN
(
insn
)
||
(
GET_CODE
(
PREV_INSN
(
insn
))
==
NOTE
&&
((
NOTE_LINE_NUMBER
(
PREV_INSN
(
insn
))
==
NOTE_INSN_LOOP_BEG
)
||
(
NOTE_LINE_NUMBER
(
PREV_INSN
(
insn
))
==
NOTE_INSN_LOOP_CONT
))))
return
0
;
}
insn
=
JUMP_LABEL
(
insn
);
}
insn
=
NEXT_INSN
(
insn
);
}
}
...
...
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