[LLVMdev] c const

Daniel Berlin dberlin at dberlin.org
Thu Aug 9 19:30:14 PDT 2007


This certainly doesn't occur in gcc mainline.
In fact, I improved the error message, and added a error test to gcc
just yesterday.


On 8/9/07, Chris Lattner <sabre at nondot.org> wrote:
> On Wed, 8 Aug 2007, Nikhil A. Patil wrote:
> > I think I found a bug. I don't know if it's in upstream gcc or llvm-gcc4.
>
> Looks like a bug, please file a bugzilla entry.
>
> -Chris
>
> > int func()
> > {
> >    const int *arr;
> >    arr[0] = 1;
> > }
> >
> > $ llvm-gcc main.c -c; echo $?
> > 0
> >
> > $ gcc main.c -c
> > main.c: In function 'func':
> > main.c:4: error: assignment of read-only location
> >
> > The difference disappears when arr[0] is replaced by *arr.
> >
> > (I tried the above with gcc 4.1.2, 3.4.6, 4.0.3. (I don't have access
> > to 4.0.1, off which llvm-gcc seems to be derived.)
> >
> > nikhil
> >
> > On 08/08/2007, Chris Lattner <sabre at nondot.org> wrote:
> >> This property isn't preserved on the llvm ir, because const can always
> >> be cast away.  If you want mod information, then I suggest using the
> >> aliasanalysis interface to get mod ref info for a call.
> >>
> >> -Chris
> >>
> >> http://nondot.org/sabre
> >> http://llvm.org
> >>
> >> On Aug 8, 2007, at 12:07 AM, "Ryan M. Lefever" <lefever at crhc.uiuc.edu>
> >> wrote:
> >>
> >>> How is c's const keyword translated when compiling c into llvm
> >>> bytecode.
> >>>  I'm specifically interested in const pointer function arguments.
> >>> Consider a function declared as follows in c:
> >>>
> >>> void f(const int* arg);
> >>>
> >>> When I examine f in llvm bytecode, how can I tell that arg is a
> >>> pointer,
> >>> whose contents can only be read, not written.
> >>>
> >>> Regards,
> >>> Ryan
> >>> _______________________________________________
> >>> LLVM Developers mailing list
> >>> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> >>> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >> _______________________________________________
> >> LLVM Developers mailing list
> >> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >>
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
>
> -Chris
>
> --
> http://nondot.org/sabre/
> http://llvm.org/
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



More information about the llvm-dev mailing list