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
0341c5d2
Commit
0341c5d2
authored
Jan 07, 2002
by
Janis Johnson
Committed by
Janis Johnson
Jan 07, 2002
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
* doc/rtl.texi (Flags): Clean up documentation of RTL flags
From-SVN: r48608
parent
c7f3e0b0
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
326 additions
and
210 deletions
+326
-210
gcc/ChangeLog
+4
-0
gcc/doc/rtl.texi
+322
-210
No files found.
gcc/ChangeLog
View file @
0341c5d2
2002-01-07 Janis Johnson <janis187@us.ibm.com>
* doc/rtl.texi (Flags): Clean up documentation of RTL flags
2002-01-07 Marek Michalkiewicz <marekm@amelek.gda.pl>
2002-01-07 Marek Michalkiewicz <marekm@amelek.gda.pl>
* config/avr/avr.c (avr_mcu_types): Add new MCU types.
* config/avr/avr.c (avr_mcu_types): Add new MCU types.
...
...
gcc/doc/rtl.texi
View file @
0341c5d2
...
@@ -369,60 +369,175 @@ to access them.
...
@@ -369,60 +369,175 @@ to access them.
@section
Flags
in
an
RTL
Expression
@section
Flags
in
an
RTL
Expression
@cindex
flags
in
RTL
expression
@cindex
flags
in
RTL
expression
RTL
expressions
contain
several
flags
(
one
-
bit
bit
-
fields
)
and
other
RTL
expressions
contain
several
flags
(
one
-
bit
bit
-
fields
)
values
that
are
used
in
certain
types
of
expression
.
Most
often
they
that
are
used
in
certain
types
of
expression
.
Most
often
they
are
accessed
with
the
following
macros
:
are
accessed
with
the
following
macros
,
which
expand
into
lvalues
:
@table
@code
@table
@code
@findex
MEM_VOLATILE_P
@findex
CONSTANT_POOL_ADDRESS_P
@cindex
@code
{
mem
}
and
@samp
{
/
v
}
@cindex
@code
{
symbol_ref
}
and
@samp
{
/
u
}
@cindex
@code
{
volatil
},
in
@code
{
mem
}
@cindex
@code
{
unchanging
},
in
@code
{
symbol_ref
}
@cindex
@samp
{
/
v
}
in
RTL
dump
@item
CONSTANT_POOL_ADDRESS_P
(
@var
{
x
})
@item
MEM_VOLATILE_P
(
@var
{
x
})
Nonzero
in
a
@code
{
symbol_ref
}
if
it
refers
to
part
of
the
current
In
@code
{
mem
}
expressions
,
nonzero
for
volatile
memory
references
.
function
'
s
constant
pool
.
For
most
targets
these
addresses
are
in
a
@code
{.
rodata
}
section
entirely
separate
from
the
function
,
but
for
some
targets
the
addresses
are
close
to
the
beginning
of
the
function
.
In
either
case
GCC
assumes
these
addresses
can
be
addressed
directly
,
perhaps
with
the
help
of
base
registers
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
CONST_OR_PURE_CALL_P
@cindex
@code{
call_insn
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
call_insn
}
@item
CONST_OR_PURE_CALL_P
(
@var{
x
}
)
In
a
@code{
call_insn
}
,
@code{
note
}
,
or
an
@code{
expr_list
}
for
notes
,
indicates
that
the
insn
represents
a
call
to
a
const
or
pure
function
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
INSN_ANNULLED_BRANCH_P
@cindex
@code{
insn
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
insn
}
@item
INSN_ANNULLED_BRANCH_P
(
@var{
x
}
)
In
an
@code{
insn
}
in
the
delay
slot
of
a
branch
insn
,
indicates
that
an
annulling
branch
should
be
used
.
See
the
discussion
under
@code{
sequence
}
below
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
INSN_DEAD_CODE_P
@cindex
@code{
insn
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
insn
}
@item
INSN_DEAD_CODE_P
(
@var{
x
}
)
In
an
@code{
insn
}
during
the
dead
-
code
elimination
pass
,
nonzero
if
the
insn
is
dead
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
INSN_DELETED_P
@cindex
@code{
insn
}
and
@samp{
/
v
}
@cindex
@code{
volatil
}
,
in
@code{
insn
}
@item
INSN_DELETED_P
(
@var{
x
}
)
In
an
@code{
insn
}
,
nonzero
if
the
insn
has
been
deleted
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
@findex
INSN_FROM_TARGET_P
@cindex
@code{
insn
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
insn
}
@item
INSN_FROM_TARGET_P
(
@var{
x
}
)
In
an
@code{
insn
}
in
a
delay
slot
of
a
branch
,
indicates
that
the
insn
is
from
the
target
of
the
branch
.
If
the
branch
insn
has
@code{
INSN_ANNULLED_BRANCH_P
}
set
,
this
insn
will
only
be
executed
if
the
branch
is
taken
.
For
annulled
branches
with
@code{
INSN_FROM_TARGET_P
}
clear
,
the
insn
will
be
executed
only
if
the
branch
is
not
taken
.
When
@code{
INSN_ANNULLED_BRANCH_P
}
is
not
set
,
this
insn
will
always
be
executed
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
LABEL_OUTSIDE_LOOP_P
@cindex
@code{
label_ref
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
label_ref
}
@item
LABEL_OUTSIDE_LOOP_P
(
@var{
x
}
)
In
@code{
label_ref
}
expressions
,
nonzero
if
this
is
a
reference
to
a
label
that
is
outside
the
innermost
loop
containing
the
reference
to
the
label
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
LABEL_PRESERVE_P
@cindex
@code{
code_label
}
and
@samp{
/
i
}
@cindex
@code{
in_struct
}
,
in
@code{
code_label
}
@item
LABEL_PRESERVE_P
(
@var{
x
}
)
In
a
@code{
code_label
}
,
indicates
that
the
label
is
referenced
by
code
or
data
not
visible
to
the
RTL
of
a
given
function
.
Labels
referenced
by
a
non
-
local
goto
will
have
this
bit
set
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
LABEL_REF_NONLOCAL_P
@cindex
@code{
label_ref
}
and
@samp{
/
v
}
@cindex
@code{
volatil
}
,
in
@code{
label_ref
}
@item
LABEL_REF_NONLOCAL_P
(
@var{
x
}
)
In
@code{
label_ref
}
and
@code{
reg_label
}
expressions
,
nonzero
if
this
is
a
reference
to
a
non
-
local
label
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
@findex
LINK_COST_FREE
@cindex
@code{
insn_list
}
and
@samp{
/
c
}
@cindex
@code{
call
}
,
in
@code{
insn_list
}
@item
LINK_COST_FREE
(
@var{
x
}
)
In
the
@code{
LOG_LINKS
}
@code{
insn_list
}
during
scheduling
,
nonzero
when
the
cost
of
executing
an
instruction
through
the
link
is
zero
,
i
.
e
.,
the
link
makes
the
cost
free
.
Stored
in
the
@code{
call
}
field
and
printed
as
@samp{
/
c
}
.
@findex
LINK_COST_ZERO
@cindex
@code{
insn_list
}
and
@samp{
/
j
}
@cindex
@code{
jump
}
,
in
@code{
insn_list
}
@item
LINK_COST_ZERO
(
@var{
x
}
)
In
the
@code{
LOG_LINKS
}
@code{
insn_list
}
during
scheduling
,
nonzero
when
the
cost
of
executing
an
instruction
through
the
link
varies
and
is
unchanged
,
i
.
e
.,
the
link
has
zero
additional
cost
.
Stored
in
the
@code{
jump
}
field
and
printed
as
@samp{
/
j
}
.
@findex
MEM_IN_STRUCT_P
@findex
MEM_IN_STRUCT_P
@cindex
@code{
mem
}
and
@samp{
/
s
}
@cindex
@code{
mem
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
mem
}
@cindex
@code{
in_struct
}
,
in
@code{
mem
}
@cindex
@samp
{
/
s
}
in
RTL
dump
@item
MEM_IN_STRUCT_P
(
@var{
x
}
)
@item
MEM_IN_STRUCT_P
(
@var{
x
}
)
In
@code{
mem
}
expressions
,
nonzero
for
reference
to
an
entire
structure
,
In
@code{
mem
}
expressions
,
nonzero
for
reference
to
an
entire
structure
,
union
or
array
,
or
to
a
component
of
one
.
Zero
for
references
to
a
union
or
array
,
or
to
a
component
of
one
.
Zero
for
references
to
a
scalar
variable
or
through
a
pointer
to
a
scalar
.
Stored
in
the
scalar
variable
or
through
a
pointer
to
a
scalar
.
If
both
this
flag
and
@code
{
in_struct
}
field
and
printed
as
@samp
{
/
s
}.
If
both
this
flag
and
@code{
MEM_SCALAR_P
}
are
clear
,
then
we
don
'
t
know
whether
this
@code{
mem
}
MEM_SCALAR_P
are
clear
,
then
we
don
'
t
know
whether
this
MEM
is
in
a
is
in
a
structure
or
not
.
Both
flags
should
never
be
simultaneously
set
.
structure
or
not
.
Both
flags
should
never
be
simultaneously
set
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
MEM_KEEP_ALIAS_SET_P
@cindex
@code{
mem
}
and
@samp{
/
j
}
@cindex
@code{
jump
}
,
in
@code{
mem
}
@item
MEM_KEEP_ALIAS_SET_P
(
@var{
x
}
)
In
@code{
mem
}
expressions
,
1
if
we
should
keep
the
alias
set
for
this
mem
unchanged
when
we
access
a
component
.
Set
to
1
,
for
example
,
when
we
are
already
in
a
non
-
addressable
component
of
an
aggregate
.
Stored
in
the
@code{
jump
}
field
and
printed
as
@samp{
/
j
}
.
@findex
MEM_SCALAR_P
@findex
MEM_SCALAR_P
@cindex
@code{
mem
}
and
@samp{
/
f
}
@cindex
@code{
mem
}
and
@samp{
/
f
}
@cindex
@code
{
frame_related
},
in
@code
{
mem
}
@cindex
@code{
frame_related
}
,
in
@code{
mem
}
@cindex
@samp
{
/
f
}
in
RTL
dump
@item
MEM_SCALAR_P
(
@var{
x
}
)
@item
MEM_SCALAR_P
(
@var{
x
}
)
In
@code{
mem
}
expressions
,
nonzero
for
reference
to
a
scalar
known
not
In
@code{
mem
}
expressions
,
nonzero
for
reference
to
a
scalar
known
not
to
be
a
member
of
a
structure
,
union
,
or
array
.
Zero
for
such
to
be
a
member
of
a
structure
,
union
,
or
array
.
Zero
for
such
references
and
for
indirections
through
pointers
,
even
pointers
pointing
references
and
for
indirections
through
pointers
,
even
pointers
pointing
to
scalar
types
.
If
both
this
flag
and
MEM_STRUCT_P
are
clear
,
then
we
to
scalar
types
.
If
both
this
flag
and
@code{
MEM_STRUCT_P
}
are
clear
,
then
we
don
'
t
know
whether
this
MEM
is
in
a
structure
or
not
.
Both
flags
should
don
'
t
know
whether
this
@code{
mem
}
is
in
a
structure
or
not
.
Both
flags
should
never
be
simultaneously
set
.
never
be
simultaneously
set
.
Stored
in
the
@code{
frame_related
}
field
and
printed
as
@samp{
/
f
}
.
@findex
MEM_ALIAS_SET
@findex
MEM_VOLATILE_P
@item
MEM_ALIAS_SET
(
@var
{
x
})
@cindex
@code{
mem
}
and
@samp{
/
v
}
In
@code
{
mem
}
expressions
,
the
alias
set
to
which
@var
{
x
}
belongs
.
If
@cindex
@code{
volatil
}
,
in
@code{
mem
}
zero
,
@var
{
x
}
is
not
in
any
alias
set
,
and
may
alias
anything
.
If
@item
MEM_VOLATILE_P
(
@var{
x
}
)
nonzero
,
@var
{
x
}
may
only
alias
objects
in
the
same
alias
set
.
This
In
@code{
mem
}
and
@code{
asm_operands
}
expressions
,
nonzero
for
volatile
value
is
set
(
in
a
language
-
specific
manner
)
by
the
front
end
.
This
memory
references
.
field
is
not
a
bit
-
field
;
it
is
in
an
integer
,
found
as
the
second
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
argument
to
the
@code
{
mem
}.
@findex
REG_FUNCTION_VALUE_P
@cindex
@code{
reg
}
and
@samp{
/
i
}
@cindex
@code{
integrated
}
,
in
@code{
reg
}
@item
REG_FUNCTION_VALUE_P
(
@var{
x
}
)
Nonzero
in
a
@code{
reg
}
if
it
is
the
place
in
which
this
function
'
s
value
is
going
to
be
returned
.
(
This
happens
only
in
a
hard
register
.)
Stored
in
the
@code{
integrated
}
field
and
printed
as
@samp{
/
i
}
.
@findex
REG_LOOP_TEST_P
@findex
REG_LOOP_TEST_P
@cindex
@code{
reg
}
and
@samp{
/
s
}
@cindex
@code{
reg
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
reg
}
@cindex
@code{
in_struct
}
,
in
@code{
reg
}
@item
REG_LOOP_TEST_P
@item
REG_LOOP_TEST_P
(
@var{
x
}
)
In
@code{
reg
}
expressions
,
nonzero
if
this
register
'
s
entire
life
is
In
@code{
reg
}
expressions
,
nonzero
if
this
register
'
s
entire
life
is
contained
in
the
exit
test
code
for
some
loop
.
Stored
in
the
contained
in
the
exit
test
code
for
some
loop
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
REG_POINTER
@cindex
@code{
reg
}
and
@samp{
/
f
}
@cindex
@code{
frame_related
}
,
in
@code{
reg
}
@item
REG_POINTER
(
@var{
x
}
)
Nonzero
in
a
@code{
reg
}
if
the
register
holds
a
pointer
.
Stored
in
the
@code{
frame_related
}
field
and
printed
as
@samp{
/
f
}
.
@findex
REG_USERVAR_P
@findex
REG_USERVAR_P
@cindex
@code{
reg
}
and
@samp{
/
v
}
@cindex
@code{
reg
}
and
@samp{
/
v
}
@cindex
@code{
volatil
}
,
in
@code{
reg
}
@cindex
@code{
volatil
}
,
in
@code{
reg
}
...
@@ -432,75 +547,19 @@ the user's source code. Zero for temporaries generated internally by
...
@@ -432,75 +547,19 @@ the user's source code. Zero for temporaries generated internally by
the
compiler
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
the
compiler
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
@samp{
/
v
}
.
@cindex
@samp
{
/
i
}
in
RTL
dump
@findex
REG_FUNCTION_VALUE_P
@cindex
@code
{
reg
}
and
@samp
{
/
i
}
@cindex
@code
{
integrated
},
in
@code
{
reg
}
@item
REG_FUNCTION_VALUE_P
(
@var
{
x
})
Nonzero
in
a
@code
{
reg
}
if
it
is
the
place
in
which
this
function
'
s
value
is
going
to
be
returned
.
(
This
happens
only
in
a
hard
register
.)
Stored
in
the
@code
{
integrated
}
field
and
printed
as
@samp
{
/
i
}.
The
same
hard
register
may
be
used
also
for
collecting
the
values
of
The
same
hard
register
may
be
used
also
for
collecting
the
values
of
functions
called
by
this
one
,
but
@code{
REG_FUNCTION_VALUE_P
}
is
zero
functions
called
by
this
one
,
but
@code{
REG_FUNCTION_VALUE_P
}
is
zero
in
this
kind
of
use
.
in
this
kind
of
use
.
@cindex
@samp
{
/
f
}
in
RTL
dump
@findex
REG_POINTER
@cindex
@code
{
reg
}
and
@samp
{
/
f
}
@cindex
@code
{
frame_related
},
in
@code
{
reg
}
@item
REG_POINTER
(
@var
{
x
})
Nonzero
in
a
@code
{
reg
}
if
the
register
holds
a
pointer
.
Stored
in
the
@code
{
frame_related
}
field
and
printed
as
@samp
{
/
f
}.
@findex
SUBREG_PROMOTED_VAR_P
@cindex
@code
{
subreg
}
and
@samp
{
/
s
}
@cindex
@code
{
in_struct
},
in
@code
{
subreg
}
@item
SUBREG_PROMOTED_VAR_P
Nonzero
in
a
@code
{
subreg
}
if
it
was
made
when
accessing
an
object
that
was
promoted
to
a
wider
mode
in
accord
with
the
@code
{
PROMOTED_MODE
}
machine
description
macro
(
@pxref
{
Storage
Layout
}).
In
this
case
,
the
mode
of
the
@code{
subreg
}
is
the
declared
mode
of
the
object
and
the
mode
of
@code{
SUBREG_REG
}
is
the
mode
of
the
register
that
holds
the
object
.
Promoted
variables
are
always
either
sign
-
or
zero
-
extended
to
the
wider
mode
on
every
assignment
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
SUBREG_PROMOTED_UNSIGNED_P
@cindex
@code{
subreg
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
subreg
}
@item
SUBREG_PROMOTED_UNSIGNED_P
Nonzero
in
a
@code{
subreg
}
that
has
@code{
SUBREG_PROMOTED_VAR_P
}
nonzero
if
the
object
being
referenced
is
kept
zero
-
extended
and
zero
if
it
is
kept
sign
-
extended
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
RTX_UNCHANGING_P
@cindex
@code{
reg
}
and
@samp{
/
u
}
@cindex
@code{
mem
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
reg
}
and
@code{
mem
}
@cindex
@samp{
/
u
}
in
RTL
dump
@item
RTX_UNCHANGING_P
(
@var{
x
}
)
Nonzero
in
a
@code{
reg
}
or
@code{
mem
}
if
the
value
is
not
changed
.
(
This
flag
is
not
set
for
memory
references
via
pointers
to
constants
.
Such
pointers
only
guarantee
that
the
object
will
not
be
changed
explicitly
by
the
current
function
.
The
object
might
be
changed
by
other
functions
or
by
aliasing
.)
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
RTX_INTEGRATED_P
@cindex
@code{
integrated
}
,
in
@code{
insn
}
@item
RTX_INTEGRATED_P
(
@var{
insn
}
)
Nonzero
in
an
insn
if
it
resulted
from
an
in
-
line
function
call
.
Stored
in
the
@code{
integrated
}
field
and
printed
as
@samp{
/
i
}
.
@findex
RTX_FRAME_RELATED_P
@findex
RTX_FRAME_RELATED_P
@cindex
@code{
insn
}
and
@samp{
/
f
}
@cindex
@code{
frame_related
}
,
in
@code{
insn
}
@item
RTX_FRAME_RELATED_P
(
@var{
x
}
)
@item
RTX_FRAME_RELATED_P
(
@var{
x
}
)
Nonzero
in
an
insn
or
expression
which
is
part
of
a
function
prologue
Nonzero
in
an
@code{
insn
}
or
@code{
set
}
which
is
part
of
a
function
prologue
and
sets
the
stack
pointer
,
sets
the
frame
pointer
,
or
saves
a
register
.
and
sets
the
stack
pointer
,
sets
the
frame
pointer
,
or
saves
a
register
.
This
flag
should
also
be
set
on
an
instruction
that
sets
up
a
temporary
This
flag
should
also
be
set
on
an
instruction
that
sets
up
a
temporary
register
to
use
in
place
of
the
frame
pointer
.
register
to
use
in
place
of
the
frame
pointer
.
Stored
in
the
@code{
frame_related
}
field
and
printed
as
@samp{
/
f
}
.
In
particular
,
on
RISC
targets
where
there
are
limits
on
the
sizes
of
In
particular
,
on
RISC
targets
where
there
are
limits
on
the
sizes
of
immediate
constants
,
it
is
sometimes
impossible
to
reach
the
register
immediate
constants
,
it
is
sometimes
impossible
to
reach
the
register
...
@@ -521,12 +580,77 @@ computation performed by this instruction, i.e., one that
...
@@ -521,12 +580,77 @@ computation performed by this instruction, i.e., one that
This
flag
is
required
for
exception
handling
support
on
targets
with
RTL
This
flag
is
required
for
exception
handling
support
on
targets
with
RTL
prologues
.
prologues
.
@findex
SYMBOL_REF_USED
@findex
RTX_INTEGRATED_P
@cindex
@code{
used
}
,
in
@code{
symbol_ref
}
@cindex
@code{
insn
}
and
@samp{
/
i
}
@item
SYMBOL_REF_USED
(
@var{
x
}
)
@cindex
@code{
integrated
}
,
in
@code{
insn
}
In
a
@code{
symbol_ref
}
,
indicates
that
@var{
x
}
has
been
used
.
This
is
@item
RTX_INTEGRATED_P
(
@var{
x
}
)
normally
only
used
to
ensure
that
@var{
x
}
is
only
declared
external
Nonzero
in
an
@code{
insn
}
,
@code{
insn_list
}
,
or
@code{
const
}
if
it
once
.
Stored
in
the
@code{
used
}
field
.
resulted
from
an
in
-
line
function
call
.
Stored
in
the
@code{
integrated
}
field
and
printed
as
@samp{
/
i
}
.
@findex
RTX_UNCHANGING_P
@cindex
@code{
reg
}
and
@samp{
/
u
}
@cindex
@code{
mem
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
reg
}
and
@code{
mem
}
@item
RTX_UNCHANGING_P
(
@var{
x
}
)
Nonzero
in
a
@code{
reg
}
or
@code{
mem
}
if
the
memory
is
set
at
most
once
,
anywhere
.
This
does
not
mean
that
it
is
function
invariant
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
SCHED_GROUP_P
@cindex
@code{
insn
}
and
@samp{
/
i
}
@cindex
@code{
in_struct
}
,
in
@code{
insn
}
@item
SCHED_GROUP_P
(
@var{
x
}
)
During
instruction
scheduling
,
in
an
@code{
insn
}
,
indicates
that
the
previous
insn
must
be
scheduled
together
with
this
insn
.
This
is
used
to
ensure
that
certain
groups
of
instructions
will
not
be
split
up
by
the
instruction
scheduling
pass
,
for
example
,
@code{
use
}
insns
before
a
@code{
call_insn
}
may
not
be
separated
from
the
@code{
call_insn
}
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
SET_IS_RETURN_P
@cindex
@code{
insn
}
and
@samp{
/
j
}
@cindex
@code{
jump
}
,
in
@code{
insn
}
@item
SET_IS_RETURN_P
(
@var{
x
}
)
For
a
@code{
set
}
,
nonzero
if
it
is
for
a
return
.
Stored
in
the
@code{
jump
}
field
and
printed
as
@samp{
/
j
}
.
@findex
SIBLING_CALL_P
@cindex
@code{
call_insn
}
and
@samp{
/
j
}
@cindex
@code{
jump
}
,
in
@code{
call_insn
}
@item
SIBLING_CALL_P
(
@var{
x
}
)
For
a
@code{
call_insn
}
,
nonzero
if
the
insn
is
a
sibling
call
.
Stored
in
the
@code{
jump
}
field
and
printed
as
@samp{
/
j
}
.
@findex
STRING_POOL_ADDRESS_P
@cindex
@code{
symbol_ref
}
and
@samp{
/
f
}
@cindex
@code{
frame_related
}
,
in
@code{
symbol_ref
}
@item
STRING_POOL_ADDRESS_P
(
@var{
x
}
)
For
a
@code{
symbol_ref
}
expression
,
nonzero
if
it
addresses
this
function
'
s
string
constant
pool
.
Stored
in
the
@code{
frame_related
}
field
and
printed
as
@samp{
/
f
}
.
@findex
SUBREG_PROMOTED_UNSIGNED_P
@cindex
@code{
subreg
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
subreg
}
@item
SUBREG_PROMOTED_UNSIGNED_P
(
@var{
x
}
)
Nonzero
in
a
@code{
subreg
}
that
has
@code{
SUBREG_PROMOTED_VAR_P
}
nonzero
if
the
object
being
referenced
is
kept
zero
-
extended
and
zero
if
it
is
kept
sign
-
extended
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
SUBREG_PROMOTED_VAR_P
@cindex
@code{
subreg
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
subreg
}
@item
SUBREG_PROMOTED_VAR_P
(
@var{
x
}
)
Nonzero
in
a
@code{
subreg
}
if
it
was
made
when
accessing
an
object
that
was
promoted
to
a
wider
mode
in
accord
with
the
@code{
PROMOTED_MODE
}
machine
description
macro
(
@pxref{
Storage
Layout
}
).
In
this
case
,
the
mode
of
the
@code{
subreg
}
is
the
declared
mode
of
the
object
and
the
mode
of
@code{
SUBREG_REG
}
is
the
mode
of
the
register
that
holds
the
object
.
Promoted
variables
are
always
either
sign
-
or
zero
-
extended
to
the
wider
mode
on
every
assignment
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
SYMBOL_REF_FLAG
@findex
SYMBOL_REF_FLAG
@cindex
@code{
symbol_ref
}
and
@samp{
/
v
}
@cindex
@code{
symbol_ref
}
and
@samp{
/
v
}
...
@@ -535,122 +659,51 @@ once. Stored in the @code{used} field.
...
@@ -535,122 +659,51 @@ once. Stored in the @code{used} field.
In
a
@code{
symbol_ref
}
,
this
is
used
as
a
flag
for
machine
-
specific
purposes
.
In
a
@code{
symbol_ref
}
,
this
is
used
as
a
flag
for
machine
-
specific
purposes
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
@findex
SYMBOL_REF_USED
@cindex
@code{
used
}
,
in
@code{
symbol_ref
}
@item
SYMBOL_REF_USED
(
@var{
x
}
)
In
a
@code{
symbol_ref
}
,
indicates
that
@var{
x
}
has
been
used
.
This
is
normally
only
used
to
ensure
that
@var{
x
}
is
only
declared
external
once
.
Stored
in
the
@code{
used
}
field
.
@findex
SYMBOL_REF_WEAK
@findex
SYMBOL_REF_WEAK
@cindex
@code{
symbol_ref
}
and
@samp{
/
i
}
@cindex
@code{
symbol_ref
}
and
@samp{
/
i
}
@cindex
@code{
integrated
}
,
in
@code{
symbol_ref
}
@cindex
@code{
integrated
}
,
in
@code{
symbol_ref
}
@item
SYMBOL_REF_WEAK
(
@var{
x
}
)
@item
SYMBOL_REF_WEAK
(
@var{
x
}
)
In
a
@code{
symbol_ref
}
,
indicates
that
@var{
x
}
has
been
declared
weak
.
In
a
@code{
symbol_ref
}
,
indicates
that
@var{
x
}
has
been
declared
weak
.
Stored
in
the
@code{
integrated
}
field
and
printed
as
@samp{
/
i
}
.
Stored
in
the
@code{
integrated
}
field
and
printed
as
@samp{
/
i
}
.
@findex
LABEL_OUTSIDE_LOOP_P
@cindex
@code{
label_ref
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
label_ref
}
@item
LABEL_OUTSIDE_LOOP_P
In
@code{
label_ref
}
expressions
,
nonzero
if
this
is
a
reference
to
a
label
that
is
outside
the
innermost
loop
containing
the
reference
to
the
label
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
INSN_DELETED_P
@cindex
@code{
volatil
}
,
in
@code{
insn
}
@item
INSN_DELETED_P
(
@var{
insn
}
)
In
an
insn
,
nonzero
if
the
insn
has
been
deleted
.
Stored
in
the
@code{
volatil
}
field
and
printed
as
@samp{
/
v
}
.
@findex
INSN_ANNULLED_BRANCH_P
@cindex
@code{
insn
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
insn
}
@item
INSN_ANNULLED_BRANCH_P
(
@var{
insn
}
)
In
an
@code{
insn
}
in
the
delay
slot
of
a
branch
insn
,
indicates
that
an
annulling
branch
should
be
used
.
See
the
discussion
under
@code{
sequence
}
below
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
INSN_FROM_TARGET_P
@cindex
@code{
insn
}
and
@samp{
/
s
}
@cindex
@code{
in_struct
}
,
in
@code{
insn
}
@cindex
@samp{
/
s
}
in
RTL
dump
@item
INSN_FROM_TARGET_P
(
@var{
insn
}
)
In
an
@code{
insn
}
in
a
delay
slot
of
a
branch
,
indicates
that
the
insn
is
from
the
target
of
the
branch
.
If
the
branch
insn
has
@code{
INSN_ANNULLED_BRANCH_P
}
set
,
this
insn
will
only
be
executed
if
the
branch
is
taken
.
For
annulled
branches
with
@code{
INSN_FROM_TARGET_P
}
clear
,
the
insn
will
be
executed
only
if
the
branch
is
not
taken
.
When
@code{
INSN_ANNULLED_BRANCH_P
}
is
not
set
,
this
insn
will
always
be
executed
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
CONSTANT_POOL_ADDRESS_P
@cindex
@code{
symbol_ref
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
symbol_ref
}
@item
CONSTANT_POOL_ADDRESS_P
(
@var{
x
}
)
Nonzero
in
a
@code{
symbol_ref
}
if
it
refers
to
part
of
the
current
function
'
s
``
constants
pool
''
.
These
are
addresses
close
to
the
beginning
of
the
function
,
and
GCC
assumes
they
can
be
addressed
directly
(
perhaps
with
the
help
of
base
registers
).
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
CONST_CALL_P
@cindex
@code{
call_insn
}
and
@samp{
/
u
}
@cindex
@code{
unchanging
}
,
in
@code{
call_insn
}
@item
CONST_CALL_P
(
@var{
x
}
)
In
a
@code{
call_insn
}
,
indicates
that
the
insn
represents
a
call
to
a
const
function
.
Stored
in
the
@code{
unchanging
}
field
and
printed
as
@samp{
/
u
}
.
@findex
LABEL_PRESERVE_P
@cindex
@code{
code_label
}
and
@samp{
/
i
}
@cindex
@code{
in_struct
}
,
in
@code{
code_label
}
@item
LABEL_PRESERVE_P
(
@var{
x
}
)
In
a
@code{
code_label
}
,
indicates
that
the
label
can
never
be
deleted
.
Labels
referenced
by
a
non
-
local
goto
will
have
this
bit
set
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@findex
SCHED_GROUP_P
@cindex
@code{
insn
}
and
@samp{
/
i
}
@cindex
@code{
in_struct
}
,
in
@code{
insn
}
@item
SCHED_GROUP_P
(
@var{
insn
}
)
During
instruction
scheduling
,
in
an
insn
,
indicates
that
the
previous
insn
must
be
scheduled
together
with
this
insn
.
This
is
used
to
ensure
that
certain
groups
of
instructions
will
not
be
split
up
by
the
instruction
scheduling
pass
,
for
example
,
@code{
use
}
insns
before
a
@code{
call_insn
}
may
not
be
separated
from
the
@code{
call_insn
}
.
Stored
in
the
@code{
in_struct
}
field
and
printed
as
@samp{
/
s
}
.
@end
table
@end
table
These
are
the
fields
which
the
above
macros
refer
to
:
These
are
the
fields
to
which
the
above
macros
refer
:
@table
@code
@table
@code
@findex
used
@findex
call
@item
used
@cindex
@samp{
/
c
}
in
RTL
dump
Normally
,
this
flag
is
used
only
momentarily
,
at
the
end
of
RTL
@item
call
generation
for
a
function
,
to
count
the
number
of
times
an
expression
In
the
@code{
LOG_LINKS
}
of
an
@code{
insn_list
}
during
scheduling
,
1
means
that
appears
in
insns
.
Expressions
that
appear
more
than
once
are
copied
,
the
cost
of
executing
an
instruction
through
the
link
is
zero
.
according
to
the
rules
for
shared
structure
(
@pxref{
Sharing
}
).
In
a
@code{
symbol_ref
}
,
it
indicates
that
an
external
declaration
for
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
c
}
.
the
symbol
has
already
been
written
.
In
a
@code{
reg
}
,
it
is
used
by
the
leaf
register
renumbering
code
to
ensure
@findex
frame_related
that
each
register
is
only
renumbered
once
.
@cindex
@samp{
/
f
}
in
RTL
dump
@item
frame_related
In
an
@code{
insn
}
or
@code{
set
}
expression
,
1
means
that
it
is
part
of
a
function
prologue
and
sets
the
stack
pointer
,
sets
the
frame
pointer
,
saves
a
register
,
or
sets
up
a
temporary
register
to
use
in
place
of
the
frame
pointer
.
@findex
volatil
In
@code{
reg
}
expressions
,
1
means
that
the
register
holds
a
pointer
.
@item
volatil
This
flag
is
used
in
@code{
mem
}
,
@code{
symbol_ref
}
and
@code{
reg
}
expressions
and
in
insns
.
In
RTL
dump
files
,
it
is
printed
as
@samp{
/
v
}
.
@cindex
volatile
memory
references
In
@code{
symbol_ref
}
expressions
,
1
means
that
the
reference
addresses
In
a
@code{
mem
}
expression
,
it
is
1
if
the
memory
reference
is
volatile
.
this
function
'
s
string
constant
pool
.
Volatile
memory
references
may
not
be
deleted
,
reordered
or
combined
.
In
a
@code{
symbol_ref
}
expression
,
it
is
used
for
machine
-
specific
In
@code{
mem
}
expressions
,
1
means
that
the
reference
is
to
a
scalar
.
purposes
.
In
a
@code{
reg
}
expression
,
it
is
1
if
the
value
is
a
user
-
level
variable
.
0
indicates
an
internal
compiler
temporary
.
In
an
insn
,
1
means
the
insn
has
been
deleted
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
f
}
.
@findex
in_struct
@findex
in_struct
@cindex
@samp{
/
s
}
in
RTL
dump
@item
in_struct
@item
in_struct
In
@code{
mem
}
expressions
,
it
is
1
if
the
memory
datum
referred
to
is
In
@code{
mem
}
expressions
,
it
is
1
if
the
memory
datum
referred
to
is
all
or
part
of
a
structure
or
array
;
0
if
it
is
(
or
might
be
)
a
scalar
all
or
part
of
a
structure
or
array
;
0
if
it
is
(
or
might
be
)
a
scalar
...
@@ -658,12 +711,6 @@ variable. A reference through a C pointer has 0 because the pointer
...
@@ -658,12 +711,6 @@ variable. A reference through a C pointer has 0 because the pointer
might
point
to
a
scalar
variable
.
This
information
allows
the
compiler
might
point
to
a
scalar
variable
.
This
information
allows
the
compiler
to
determine
something
about
possible
cases
of
aliasing
.
to
determine
something
about
possible
cases
of
aliasing
.
In
an
insn
in
the
delay
slot
of
a
branch
,
1
means
that
this
insn
is
from
the
target
of
the
branch
.
During
instruction
scheduling
,
in
an
insn
,
1
means
that
this
insn
must
be
scheduled
as
part
of
a
group
together
with
the
previous
insn
.
In
@code{
reg
}
expressions
,
it
is
1
if
the
register
has
its
entire
life
In
@code{
reg
}
expressions
,
it
is
1
if
the
register
has
its
entire
life
contained
within
the
test
expression
of
some
loop
.
contained
within
the
test
expression
of
some
loop
.
...
@@ -679,9 +726,50 @@ This is used for labels which are the target of non-local gotos. Such a
...
@@ -679,9 +726,50 @@ This is used for labels which are the target of non-local gotos. Such a
label
that
would
have
been
deleted
is
replaced
with
a
@code{
note
}
of
type
label
that
would
have
been
deleted
is
replaced
with
a
@code{
note
}
of
type
@code{
NOTE_INSN_DELETED_LABEL
}
.
@code{
NOTE_INSN_DELETED_LABEL
}
.
In
an
@code{
insn
}
during
dead
-
code
elimination
,
1
means
that
the
insn
is
dead
code
.
In
an
@code{
insn
}
during
reorg
for
an
insn
in
the
delay
slot
of
a
branch
,
1
means
that
this
insn
is
from
the
target
of
the
branch
.
In
an
@code{
insn
}
during
instruction
scheduling
,
1
means
that
this
insn
must
be
scheduled
as
part
of
a
group
together
with
the
previous
insn
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
s
}
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
s
}
.
@findex
integrated
@cindex
@samp{
/
i
}
in
RTL
dump
@item
integrated
In
an
@code{
insn
}
,
@code{
insn_list
}
,
or
@code{
const
}
,
1
means
the
RTL
was
produced
by
procedure
integration
.
In
@code{
reg
}
expressions
,
1
means
the
register
contains
the
value
to
be
returned
by
the
current
function
.
On
machines
that
pass
parameters
in
registers
,
the
same
register
number
may
be
used
for
parameters
as
well
,
but
this
flag
is
not
set
on
such
uses
.
In
@code{
symbol_ref
}
expressions
,
1
means
the
referenced
symbol
is
weak
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
i
}
.
@findex
jump
@cindex
@samp{
/
j
}
in
RTL
dump
@item
jump
In
a
@code{
mem
}
expression
,
1
means
we
should
keep
the
alias
set
for
this
mem
unchanged
when
we
access
a
component
.
In
a
@code{
set
}
,
1
means
it
is
for
a
return
.
In
a
@code{
call_insn
}
,
1
means
it
is
a
sibling
call
.
In
the
@code{
LOG_LINKS
}
of
an
@code{
insn_list
}
during
scheduling
,
1
means
the
cost
of
executing
an
instruction
through
the
link
varies
and
is
unchanging
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
j
}
.
@findex
unchanging
@findex
unchanging
@cindex
@samp{
/
u
}
in
RTL
dump
@item
unchanging
@item
unchanging
In
@code{
reg
}
and
@code{
mem
}
expressions
,
1
means
In
@code{
reg
}
and
@code{
mem
}
expressions
,
1
means
that
the
value
of
the
expression
never
changes
.
that
the
value
of
the
expression
never
changes
.
...
@@ -689,26 +777,50 @@ that the value of the expression never changes.
...
@@ -689,26 +777,50 @@ that the value of the expression never changes.
In
@code{
subreg
}
expressions
,
it
is
1
if
the
@code{
subreg
}
references
an
In
@code{
subreg
}
expressions
,
it
is
1
if
the
@code{
subreg
}
references
an
unsigned
object
whose
mode
has
been
promoted
to
a
wider
mode
.
unsigned
object
whose
mode
has
been
promoted
to
a
wider
mode
.
In
an
insn
,
1
means
that
this
is
an
annulling
branch
.
In
an
@code{
insn
}
,
1
means
that
this
is
an
annulling
branch
.
In
a
@code{
symbol_ref
}
expression
,
1
means
that
this
symbol
addresses
In
a
@code{
symbol_ref
}
expression
,
1
means
that
this
symbol
addresses
something
in
the
per
-
function
constant
s
pool
.
something
in
the
per
-
function
constant
pool
.
In
a
@code{
call_insn
}
,
1
means
that
this
instruction
is
a
call
to
a
In
a
@code{
call_insn
}
,
@code{
note
}
,
or
an
@code{
expr_list
}
of
notes
,
const
function
.
1
means
that
this
instruction
is
a
call
to
a
const
or
pure
function
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
u
}
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
u
}
.
@findex
integrated
@findex
used
@item
integrated
@item
used
In
some
kinds
of
expressions
,
including
insns
,
this
flag
means
the
This
flag
is
used
directly
(
without
an
access
macro
)
at
the
end
of
RTL
rtl
was
produced
by
procedure
integration
.
generation
for
a
function
,
to
count
the
number
of
times
an
expression
appears
in
insns
.
Expressions
that
appear
more
than
once
are
copied
,
according
to
the
rules
for
shared
structure
(
@pxref{
Sharing
}
).
In
a
@code{
reg
}
expression
,
this
flag
indicates
the
register
For
a
@code{
reg
}
,
it
is
used
directly
(
without
an
access
macro
)
by
the
containing
the
value
to
be
returned
by
the
current
function
.
On
leaf
register
renumbering
code
to
ensure
that
each
register
is
only
machines
that
pass
parameters
in
registers
,
the
same
register
number
renumbered
once
.
may
be
used
for
parameters
as
well
,
but
this
flag
is
not
set
on
such
uses
.
In
a
@code{
symbol_ref
}
,
it
indicates
that
an
external
declaration
for
the
symbol
has
already
been
written
.
@findex
volatil
@cindex
@samp{
/
v
}
in
RTL
dump
@item
volatil
@cindex
volatile
memory
references
In
a
@code{
mem
}
or
@code{
asm_operands
}
expression
,
it
is
1
if
the
memory
reference
is
volatile
.
Volatile
memory
references
may
not
be
deleted
,
reordered
or
combined
.
In
a
@code{
symbol_ref
}
expression
,
it
is
used
for
machine
-
specific
purposes
.
In
a
@code{
reg
}
expression
,
it
is
1
if
the
value
is
a
user
-
level
variable
.
0
indicates
an
internal
compiler
temporary
.
In
an
@code{
insn
}
,
1
means
the
insn
has
been
deleted
.
In
@code{
label_ref
}
and
@code{
reg_label
}
expressions
,
1
means
a
reference
to
a
non
-
local
label
.
In
an
RTL
dump
,
this
flag
is
represented
as
@samp{
/
v
}
.
@end
table
@end
table
@node
Machine
Modes
@node
Machine
Modes
...
...
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