[LLVMdev] Documentation of bitcasts in calls

Clemens Hammacher hammacher at cs.uni-saarland.de
Mon Jul 13 06:07:54 PDT 2015


Hi Thomas,

was clang generates as call target here is a constant bitcast 
expression: http://llvm.org/docs/LangRef.html#constant-expressions

Cheers,
Clemens


On 13.07.15 13:46, Thomas Ströder wrote:
> Dear all,
>
> I just stumbled over the following instruction in the LLVM IR of a C
> program compiled with clang:
>
> %26 = call i32 (...)* bitcast (i32 (i32, i32, i32, i32, i32)*
> @KeWaitForSingleObject to i32 (...)*)(i32 %23, i32 %24, i32 %25, i32 0,
> i32 0)
>
> Since our LLVM Parser choked on this instruction, I tried to check the
> documentation, but did not find anything about such nested bitcasts
> within calls. What is the exact syntax and semantics (while I can guess
> the latter, especially the former is interesting for me when building a
> parser for LLVM IR) for such instructions and/or where is this
> documented? In particular, the parantheses around the arguments of the
> bitcast are confusing me.
>
> Alternatively, is there a way to tell clang not to inline such bitcasts,
> but have them in a separate instruction before and use the result in the
> call?
>
> Best regards,
>
>    Thomas
>
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>


-- 
Clemens Hammacher
Researcher / PhD Student

Software Engineering Chair (Prof. Zeller)
Saarland University, Computer Science
Building E1 1, Room 1.16.1

Tel. +49 (0)681 302-70983 · Fax +49 (0)681 302-70972
hammacher at cs.uni-saarland.de · http://www.st.cs.uni-saarland.de/~hammacher/





More information about the llvm-dev mailing list