Adding variants of some instructions


I need to have special variants of some instructions, e.g. a special MallocInst that carries some additional information. Besides having this additional information, I want all of LLVM to recognize this instruction as a regular MallocInst. This special MallocInst need only exist inside LLVM; it need not be written out to bytecode. How to best implement this?

This is what I was thinking:
* Not to introduce a new instruction, but to represent special MallocInst as a derived class from MallocInst
* Introduce the special MallocInst instructions during a pass that decides to replace some original MallocInsts or some other code by special MallocInst
* Apply LLVM analysis and transformations assuming that when new MallocInsts are created, the proper clone() function is called
* Apply my own passes that use the special MallocInst. This requires to recognize that some MallocInst are special MallocInst, but the isa<> interface won't be usable for that
* Revert the special MallocInst instructions to whatever code was there before

Is this a good approach or are there better alternatives?

Thanks for the help
Hans Vandierendonck.