Kompilatory już dawno przestały być jedynie translatorami kodu źródłowego na kod maszynowy. Obecnie oferują programiście coraz bardziej wyrafinowane możliwości analizy i optymalizacji.
Warto z nich skorzystać, zanim przystąpi się do żmudnego i podatnego na błędy, ręcznego usprawniania napisanego wcześniej kodu. Pozwalają one nie tylko na generowanie kodu wynikowego w oparciu o kod źródłowy, ale także, a może przede wszystkim, na jego optymalizowanie.
Standardowe procedury optymalizacyjne są załączane za pomocą flagi -O, gdzie parametr arg opisuje zbiór predefiniowanych operacji, jakie kompilator wykonuje, aby wygenerować bardziej wydajny (lub o mniejszym rozmiarze) kod wynikowy. Zazwyczaj, gdy kod wygenerowany przez kompilator nie spełnia wymagań wydajnościowych, programiści przystępują do czasochłonnych, ręcznych optymalizacji.
Twórcy kompilatorów wychodzą naprzeciw rosnącym oczekiwaniom programistów i z każdą kolejną wersją kompilatora dostarczają coraz bardziej wydajne możliwości optymalizacji. Celem tego artykułu jest zaprezentowanie na przykładzie projektu LLVM [5\ i kompilatora Clang dodatkowych optymalizacji, które pozwolą wygenerować wydajniejszy kod bez potrzeby modyfikacji źródeł...