36

Jakie flagi są potrzebne w wierszu poleceń, aby wyłączyć optymalizację wartości zwracanej automatycznie włączoną przez kompilator g ++?Wyłączanie optymalizacji wartości zwracanych g ++

+2

Podaj przykład kodu, a dlaczego nie chcesz tego rodzaju optymalizacja – fge

+2

@fge jestem debugowania i testowania realizację mojej biblioteki oprogramowania więc wolałbym zobacz każdy krok w trakcie wykonywania mojego oprogramowania ... –

+5

Oczywiście zdajesz sobie sprawę, że wiele osób faktycznie użyje twojej biblioteki z elizacją konstruktora, więc musisz przetestować ją również w tej konfiguracji? –

Odpowiedz

71

-fno-elide-constructors

standard C++ umożliwia wdrożenie pominąć tworząc tymczasowy, który służy tylko do zainicjowania inny obiekt tego samego typu. Określenie tej opcji wyłącza tę optymalizację i zmusza G ++ do wywoływania konstruktora kopiowania we wszystkich przypadkach. [Źródło: man gcc]


+0

Bardzo dziękuję !!! Teraz mam to, co chciałem zobaczyć z mojego kompilatora. –

+1

Nie na temat: może zaoszczędzić komuś uwagi, że clang [moja --wersja to wersja 4.1 klina Apple (tagi/Apple/clang-421.11.66) (na podstawie LLVM 3.1svn)] ma błąd podczas korzystania z tej flagi , który w moim przypadku wydaje się powodować błędy seg: http://llvm.org/bugs/show_bug.cgi?id=12208 –