[LLVMdev] [cfe-dev] For alias analysis, It's gcc too aggressive or LLVM need to improve?
Hal Finkel
hfinkel at anl.gov
Sat Aug 9 15:07:06 PDT 2014
----- Original Message -----
> From: "Tim Northover" <t.p.northover at gmail.com>
> To: "Jonas Wagner" <jonas.wagner at epfl.ch>
> Cc: "cfe-dev Developers" <cfe-dev at cs.uiuc.edu>, "LLVM Developers Mailing List" <llvmdev at cs.uiuc.edu>
> Sent: Friday, August 8, 2014 6:54:50 AM
> Subject: Re: [cfe-dev] [LLVMdev] For alias analysis, It's gcc too aggressive or LLVM need to improve?
>
> > your C program invokes undefined behavior when it dereferences
> > pointers that
> > have been converted to other types. See for example
> > http://stackoverflow.com/questions/4810417/c-when-is-casting-between-pointer-types-not-undefined-behavior
>
> I don't think it's quite that simple.The type-based aliasing rules
> come from 6.5p7 of C11, I think. That says:
>
> "An object shall have its stored value accessed only by an lvalue
> expression that has one of
> the following types:
> + a type compatible with the effective type of the object,
> [...]
> + an aggregate or union type that includes one of the
> aforementioned
> types among its members [...]"
>
> That would seem to allow this usage: aa (effective type "int") is
> being accessed via an lvalue "ptr[i]->index" of type "int".
>
> The second point would even seem to allow something like "ptr[i] =
> ..." if aa was declared "int aa[2];", though that seems to be going
> too far. It also seems to be very difficult to pin down a meaning
> (from the standard) for "a->b" if a is not a pointer to an object
> with
> the correct effective type. So the entire area is probably one that's
> open to interpretation.
>
> I've added cfe-dev to the list; they're the *professional* language
> lawyers.
Coincidentally, this also seems to be PR20585 (adding Jiangning Liu, the reporter of that bug, to this thread too).
-Hal
>
> Cheers.
>
> Tim.
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the llvm-dev
mailing list