Preservance of function variables in the bytecode

Hello, LLVM-Dev guys.
I just wonder if function variables are preserved in the bytecode.

For example, are i and j in the following function preserved in .bc?

int sum(int i, int j){
    int k;
    k = i + j;
    return k;
}

I tested this with "llc -march=c" and found this was converted to

int sum(int ltmp_0_1, int ltmp_1_1) {
  return (ltmp_1_1 + ltmp_0_1);
}

Therefore, it seems that they are not preserved in the bytecode, right?
If it is not, (i.e., they are kept) how can I extract the variables from the bytecode?
I got really become to enjoy LLVM's magic.
Thank you very much.

Seung Jae Lee

This is what the llvm assembly looks like when I compile your example:

int %sum(int %i, int %j) {
entry:
         %i_addr = alloca int ; <int*> [#uses=2]
         %j_addr = alloca int ; <int*> [#uses=2]
         %retval = alloca int, align 4 ; <int*> [#uses=2]
         %tmp = alloca int, align 4 ; <int*> [#uses=2]
         %k = alloca int, align 4 ; <int*> [#uses=2]
         "alloca point" = cast int 0 to int ; <int> [#uses=0]
         store int %i, int* %i_addr
         store int %j, int* %j_addr
         %tmp = load int* %i_addr ; <int> [#uses=1]
         %tmp1 = load int* %j_addr ; <int> [#uses=1]
         %tmp2 = add int %tmp, %tmp1 ; <int> [#uses=1]
         store int %tmp2, int* %k
         %tmp3 = load int* %k ; <int> [#uses=1]
         store int %tmp3, int* %tmp
         %tmp4 = load int* %tmp ; <int> [#uses=1]
         store int %tmp4, int* %retval
         br label %return

return: ; preds = %entry
         %retval = load int* %retval ; <int> [#uses=1]
         ret int %retval
}

You can see that the names i, j, and k are preserved... but this is an artifact
of whatever front-end you use (in this case llvm-gcc 4.0.1). A front end is not
required to keep source level variable names, it is just a convenience. This is actually
a little out of date, a more recent output would have i32 instead of int.

(Note the reason this looks so much longer than your C-backend code is that this has not
been optimized)

Why are you trying to recover variable names?