Is Self-Repair a Silver Bullet for Code Generation?