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
e5951263
Commit
e5951263
authored
Apr 11, 2000
by
Nick Clifton
Committed by
Nick Clifton
Apr 11, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fix compile time warnings for arm-pe target.
From-SVN: r33069
parent
dc4a31ee
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
86 additions
and
54 deletions
+86
-54
gcc/ChangeLog
+23
-0
gcc/config/arm/arm.c
+38
-41
gcc/config/arm/arm.h
+25
-13
No files found.
gcc/ChangeLog
View file @
e5951263
2000
-
04
-
10
Nick
Clifton
<
nickc
@cygnus
.
com
>
*
config
/
arm
/
arm
.
h
(
HOST_INT
)
:
New
macro
:
Declare
a
HOST_WIDE_INT
integer
.
(
HOST_UINT
)
:
New
macro
:
Declare
an
unsigned
HOST_WIDE_INT
integer
.
(
ARM_SIGN_EXTEND
)
:
Use
HOST_UINT
.
(
STRIP_NAME_ENCODING
)
:
Prevent
warnings
about
redefinitions
.
(
ASM_OUTPUT_LABELREF
)
:
Prevent
warnings
about
redefinitions
.
(
INCOMING_RETURN_ADDR_RTX
)
:
Only
define
if
Dwarf2
is
supported
.
(
DWARF_FRAME_RETURN_COLUMN
)
:
Only
define
if
Dwarf2
is
supported
.
*
config
/
arm
/
arm
.
c
:
(
const_ok_for_arm
)
:
Use
HOST_UINT
.
(
arm_gen_constant
)
:
Use
HOST_UINT
.
(
arm_canonicalize_constant
)
:
Use
HOST_UINT
.
(
arm_reload_in_hi
)
:
Use
HOST_UINT
.
(
arm_reload_out_hi
)
:
Use
HOST_UINT
.
(
output_multi_immediate
)
:
Use
HOST_UINT
.
(
int_log2
)
:
Use
HOST_UINT
.
(
arm_poke_function_name
)
:
Use
HOST_UINT
.
(
arm_output_epilogue
)
:
Use
arm_volatile_func
().
(
output_thumb_prologue
)
:
Use
arm_strip_name_encoding
().
Mon
Apr
10
15
:
40
:
59
2000
Richard
Kenner
<
kenner
@vlsi1
.
ultra
.
nyu
.
edu
>
Mon
Apr
10
15
:
40
:
59
2000
Richard
Kenner
<
kenner
@vlsi1
.
ultra
.
nyu
.
edu
>
*
sbitmap
.
c
(
sbitmap_a_subset_b_p
)
:
Rework
loop
to
avoid
potential
*
sbitmap
.
c
(
sbitmap_a_subset_b_p
)
:
Rework
loop
to
avoid
potential
...
...
gcc/config/arm/arm.c
View file @
e5951263
...
@@ -722,14 +722,14 @@ int
...
@@ -722,14 +722,14 @@ int
const_ok_for_arm
(
i
)
const_ok_for_arm
(
i
)
HOST_WIDE_INT
i
;
HOST_WIDE_INT
i
;
{
{
unsigned
HOST_WIDE_INT
mask
=
~
(
unsigned
HOST_WIDE_INT
)
0xFF
;
unsigned
HOST_WIDE_INT
mask
=
~
HOST_UINT
(
0xFF
)
;
/* For machines with >32 bit HOST_WIDE_INT, the bits above bit 31 must
/* For machines with >32 bit HOST_WIDE_INT, the bits above bit 31 must
be all zero, or all one. */
be all zero, or all one. */
if
((
i
&
~
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
!=
0
if
((
i
&
~
HOST_UINT
(
0xffffffff
)
)
!=
0
&&
((
i
&
~
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
&&
((
i
&
~
HOST_UINT
(
0xffffffff
)
)
!=
((
~
(
unsigned
HOST_WIDE_INT
)
0
)
!=
((
~
HOST_UINT
(
0
)
)
&
~
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)))
&
~
HOST_UINT
(
0xffffffff
)
)))
return
FALSE
;
return
FALSE
;
/* Fast return for 0 and powers of 2 */
/* Fast return for 0 and powers of 2 */
...
@@ -738,12 +738,12 @@ const_ok_for_arm (i)
...
@@ -738,12 +738,12 @@ const_ok_for_arm (i)
do
do
{
{
if
((
i
&
mask
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
==
0
)
if
((
i
&
mask
&
HOST_UINT
(
0xffffffff
)
)
==
0
)
return
TRUE
;
return
TRUE
;
mask
=
mask
=
(
mask
<<
2
)
|
((
mask
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
(
mask
<<
2
)
|
((
mask
&
HOST_UINT
(
0xffffffff
)
)
>>
(
32
-
2
))
|
~
(
(
unsigned
HOST_WIDE_INT
)
0xffffffff
);
>>
(
32
-
2
))
|
~
(
HOST_UINT
(
0xffffffff
)
);
}
while
(
mask
!=
~
(
unsigned
HOST_WIDE_INT
)
0xFF
);
}
while
(
mask
!=
~
HOST_UINT
(
0xFF
)
);
return
FALSE
;
return
FALSE
;
}
}
...
@@ -863,7 +863,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -863,7 +863,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
int
set_zero_bit_copies
=
0
;
int
set_zero_bit_copies
=
0
;
int
insns
=
0
;
int
insns
=
0
;
unsigned
HOST_WIDE_INT
temp1
,
temp2
;
unsigned
HOST_WIDE_INT
temp1
,
temp2
;
unsigned
HOST_WIDE_INT
remainder
=
val
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
;
unsigned
HOST_WIDE_INT
remainder
=
val
&
HOST_UINT
(
0xffffffff
)
;
/* Find out which operations are safe for a given CODE. Also do a quick
/* Find out which operations are safe for a given CODE. Also do a quick
check for degenerate cases; these can occur when DImode operations
check for degenerate cases; these can occur when DImode operations
...
@@ -882,7 +882,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -882,7 +882,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
break
;
break
;
case
IOR
:
case
IOR
:
if
(
remainder
==
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
if
(
remainder
==
HOST_UINT
(
0xffffffff
)
)
{
{
if
(
generate
)
if
(
generate
)
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
...
@@ -906,7 +906,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -906,7 +906,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
const0_rtx
));
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
const0_rtx
));
return
1
;
return
1
;
}
}
if
(
remainder
==
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
if
(
remainder
==
HOST_UINT
(
0xffffffff
)
)
{
{
if
(
reload_completed
&&
rtx_equal_p
(
target
,
source
))
if
(
reload_completed
&&
rtx_equal_p
(
target
,
source
))
return
0
;
return
0
;
...
@@ -926,7 +926,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -926,7 +926,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
source
));
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
source
));
return
1
;
return
1
;
}
}
if
(
remainder
==
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
if
(
remainder
==
HOST_UINT
(
0xffffffff
)
)
{
{
if
(
generate
)
if
(
generate
)
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
emit_insn
(
gen_rtx_SET
(
VOIDmode
,
target
,
...
@@ -1054,16 +1054,16 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -1054,16 +1054,16 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
word. We only look for the simplest cases, to do more would cost
word. We only look for the simplest cases, to do more would cost
too much. Be careful, however, not to generate this when the
too much. Be careful, however, not to generate this when the
alternative would take fewer insns. */
alternative would take fewer insns. */
if
(
val
&
(
unsigned
HOST_WIDE_INT
)
0xffff0000
)
if
(
val
&
HOST_UINT
(
0xffff0000
)
)
{
{
temp1
=
remainder
&
(
unsigned
HOST_WIDE_INT
)
0xffff0000
;
temp1
=
remainder
&
HOST_UINT
(
0xffff0000
)
;
temp2
=
remainder
&
0x0000ffff
;
temp2
=
remainder
&
0x0000ffff
;
/* Overlaps outside this range are best done using other methods. */
/* Overlaps outside this range are best done using other methods. */
for
(
i
=
9
;
i
<
24
;
i
++
)
for
(
i
=
9
;
i
<
24
;
i
++
)
{
{
if
((((
temp2
|
(
temp2
<<
i
))
if
((((
temp2
|
(
temp2
<<
i
))
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
==
remainder
)
&
HOST_UINT
(
0xffffffff
)
)
==
remainder
)
&&
!
const_ok_for_arm
(
temp2
))
&&
!
const_ok_for_arm
(
temp2
))
{
{
rtx
new_src
=
(
subtargets
rtx
new_src
=
(
subtargets
...
@@ -1201,11 +1201,11 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -1201,11 +1201,11 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
/* See if two shifts will do 2 or more insn's worth of work. */
/* See if two shifts will do 2 or more insn's worth of work. */
if
(
clear_sign_bit_copies
>=
16
&&
clear_sign_bit_copies
<
24
)
if
(
clear_sign_bit_copies
>=
16
&&
clear_sign_bit_copies
<
24
)
{
{
HOST_WIDE_INT
shift_mask
=
(((
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
HOST_WIDE_INT
shift_mask
=
(((
HOST_UINT
(
0xffffffff
)
)
<<
(
32
-
clear_sign_bit_copies
))
<<
(
32
-
clear_sign_bit_copies
))
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
);
&
HOST_UINT
(
0xffffffff
)
);
if
((
remainder
|
shift_mask
)
!=
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
if
((
remainder
|
shift_mask
)
!=
HOST_UINT
(
0xffffffff
)
)
{
{
if
(
generate
)
if
(
generate
)
{
{
...
@@ -1238,7 +1238,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -1238,7 +1238,7 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
{
{
HOST_WIDE_INT
shift_mask
=
(
1
<<
clear_zero_bit_copies
)
-
1
;
HOST_WIDE_INT
shift_mask
=
(
1
<<
clear_zero_bit_copies
)
-
1
;
if
((
remainder
|
shift_mask
)
!=
(
unsigned
HOST_WIDE_INT
)
0xffffffff
)
if
((
remainder
|
shift_mask
)
!=
HOST_UINT
(
0xffffffff
)
)
{
{
if
(
generate
)
if
(
generate
)
{
{
...
@@ -1280,9 +1280,9 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
...
@@ -1280,9 +1280,9 @@ arm_gen_constant (code, mode, val, target, source, subtargets, generate)
num_bits_set
++
;
num_bits_set
++
;
if
(
code
==
AND
||
(
can_invert
&&
num_bits_set
>
16
))
if
(
code
==
AND
||
(
can_invert
&&
num_bits_set
>
16
))
remainder
=
(
~
remainder
)
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
;
remainder
=
(
~
remainder
)
&
HOST_UINT
(
0xffffffff
)
;
else
if
(
code
==
PLUS
&&
num_bits_set
>
16
)
else
if
(
code
==
PLUS
&&
num_bits_set
>
16
)
remainder
=
(
-
remainder
)
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
;
remainder
=
(
-
remainder
)
&
HOST_UINT
(
0xffffffff
)
;
else
else
{
{
can_invert
=
0
;
can_invert
=
0
;
...
@@ -1406,7 +1406,7 @@ arm_canonicalize_comparison (code, op1)
...
@@ -1406,7 +1406,7 @@ arm_canonicalize_comparison (code, op1)
case
GT
:
case
GT
:
case
LE
:
case
LE
:
if
(
i
!=
(((
(
unsigned
HOST_WIDE_INT
)
1
)
<<
(
HOST_BITS_PER_WIDE_INT
-
1
))
if
(
i
!=
(((
HOST_UINT
(
1
)
)
<<
(
HOST_BITS_PER_WIDE_INT
-
1
))
-
1
)
-
1
)
&&
(
const_ok_for_arm
(
i
+
1
)
||
const_ok_for_arm
(
-
(
i
+
1
))))
&&
(
const_ok_for_arm
(
i
+
1
)
||
const_ok_for_arm
(
-
(
i
+
1
))))
{
{
...
@@ -1417,7 +1417,7 @@ arm_canonicalize_comparison (code, op1)
...
@@ -1417,7 +1417,7 @@ arm_canonicalize_comparison (code, op1)
case
GE
:
case
GE
:
case
LT
:
case
LT
:
if
(
i
!=
((
(
unsigned
HOST_WIDE_INT
)
1
)
<<
(
HOST_BITS_PER_WIDE_INT
-
1
))
if
(
i
!=
((
HOST_UINT
(
1
)
)
<<
(
HOST_BITS_PER_WIDE_INT
-
1
))
&&
(
const_ok_for_arm
(
i
-
1
)
||
const_ok_for_arm
(
-
(
i
-
1
))))
&&
(
const_ok_for_arm
(
i
-
1
)
||
const_ok_for_arm
(
-
(
i
-
1
))))
{
{
*
op1
=
GEN_INT
(
i
-
1
);
*
op1
=
GEN_INT
(
i
-
1
);
...
@@ -1427,7 +1427,7 @@ arm_canonicalize_comparison (code, op1)
...
@@ -1427,7 +1427,7 @@ arm_canonicalize_comparison (code, op1)
case
GTU
:
case
GTU
:
case
LEU
:
case
LEU
:
if
(
i
!=
~
((
unsigned
HOST_WIDE_INT
)
0
)
if
(
i
!=
~
(
HOST_UINT
(
0
)
)
&&
(
const_ok_for_arm
(
i
+
1
)
||
const_ok_for_arm
(
-
(
i
+
1
))))
&&
(
const_ok_for_arm
(
i
+
1
)
||
const_ok_for_arm
(
-
(
i
+
1
))))
{
{
*
op1
=
GEN_INT
(
i
+
1
);
*
op1
=
GEN_INT
(
i
+
1
);
...
@@ -2306,7 +2306,7 @@ arm_rtx_costs (x, code, outer)
...
@@ -2306,7 +2306,7 @@ arm_rtx_costs (x, code, outer)
if
(
GET_CODE
(
XEXP
(
x
,
1
))
==
CONST_INT
)
if
(
GET_CODE
(
XEXP
(
x
,
1
))
==
CONST_INT
)
{
{
unsigned
HOST_WIDE_INT
i
=
(
INTVAL
(
XEXP
(
x
,
1
))
unsigned
HOST_WIDE_INT
i
=
(
INTVAL
(
XEXP
(
x
,
1
))
&
(
unsigned
HOST_WIDE_INT
)
0xffffffff
);
&
HOST_UINT
(
0xffffffff
)
);
int
add_cost
=
const_ok_for_arm
(
i
)
?
4
:
8
;
int
add_cost
=
const_ok_for_arm
(
i
)
?
4
:
8
;
int
j
;
int
j
;
...
@@ -4360,9 +4360,9 @@ arm_reload_in_hi (operands)
...
@@ -4360,9 +4360,9 @@ arm_reload_in_hi (operands)
if
(
lo
==
4095
)
if
(
lo
==
4095
)
lo
&=
0x7ff
;
lo
&=
0x7ff
;
hi
=
((((
offset
-
lo
)
&
(
HOST_WIDE_INT
)
0xffffffff
)
hi
=
((((
offset
-
lo
)
&
HOST_INT
(
0xffffffff
)
)
^
(
HOST_WIDE_INT
)
0x80000000
)
^
HOST_INT
(
0x80000000
)
)
-
(
HOST_WIDE_INT
)
0x80000000
);
-
HOST_INT
(
0x80000000
)
);
if
(
hi
+
lo
!=
offset
)
if
(
hi
+
lo
!=
offset
)
abort
();
abort
();
...
@@ -4506,9 +4506,9 @@ arm_reload_out_hi (operands)
...
@@ -4506,9 +4506,9 @@ arm_reload_out_hi (operands)
if
(
lo
==
4095
)
if
(
lo
==
4095
)
lo
&=
0x7ff
;
lo
&=
0x7ff
;
hi
=
((((
offset
-
lo
)
&
(
HOST_WIDE_INT
)
0xffffffff
)
hi
=
((((
offset
-
lo
)
&
HOST_INT
(
0xffffffff
)
)
^
(
HOST_WIDE_INT
)
0x80000000
)
^
HOST_INT
(
0x80000000
)
)
-
(
HOST_WIDE_INT
)
0x80000000
);
-
HOST_INT
(
0x80000000
)
);
if
(
hi
+
lo
!=
offset
)
if
(
hi
+
lo
!=
offset
)
abort
();
abort
();
...
@@ -6179,8 +6179,7 @@ output_mov_immediate (operands)
...
@@ -6179,8 +6179,7 @@ output_mov_immediate (operands)
n_ones
++
;
n_ones
++
;
if
(
n_ones
>
16
)
/* Shorter to use MVN with BIC in this case. */
if
(
n_ones
>
16
)
/* Shorter to use MVN with BIC in this case. */
output_multi_immediate
(
operands
,
"mvn%?
\t
%0, %1"
,
"bic%?
\t
%0, %0, %1"
,
1
,
output_multi_immediate
(
operands
,
"mvn%?
\t
%0, %1"
,
"bic%?
\t
%0, %0, %1"
,
1
,
~
n
);
~
n
);
else
else
output_multi_immediate
(
operands
,
"mov%?
\t
%0, %1"
,
"orr%?
\t
%0, %0, %1"
,
1
,
n
);
output_multi_immediate
(
operands
,
"mov%?
\t
%0, %1"
,
"orr%?
\t
%0, %0, %1"
,
1
,
n
);
...
@@ -6227,7 +6226,7 @@ output_multi_immediate (operands, instr1, instr2, immed_op, n)
...
@@ -6227,7 +6226,7 @@ output_multi_immediate (operands, instr1, instr2, immed_op, n)
HOST_WIDE_INT
n
;
HOST_WIDE_INT
n
;
{
{
#if HOST_BITS_PER_WIDE_INT > 32
#if HOST_BITS_PER_WIDE_INT > 32
n
&=
(
unsigned
HOST_WIDE_INT
)
0xffffffff
;
n
&=
HOST_UINT
(
0xffffffff
)
;
#endif
#endif
if
(
n
==
0
)
if
(
n
==
0
)
...
@@ -6375,7 +6374,7 @@ int_log2 (power)
...
@@ -6375,7 +6374,7 @@ int_log2 (power)
{
{
HOST_WIDE_INT
shift
=
0
;
HOST_WIDE_INT
shift
=
0
;
while
((((
(
HOST_WIDE_INT
)
1
)
<<
shift
)
&
power
)
==
0
)
while
((((
HOST_INT
(
1
)
)
<<
shift
)
&
power
)
==
0
)
{
{
if
(
shift
>
31
)
if
(
shift
>
31
)
abort
();
abort
();
...
@@ -6823,7 +6822,7 @@ arm_poke_function_name (stream, name)
...
@@ -6823,7 +6822,7 @@ arm_poke_function_name (stream, name)
ASM_OUTPUT_ASCII
(
stream
,
name
,
length
);
ASM_OUTPUT_ASCII
(
stream
,
name
,
length
);
ASM_OUTPUT_ALIGN
(
stream
,
2
);
ASM_OUTPUT_ALIGN
(
stream
,
2
);
x
=
GEN_INT
(
((
unsigned
HOST_WIDE_INT
)
0xff000000
)
+
alignlength
);
x
=
GEN_INT
(
HOST_UINT
(
0xff000000
)
+
alignlength
);
ASM_OUTPUT_INT
(
stream
,
x
);
ASM_OUTPUT_INT
(
stream
,
x
);
}
}
...
@@ -6925,8 +6924,7 @@ arm_output_epilogue ()
...
@@ -6925,8 +6924,7 @@ arm_output_epilogue ()
int
frame_size
=
get_frame_size
();
int
frame_size
=
get_frame_size
();
rtx
eh_ofs
=
cfun
->
machine
->
eh_epilogue_sp_ofs
;
rtx
eh_ofs
=
cfun
->
machine
->
eh_epilogue_sp_ofs
;
FILE
*
f
=
asm_out_file
;
FILE
*
f
=
asm_out_file
;
int
volatile_func
=
(
optimize
>
0
int
volatile_func
=
arm_volatile_func
();
&&
TREE_THIS_VOLATILE
(
current_function_decl
));
int
return_regnum
;
int
return_regnum
;
if
(
use_return_insn
(
FALSE
)
&&
return_used_this_function
)
if
(
use_return_insn
(
FALSE
)
&&
return_used_this_function
)
...
@@ -7493,7 +7491,6 @@ arm_expand_prologue ()
...
@@ -7493,7 +7491,6 @@ arm_expand_prologue ()
if
(
profile_flag
||
profile_block_flag
||
TARGET_NO_SCHED_PRO
)
if
(
profile_flag
||
profile_block_flag
||
TARGET_NO_SCHED_PRO
)
emit_insn
(
gen_blockage
());
emit_insn
(
gen_blockage
());
}
}
/* If CODE is 'd', then the X is a condition operand and the instruction
/* If CODE is 'd', then the X is a condition operand and the instruction
should only be executed if the condition is true.
should only be executed if the condition is true.
...
@@ -9210,7 +9207,7 @@ output_thumb_prologue (f)
...
@@ -9210,7 +9207,7 @@ output_thumb_prologue (f)
asm_fprintf
(
f
,
"
\t
.code
\t
16
\n
"
);
asm_fprintf
(
f
,
"
\t
.code
\t
16
\n
"
);
#ifdef ARM_PE
#ifdef ARM_PE
if
(
arm_dllexport_name_p
(
name
))
if
(
arm_dllexport_name_p
(
name
))
name
=
ARM_STRIP_NAME_ENCODING
(
name
);
name
=
arm_strip_name_encoding
(
name
);
#endif
#endif
asm_fprintf
(
f
,
"
\t
.globl %s%U%s
\n
"
,
STUB_NAME
,
name
);
asm_fprintf
(
f
,
"
\t
.globl %s%U%s
\n
"
,
STUB_NAME
,
name
);
asm_fprintf
(
f
,
"
\t
.thumb_func
\n
"
);
asm_fprintf
(
f
,
"
\t
.thumb_func
\n
"
);
...
...
gcc/config/arm/arm.h
View file @
e5951263
...
@@ -457,11 +457,11 @@ Unrecognized value in TARGET_CPU_DEFAULT.
...
@@ -457,11 +457,11 @@ Unrecognized value in TARGET_CPU_DEFAULT.
{"callee-super-interworking", THUMB_FLAG_CALLEE_SUPER_INTERWORKING, \
{"callee-super-interworking", THUMB_FLAG_CALLEE_SUPER_INTERWORKING, \
"Thumb: Assume non-static functions may be called from ARM code" }, \
"Thumb: Assume non-static functions may be called from ARM code" }, \
{"no-callee-super-interworking", -THUMB_FLAG_CALLEE_SUPER_INTERWORKING, \
{"no-callee-super-interworking", -THUMB_FLAG_CALLEE_SUPER_INTERWORKING, \
""},
\
"" },
\
{"caller-super-interworking", THUMB_FLAG_CALLER_SUPER_INTERWORKING, \
{"caller-super-interworking", THUMB_FLAG_CALLER_SUPER_INTERWORKING, \
"Thumb: Assume function pointers may go to non-Thumb aware code" }, \
"Thumb: Assume function pointers may go to non-Thumb aware code" }, \
{"no-caller-super-interworking", -THUMB_FLAG_CALLER_SUPER_INTERWORKING, \
{"no-caller-super-interworking", -THUMB_FLAG_CALLER_SUPER_INTERWORKING, \
"" }, \
"" }, \
SUBTARGET_SWITCHES \
SUBTARGET_SWITCHES \
{"", TARGET_DEFAULT, "" } \
{"", TARGET_DEFAULT, "" } \
}
}
...
@@ -1217,9 +1217,9 @@ enum reg_class
...
@@ -1217,9 +1217,9 @@ enum reg_class
else \
else \
break; \
break; \
\
\
high = ((((val - low) &
(unsigned long)0xffffffff
) \
high = ((((val - low) &
HOST_UINT (0xffffffff)
) \
^
(unsigned long)0x80000000
) \
^
HOST_UINT (0x80000000)
) \
-
(unsigned long)0x80000000
); \
-
HOST_UINT (0x80000000)
); \
/* Check for overflow or zero */
\
/* Check for overflow or zero */
\
if (low == 0 || high == 0 || (high + low != val)) \
if (low == 0 || high == 0 || (high + low != val)) \
break; \
break; \
...
@@ -1840,11 +1840,13 @@ typedef struct
...
@@ -1840,11 +1840,13 @@ typedef struct
/* This has to be handled by a function because more than part of the
/* This has to be handled by a function because more than part of the
ARM backend uses funciton name prefixes to encode attributes. */
ARM backend uses funciton name prefixes to encode attributes. */
#undef STRIP_NAME_ENCODING
#define STRIP_NAME_ENCODING(VAR, SYMBOL_NAME) \
#define STRIP_NAME_ENCODING(VAR, SYMBOL_NAME) \
(VAR) = arm_strip_name_encoding (SYMBOL_NAME)
(VAR) = arm_strip_name_encoding (SYMBOL_NAME)
/* This is how to output a reference to a user-level label named NAME.
/* This is how to output a reference to a user-level label named NAME.
`assemble_name' uses this. */
`assemble_name' uses this. */
#undef ASM_OUTPUT_LABELREF
#define ASM_OUTPUT_LABELREF(FILE, NAME) \
#define ASM_OUTPUT_LABELREF(FILE, NAME) \
fprintf (FILE, "%s%s", USER_LABEL_PREFIX, arm_strip_name_encoding (NAME))
fprintf (FILE, "%s%s", USER_LABEL_PREFIX, arm_strip_name_encoding (NAME))
...
@@ -2628,17 +2630,26 @@ extern int making_const_table;
...
@@ -2628,17 +2630,26 @@ extern int making_const_table;
|| (TARGET_ARM && (CODE == '?')) \
|| (TARGET_ARM && (CODE == '?')) \
|| (TARGET_THUMB && (CODE == '_')))
|| (TARGET_THUMB && (CODE == '_')))
/* Output an operand of an instruction. */
/* Output an operand of an instruction. */
#define PRINT_OPERAND(STREAM, X, CODE) \
#define PRINT_OPERAND(STREAM, X, CODE) \
arm_print_operand (STREAM, X, CODE)
arm_print_operand (STREAM, X, CODE)
#define ARM_SIGN_EXTEND(x) ((HOST_WIDE_INT) \
/* Create an [unsigned] host sized integer declaration that
(HOST_BITS_PER_WIDE_INT <= 32 ? (x) \
avoids compiler warnings. */
: (((x) & (unsigned HOST_WIDE_INT) 0xffffffff) | \
#ifdef __STDC__
(((x) & (unsigned HOST_WIDE_INT) 0x80000000) \
#define HOST_INT(x) ((signed HOST_WIDE_INT) x##UL)
? ((~ (HOST_WIDE_INT) 0) \
#define HOST_UINT(x) ((unsigned HOST_WIDE_INT) x##UL)
& ~ (unsigned HOST_WIDE_INT) 0xffffffff) \
#else
#define HOST_INT(x) ((HOST_WIDE_INT) x)
#define HOST_UINT(x) ((unsigned HOST_WIDE_INT) x)
#endif
#define ARM_SIGN_EXTEND(x) ((HOST_WIDE_INT) \
(HOST_BITS_PER_WIDE_INT <= 32 ? (x) \
: (((x) & HOST_UINT (0xffffffff)) | \
(((x) & HOST_UINT (0x80000000)) \
? ((~ HOST_INT (0)) \
& ~ HOST_UINT(0xffffffff)) \
: 0))))
: 0))))
/* Output the address of an operand. */
/* Output the address of an operand. */
...
@@ -2814,12 +2825,13 @@ extern int making_const_table;
...
@@ -2814,12 +2825,13 @@ extern int making_const_table;
when running in 26-bit mode. */
when running in 26-bit mode. */
#define RETURN_ADDR_MASK26 (0x03fffffc)
#define RETURN_ADDR_MASK26 (0x03fffffc)
#ifdef DWARF2_DEBUGGING_INFO
/* Pick up the return address upon entry to a procedure. Used for
/* Pick up the return address upon entry to a procedure. Used for
dwarf2 unwind information. This also enables the table driven
dwarf2 unwind information. This also enables the table driven
mechanism. */
mechanism. */
#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, LR_REGNUM)
#define INCOMING_RETURN_ADDR_RTX gen_rtx_REG (Pmode, LR_REGNUM)
#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (LR_REGNUM)
#define DWARF_FRAME_RETURN_COLUMN DWARF_FRAME_REGNUM (LR_REGNUM)
#endif
/* Used to mask out junk bits from the return address, such as
/* Used to mask out junk bits from the return address, such as
processor state, interrupt status, condition codes and the like. */
processor state, interrupt status, condition codes and the like. */
...
...
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