Используйте последнюю версию, но выследите и поймите каждое предупреждение -Wall
. Для дополнительного удовольствия, есть еще несколько предупреждающих флагов. У вас до имеется обширный набор регрессионных (и других) тестов, запустите их все и проверьте их.
GCC (в частности, C ++, но также и C) сильно изменился. Он намного лучше анализирует и оптимизирует код, а также обрабатывает код, который, как оказывается, вызывает неопределенное поведение по-разному. Так что код, который «работал нормально», но действительно полагался на какую-то конкретную интерпретацию недопустимых конструкций, вероятно, сломается. Будем надеяться, что компилятор выдаст предупреждение или ошибку, но не гарантирует такой удачи.