8

별칭 분석의 형식이 Visual C++에서 어떤 형식인지 파악하려고합니다. 그것은 포인터 분석, mod-ref 분석, 포인트 - 투 - 분석 또는 부작용 분석으로도 알려져 있으며, 분석 또는 모양 분석을 피할 수 있습니다 (해당 용어가 붕괴 된 것을 보았 으면).Visual C++에서 사용하는 별칭 분석의 형식은 무엇입니까?

MSDN에서 이런 종류의 것에 대해 논의하는 사람이 누구인지 알고 있다면 거기에서 내 길을 찾을 수 있습니다. (I는 검색을 시도했지만 MSDN 당신이 많은 시간을 할애하지 않는 경우 꿰 뚫을 수없는 것 같다.)

+3

MSDN은 어렵습니다. MSDN 검색 자체를 사용하는 것보다 site : msdn.com에서 Google을 사용하는 것이 좋습니다. –

+0

앨리어싱 된 결과로 인해 많은 최적화가 불가능하므로 최대한 많은 무기를 가져갈 것으로 생각합니다. 그래서 저는 그 대답이 단순 할 것으로 기대하지 않을 것입니다. 비록 그들이 "포인트 - 투 -"분석을 사용해도, 흐름에 민감한/무감각 한, 문맥에 민감한/그렇지 않은, 민감한/그렇지 않은, 절차 적, 절차 간, 크로스 컴파일 단위 등 많은 변형이 있습니다 ... 뒤에 뭐가 있습니까? 질문? –

+1

@Ira Baxter : 그게 바로 내가 알아 내려고하는 것입니다. 흐름, 문맥, 필드, 객체 등 민감한가? 배후에 : phd 논문에 대한 저의 논문 리뷰를하고 있는데, gcc, LLVM 및 기타 컴파일러에 대한 대답 (또는 대답 찾는 방법)을 알고 있지만 Visual C++에서 찾을 수 없습니다. . –

답변

2

은 MSDN 문서에 의해 순수가는 :

이 (/Oa)를 "없음 앨리어싱을지지 않습니다"하고있는 관련 옵션 Visual Studio 2008에서 삭제되었습니다.

I에서

__declspec (restrict) 및 __declspec (noalias)이 추가되었습니다 (2003 또는 이전 버전도 Optimization best practices 참조)

기본적으로 컴파일러/최적화합니다 (C++ 규칙에 따라 앨리어싱을 가정 결론 것이다 대체로 동일한 유형의 포인터는 동일한 메모리를 가리킬 수 있음). 이것은 지나치게 공격적인/Oa 옵션으로 인해 오류를 피하는 현명한 움직임입니다.

또한 링크 타임 코드 생성은 비 앨리어싱을 감지 할 수있는 범위를 증가 시킨다고 가정합니다.


최상의 비 MSDN 참조는 다음과 같습니다. VC++ team blog. 그러나 이것은 컴파일러 이 별칭 분석에서 약간의 시간을 수행하는 것을 나타냅니다. 어쩌면 Channel9 링크 된 동영상을 통해 통찰력을 얻을 수 있습니다.

(어떤 사람들은 VC++ 주석에 대한 추가 정보를 원하시면 요구와 함께 행운을했다. 힌트 힌트 ...)


피닉스가 VS2010에서 끝난 경우 나도 몰라 [편집]의 에일리언트 6시에 대한 비디오 회담, 그러나 장관은 아닙니다.