Thread View: gnu.gcc.bug
1 messages
1 total messages
Started by Joseph Francis
Mon, 12 Oct 1992 17:08
Bug: i860 address operands in gcc-2.2.2
Author: Joseph Francis
Date: Mon, 12 Oct 1992 17:08
Date: Mon, 12 Oct 1992 17:08
38 lines
1565 bytes
1565 bytes
In gcc-2.2.2, targeted for the i860 processor, the following code exists
in file "i860.h", in the configuration directory:
under PRINT_OPERAND(FILE, X, CODE)
if (GET_CODE (X) == MEM)
PRINT_OPERAND_PART (FILE, XEXP (X, 0),
const_int_operand (XEXP (X, 0))
? OPERAND_HIGH_PART
: OPERAND_HIGH_ADJ_PART);
this produces assembler instructions for constant integer address
operands (i.e., fixed memory locations, here 0xabcdefgh) with bad
offset adjust instructions.
orh h%0xabcdefgh,r0,r31
st.l r16,l%0xabcdefgh(r31)
and when assembled and executed the resulting address
becomes 0xabceefgh
the code should be something more like:
if (GET_CODE (X) == MEM)
PRINT_OPERAND_PART (FILE, XEXP (X, 0),
OPERAND_HIGH_ADJ_PART);
which produces the code
orh ha%0xabcdefgh,r0,r31
st.l r16,l%0xabcdefgh(r31)
Works for me.
--
| Le Jojo: Fresh 'n' Clean, speaking out to the way you want to live
| today; American - All American; doing, a bit so, and even more so.
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads