Here is a shorter snippet that exhibits the issue, however in this case both
-O2 and -O3 fail with the same error
Error: immediate value out of range -- `movt r1,-77'
// Shutdown lock data
union shutdown_data {
struct {
SSHORT flag;
SSHORT delay;
} data_items;
SLONG data_long;
};
void notify_shutdown(Database* dbb)
{
shutdown_data data;
data.data_items.flag = 1;
data.data_items.delay = -77;
LOCK_write_data(dbb->dbb_lock->lck_id, data.data_long);
}
the called function is in another source file and looks like this
SLONG LOCK_write_data(SRQ_PTR request_offset, SLONG data)
{
/**************************************
*
* L O C K _ w r i t e _ d a t a
*
**************************************
*
* Functional description
* Write a longword into the lock block.
*
**************************************/
LOCK_TRACE(("LOCK_write_data (%ld)\n", request_offset));
lrq* request = get_request(request_offset);
acquire(request->lrq_owner);
++LOCK_header->lhb_write_data;
request = (LRQ) SRQ_ABS_PTR(request_offset); /* Re-init after a
potential remap */
lbl* lock = (LBL) SRQ_ABS_PTR(request->lrq_lock);
remove_que(&lock->lbl_lhb_data);
if (lock->lbl_data = data)
insert_data_que(lock);
if (lock->lbl_series < LCK_MAX_SERIES)
++LOCK_header->lhb_operations[lock->lbl_series];
else
++LOCK_header->lhb_operations[0];
release(request->lrq_owner);
return data;
}
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/730440
Title:
armel: incorrect immediate for movt
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs