In these days I’ve integrated llc code into my compiler.
I had an undefined behaviour because when cl::AddExtraVersionPrinter(TargetRegistry::printRegisteredTargetsForVersion) is called, the modules I give to the code in input to compile got somehow “corrupted" by this function.
It is definitely an undefined behaviour because every debug I do, modules gets different changes, producing different assertions every run:
- Target triple string gets changes with null characters (“\0\0\0\0\0\0\0\0\0\0\0”), or other values that have nothing to do with an llvm triple
- Head of the function list contained in the module becomes NULL (I said functions but maybe other components may be nullified as well)
I tried to see where the modules change, and I figured out that 6/10 times the target triple is ok before that instruction, then it takes weird changes after it.
The problem is that function because when I removed it, everything worked fine.
I didn’t figure out how that function may change modules that way, so I just report this bug here.