[Bug middle-end/100595] ICE: output_operand with static const int of address of label + difference of label
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100595 Andrew Pinski changed: What|Removed |Added CC||141242068 at smail dot nju.edu.cn --- Comment #5 from Andrew Pinski --- *** Bug 112499 has been marked as a duplicate of this bug. ***
[Bug middle-end/100595] ICE: output_operand with static const int of address of label + difference of label
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100595 --- Comment #4 from Andrew Pinski --- Updated testcase: ``` typedef __UINTPTR_TYPE__ uintptr_t; int test2() { static uintptr_t a = (uintptr_t)(&&l1 + ((char *)&&l1 - (char *)&&l2)); l1: l2: return (int)a; } ```
[Bug middle-end/100595] ICE: output_operand with static const int of address of label + difference of label
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100595 --- Comment #3 from joseph at codesourcery dot com --- My old model of constant expressions for GNU extensions says that the difference of two label addresses is a "label difference constant expression", which is valid as a static initializer by itself but not when added to anything. https://www.polyomino.org.uk/computer/c/const-exprs-gnu.txt
[Bug middle-end/100595] ICE: output_operand with static const int of address of label + difference of label
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100595 Richard Biener changed: What|Removed |Added Keywords||accepts-invalid --- Comment #2 from Richard Biener --- It's using a GNU extension, but we likely shouldn't accept it as a valid constant initializer.
[Bug middle-end/100595] ICE: output_operand with static const int of address of label + difference of label
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=100595 Martin Liška changed: What|Removed |Added Last reconfirmed||2021-05-14 Status|UNCONFIRMED |NEW CC||jsm28 at gcc dot gnu.org, ||marxin at gcc dot gnu.org Ever confirmed|0 |1 --- Comment #1 from Martin Liška --- Is it really a valid C code?