[Bug target/56263] New: [avr] Provide strict address-space checking

gjl at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sat Feb 9 10:30:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56263

             Bug #: 56263
           Summary: [avr] Provide strict address-space checking
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: enhancement
          Priority: P3
         Component: target
        AssignedTo: gjl@gcc.gnu.org
        ReportedBy: gjl@gcc.gnu.org
                CC: demiurg_spb@freemail.ru
            Target: avr


Created attachment 29401
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=29401
Test case that shall error with strict address spaces

The intrinsic address spaces introduced with PR49868 are imlemented in such a
way that each address space is a subset of each other.

This allows code like follows to operate as expected and without warnings:

char read_char (const char *address, int data_in_flash)
{
    if (data_in_flash)
        return *(const __flash char*) address;
    else
        return *address;
}

Currently, targetm.addr_space_subset_p returns always true in order to allow
pointer casts like above without diagnostics.

avr.c:avr_addr_space_subset_p() could be implemented in such a way, that it
returns true iff the respective ASes are physical subsets of each other, and
not only if their address, regarded as number, are subsets.

In order not to change the current ABI, this can be achieved by a new command
line option like -maddr-space-subset that allows the user to pick the model of
his favor.



More information about the Gcc-bugs mailing list