FIX: Wanneer u een toepassing die is gemaakt met behulp van de optie /Ot compiler in Microsoft Visual Studio 2005 Service Pack 1 (SP1) uitvoert, sommige overzichten "als" mogelijk foutief uitgevoerd


Symptomen


U gebruikt de compileroptie /Ot (lol snel Code) bij het samenstellen van een toepassing die is geconfigureerd op het x64 platform in Microsoft Visual Studio 2005 Service Pack 1 (SP1). Wanneer u de toepassing uitvoert, worden sommige overzichten als niet correct uitgevoerd. Daarom zijn de resultaten onvoorspelbaar. De als -instructies kunnen bijvoorbeeld worden overgeslagen in de gegenereerde code van de toepassing.

Dit probleem treedt alleen op in het volgende scenario.
  • Er zijn bepaalde instructies MOV tussen twee vergelijken bewerkingen.
  • Deze vergelijken de operanden dezelfde bewerkingen gebruiken.
  • De waarden van de operanden worden gewijzigd door de MOV-instructies.
In dit scenario kunnen de als -instructies in de tweede vergelijkingsbewerking worden overgeslagen.

Opmerkingen
  • Dit probleem kan ook optreden wanneer u de optie/OX /O2 of de toepassing te bouwen.
  • Dit probleem treedt niet op het x86 platform.

Oorzaak


Dit probleem treedt op omdat de compiler optimizer onjuist wordt ervan uitgegaan dat de vlag is ingesteld door de XOR bewerking kan worden gebruikt zonder een vergelijkingsbewerking.

Oplossing


Informatie over de hotfix

Een ondersteunde hotfix is beschikbaar bij Microsoft. Deze hotfix is echter alleen bedoeld voor het probleem dat wordt beschreven in dit artikel. Voer deze hotfix alleen uit op systemen waarop de in dit artikel beschreven problemen zich voordoen. Deze hotfix moet wellicht extra worden getest. Als u geen ernstige hinder ondervindt van dit probleem, is het daarom raadzaam te wachten op de volgende update waarin deze hotfix is opgenomen.

Als de hotfix gedownload kan worden, is er een sectie 'Hotfix downloaden' aan het begin van dit Knowledge Base-artikel. Als deze sectie niet wordt weergegeven, neem dan contact op met Microsoft Customer Service and Support om de hotfix te verkrijgen.

Opmerking Als er andere problemen optreden of als probleemoplossing is vereist, moet u wellicht een apart serviceverzoek indienen. De normale ondersteuningskosten gelden voor extra ondersteuningsvragen en problemen die niet in aanmerking komen voor deze specifieke hotfix. Voor een volledige lijst met telefoonnummers van Microsoft Customer Service and Support of een afzonderlijk serviceverzoek maken, gaat u naar de volgende Microsoft-website:Opmerking Het formulier 'Hotfix kan worden gedownload' geeft de talen weer waarvoor de hotfix beschikbaar is. Als uw taal niet wordt weergegeven, is dit omdat een hotfix niet voor die taal beschikbaar is.

Vereisten

U moet de Visual Studio 2005 SP 1 geïnstalleerd om deze hotfix te kunnen hebben.

Opnieuw opstarten

U hoeft de computer niet opnieuw op te starten nadat u deze hotfix hebt toegepast.

Informatie over het vervangen van hotfixes

Deze hotfix vervangt geen andere hotfixes.

Bestandsinformatie

De Engelse versie van deze hotfix heeft de bestandskenmerken (of recentere bestandskenmerken) die in de volgende tabel worden weergegeven. De datums en tijden voor deze bestanden worden weergegeven in Coordinated Universal Time (UTC). Wanneer u de bestandsinformatie weergeeft, wordt deze naar lokale tijd geconverteerd. Om het verschil tussen UTC en lokale tijd op te zoeken, gebruikt u het tabblad tijdzone in het onderdeel datum en tijd in het Configuratiescherm.
BestandsnaamBestandsversieBestandsgrootteDatumTijdPlatform
C2.dll14.0.50727.30802,273,28019-Nov-200818:52x86
C2.dll14.0.50727.30807,192,57619-Nov-200823:25IA-64
C2.dll14.0.50727.30802,490,36819-Nov-200823:26x86
C2.dll14.0.50727.30803,600,38419-Nov-200823:33x64
C2.dll14.0.50727.30802,203,64819-Nov-200823:33x86

Tijdelijke oplossing


Om dit probleem te omzeilen, gebruikt u een van de volgende methoden:
  • De vluchtige sleutelwoord gebruiken wanneer u de variabelen die worden gebruikt in de jaarrekening als declareert.
  • Schakel de optie snelheid optimalisatie. Bijvoorbeeld de optie /Ot vervangen met de optie /Os (kleine Code lol) . Of gebruik de optie /O1 in plaats van de /O2 -optie of de optie/OX .
  • Een coderegel toevoegen voordat u de instructies als in de tweede bewerking vergelijken. Bijvoorbeeld een printf -instructie toevoegen.

Status


Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.

Meer informatie


Voor meer informatie over een of meer code overzichten worden mogelijk foutief uitgevoerd wanneer u de functie voor de optimalisatie van code in Visual Studio 2005, klikt u op het volgende artikel in de Microsoft Knowledge Base:

925792 een of meer code-instructies worden mogelijk foutief uitgevoerd wanneer u de functie voor de optimalisatie van code in Visual Studio 2005

Voor meer informatie over terminologie voor software-updates klikt u op het volgende artikelnummer om het artikel in de Microsoft Knowledge Base weer te geven:
824684 beschrijving van de standaardterminologie die wordt gebruikt om software-updates voor Microsoft te beschrijven