Anonymous | Login | Signup for a new account | 2023-03-20 17:46 CET |
Main | My View | View Issues |
Viewing Issue Simple Details [ Jump to Notes ] | [ View Advanced ] [ Issue History ] [ Print ] | |||||||||||
ID | Category | Severity | Reproducibility | Date Submitted | Last Update | |||||||
0000177 | [libFirm] representation | crash | always | 2016-07-18 17:52 | 2016-07-18 20:58 | |||||||
Reporter | tehMillhouse | View Status | public | |||||||||
Assigned To | ||||||||||||
Priority | normal | Resolution | open | |||||||||
Status | new | Product Version | ||||||||||
Summary | 0000177: Handling of offsets in initializer expressions leads to assembler failing | |||||||||||
Description |
An initializer expression such as static void * oops[1] = { &oops - 1 }; is represented internally as "Add P(Address P[oops], Const Is<0xFFFFFFFC>)". This eventually results in the generated assembly being oops: .long oops + 0xfffffffc Which will fail to assemble if the resulting value doesn't fit into 32 bits (e.g. if there's other static data before this in the file). (Of course, when using the amd64 backend, the resulting constants are longer, but the problem persists) I've attached a somewhat minimal example that triggers the problem. |
|||||||||||
Additional Information | ||||||||||||
Tags | No tags attached. | |||||||||||
Attached Files |
![]() |
|||||||||||
|
![]() |
|||
Date Modified | Username | Field | Change |
2016-07-18 17:52 | tehMillhouse | New Issue | |
2016-07-18 17:52 | tehMillhouse | File Added: test.c | |
2016-07-18 20:58 | Matze | Note Added: 0000271 |
Mantis 1.1.5[^] Copyright © 2000 - 2008 Mantis Group |