For a certain type of analysis I generate inline assembly which I insert into the LLVM IR code. This
inline assembly code contains labels that should not be duplicated. Problem is that the tail
duplication pass duplicates code. It checks isNotDuplicatable on a machine instruction however
there is no such a flag on an IR instruction that I could set. Is there a way to tell in an IR pass
that code should not be duplicated?
There is the noduplicate attribute you can place on the function definition / the asm call site which should work
Thanks for the answer. Unfortunately it does not seem to work.
Putting the NoDuplicate on the CallInst of an inline assembly gives the message:
Attribute ‘noduplicate’ only applies to functions!
Putting the NoDuplicate on the function in which the inline assembly resides has not effect. Also adding
the MinSize or OptimizeForSize attribute does not stop tail duplication. Another suggestion?
Is this volatile inline asm? If so, I don’t think we should duplicate it. If we do, that might be a bug.
That seems like a bug. I would expect noduplicate to work on asm calls