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: g...@gcc.gnu.org

        ReportedBy: g...@gcc.gnu.org

                CC: demiurg_...@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.

Reply via email to