https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108875

            Bug ID: 108875
           Summary: Possible wrong error message
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jankowski938 at gmail dot com
  Target Milestone: ---

If the size of the integer differs from the function pointer size gcc emits
"error: initializer element is not constant". I think it is not the correct one
in this case.

Example code: 

#define STACK_START 0x2000000

void reset_handler(void);
const uint64_t  vector_table[]  =
{
    STACK_START,
    (uint64_t)&reset_handler
};
void rest_handler(void)
{
}

It will compile for targets where inter type size is the same as the size of
the function pointer. Examples below:

godbolt.org/z/3cj97YzTd and godbolt.org/z/16YoK433r and godbolt.org/z/YoP9bx86a
  • [Bug c/108875] New: Possible wr... jankowski938 at gmail dot com via Gcc-bugs

Reply via email to