[LLVMdev] Pointer to String Constant

Bill Wendling wendling at apple.com
Thu Mar 4 17:42:21 PST 2010


On Mar 4, 2010, at 4:50 PM, Nyx wrote:

> 
> I'm writing a C compiler in OCaml and I've run into a small problem. I wrote
> the following piece of code to generate a pointer to a string constant, so I
> could compile C expressions of the form "const char* p = "test\n";" :
> 
> let strval = const_stringz codecontext v in
> dump_value strval;
> dump_value i32_zero;
> const_gep strval [| i32_zero; i32_zero |]
> 
> The dump statements I put confirm that the string array and the index values
> have the types I would expect:
> 
> [6 x i8] c"test\0A\00"
> i32 0
> 
> However, the code still seems to break an assertion:
> 
> Constants.cpp:1487: static llvm::Constant*
> llvm::ConstantExpr::getGetElementPtr(llvm::Constant*, llvm::Value* const*,
> unsigned int): Assertion `Ty && "GEP indices invalid!"' failed.
> Aborted
> 
> Could someone tell me what I'm doing wrong here?

It's hard to tell without more of the source code, but you probably need something like:

	getelementptr [6 x i8] * c"test\0A\00", i32 0, i32 0

-wb^-1





More information about the llvm-dev mailing list