Roundtrip clang -> llc -> clang fails


I am not sure if this is a bug or not.

I have the following non-sense C module exc_alloc.c:

#include <windows.h>

void *AllocMem() {
     HANDLE heap = GetProcessHeap();
     void *p = HeapAlloc(heap, HEAP_GENERATE_EXCEPTIONS | HEAP_ZERO_MEMORY, 16*1024*1014*1024);
     return p;

If I execute the following commands

clang -S -emit-llvm -o exc_alloc.ll exc_alloc.c
llc -filetype=asm exc_alloc.ll
clang -c exc_alloc.s

then I get the error messages

exc_alloc.s:11:31: error: invalid variant '0'
         callq *__imp_GetProcessHeap@0(%rip)
exc_alloc.s:16:27: error: invalid variant '20'
         callq *__imp_HeapAlloc@20(%rip)

Do I miss something here?


Looks like a bug to me.


MC (the part of LLVM that does asm parsing) can't parse COFF asm yet.
So yes it's a bug, but expected.

- Michael Spencer

Thanks for the explanation. I thought the asm parser were finished....