Question on writing a machine pass of LLVM

Dear all,

Hi, my name is Wenqing(Wendell) Zhuang who is a Ph.D student in the college of EECS of Syracuse University in US, I am currently writing a machine pass of LLVM which checks if a pointer points to an address that is out of a certain range. So in that pass, I need to determine if a pointer points to a stack slot or to a non-stack area(e.g heap), I call the function: X86InstrInfo::isLoadFromStackSlot(const MachineInstr *MI, int &FrameIndex) in my pass which is added in X86PassConfig::addPreEmitPass(), however, that function always return 0 for every Machine Instruction, and returned FrameIndex is always 0, my pass is executed before code emit and after register allocation, but isLoadFromStackSlot and isStoreToStackSlot do not work as I expected in my pass,I can hardly figure out why.

I really appreciate if anyone can help me with this. Thanks. The best!

Just out of curiosity, are you sure that you are running your pass after the code for the stack frame has been created (maybe that is Prologue insertion)? I’m not sure when the stack frame is created, but if memory serves correctly, it does not exist when code generation starts. Regards, John Criswell