Какую форму анализа псевдонимов использует Visual C ++? - PullRequest
8 голосов
/ 31 августа 2009

Я пытаюсь выяснить, какая форма анализа псевдонимов используется в Visual C ++. Он также известен как анализ указателей, анализ mod-ref, анализ точек на предмет или анализ побочных эффектов, и очень близок к анализу побега или анализу формы (если бы вы увидели эти термины обыденными).

Если кто-нибудь знает, где MSDN обсуждает подобные вещи, я, вероятно, смогу найти свой путь оттуда. (Я пытался искать, но MSDN кажется непроходимым, если вы не проводите там много времени.)

1 Ответ

2 голосов
/ 23 апреля 2012

Чисто по документации MSDN:

«Предполагать, что нет псевдонимов» ( / Oa ) и связанные параметры были удалены в Visual Studio 2008 .

__ declspec ( restrict ) и __declspec ( noalias ) были добавлены (2003 или ранее, см. Также Рекомендации по оптимизации )

Исходя из этого I сделает вывод, что компилятор / оптимизатор по умолчанию предполагает использование псевдонимов в соответствии с правилами C ++ (примерно, указатели одного типа могут указывать на одну и ту же память). Это кажется разумным шагом во избежание ошибок из-за глобальной чрезмерно агрессивной опции / Oa.

Я бы также предположил, что генерация кода времени соединения увеличивает область, в которой можно обнаружить сглаживание.


Лучшая справка, не относящаяся к MSDN, которую я смог найти, это: Блог команды VC ++ . Однако это просто указывает на то, что компилятор потратил некоторое время на анализ псевдонимов. Возможно, связанное с Channel9 видео дает некоторое представление.

(Некоторым посчастливилось попросить дополнительную информацию в комментариях к VC ++. Подсказка ...)


[ edit ] Я не знаю, попал ли Phoenix в VS2010, видео рассказывает о псевдонимах 6:00, но ничего особенного.

...