In case anyone cares, dragonegg gets this right. This shows that (as suspected) the problem is in the gcc parts of llvm-gcc rather than in the gimple -> IR conversion itself, since dragonegg has the same conversion logic as llvm-gcc. Ciao, Duncan.