This is the mail archive of the mailing list for the GCC project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [C++ patch] Set attributes for C++ runtime library calls

On Thu, Aug 22, 2013 at 4:14 PM, Mike Stump <> wrote:
> On Aug 22, 2013, at 9:45 AM, Gabriel Dos Reis <> wrote:
>>> I.e. can I have something like
>>> int a;
>>> test()
>>> {
>>>  int *b=new (int);
>>> }
>>> with custom implementation of new that returns &a?
>> If the user-supplied operator new returns &a, then it must
>> also ensure that 'a' is not used anywhere else -- e.g. I you can't
>> do lvalue-to-value conversion on 'a' to see what is written there.
> This is wrong, in the c++97 standard there is no such limitation or restriction.

Please, elaborate.

>> Because its storage has been reused.  That is, aliasing is framed
>> in terms of object lifetime and uniqueness of ownership.
> Nope, this is wrong.  Example:
> int i, j;
> main() {
>         i = 1;
>         j = i;
>         i = 2;
>         char *cpi = (char*)&i;
>         char *cpj = (char*)&j;
>         for (k= 0; k < sizeof (int); ++k)
>                 cpj[k] = cpi[k];
> }
> This is well defined.  i and j exist, as do the character objects that are pointed to by cpi and cpj.  One can use them and interleave them, they can alias, and the character objects are not unique from i and j.

but, this isn't what we are talking  about -- that pointers to
character types can
alias pretty much anything is admitted and isn't under debate; GCC already copes
with that.

-- Gaby

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]