It seems unrelated to the actual source being compiled. To prove it, I created a 0-length file "empty.pc" and did my normal compile step:

proc sqlcheck=full cpp_suffix=cpp code=cpp userid=magic/wizard char_map=string include=.. include=VC empty.pc oname=empty.cxx > empty.pc.L

And I still get the mysterious "tp" files.

I think I'm just going to resort to a cleanup script to delete all files named tp* which are 0-length, after each compile...