You can use -iobuf for the synthesis step to avoid iobuf insertion. I don't think you can run bitgen if you do this, but IIRC you can still run MAP/PAR.
This type of method is very useful for getting an upper bound on the performance of some HDL construct. It is very useful for quick sandbox designs, or to see how the tools will synthesize/implement modules in the design. I highly recommend doing this from time to time even for simple constructs. It is useful to know what can and can't be done in one cycle on the device you are actually using.