All the local variables in the C source code, i.e. 'x' and 'p' are pointers now, in fact they are pointers with one level deeper nesting level. What I mean is, 'x' is an 'int' in the C source, but '%x' is 'i32*'. 'p' is 'int*' in the C source, but '%p' is 'i32**'. Doesn't it make the IR naming convention a misnoer compared to their C counterpart? Shouldn't '%x.addr' or '%p.addr' a better naming convention? Is there anything that I am missing?
You're right that the name isn't the most accurate from a clang point of view, redirecting to cfe-dev@ if anyone has an opinion from the clang side.
Note though that in LLVM the SSA value names are just for debugging, they are even stripped entirely by default in a Release clang "normal" path.