Last i heard, the rule was that as long as the two are separate programs, not sharing memory or anything like that, and they can exist separately from each other (ie: your program will still work, albeit with less functionality, if the other program isn't there), then you don't have to GPL it.
If you link to the other program, either statically or dynamically, you should probably use the GPL. If you're just using the output of the other program, though (and especially if it's a program like gcc, whose output couldn't differ too much if it wanted to serve its purpose), you're fine.