Closed Bug 602873 Opened 15 years ago Closed 9 years ago

Code mis-compiled by VS2008 -favor:INTEL64 switch

Categories

(Core :: JavaScript Engine, defect)

x86_64
Windows XP
defect
Not set
normal

Tracking

()

RESOLVED INVALID

People

(Reporter: swsnyder, Assigned: swsnyder)

Details

(Whiteboard: [platform-rel-Intel])

Attachments

(2 files)

64-bit VS2008/SP1 mis-compiles (Firefox 4.0b6) source file jsinterp.cpp when the -favor:INTEL64 switch is used. The symptom is a runtime protection fault in DefaultValue() when a pointer has a bogus value. Omission of this switch results in a working build. This behavior is true with optimization levels -O1 or -O2, and with debug symbols enabled or disabled. FYI, the compiler default is -favor:blend. Options INTEL64 or AMD64 are said to provide better code gen for 64-bit CPUs from their respective vendors.
Patch is conditional on compiler being VS2008. No test is done for x86_64 platform because the switch is only defined for 64-bit compilers.
Assignee: general → swsnyder
I'm not certain exactly what generated code causes the faults, i.e. what bad code results from the -favor:INTEL64 switch. I suspect it's associated with lost sign bits. For the morbidly curious, this ZIP file contains the VS2008/SP1 ASM output for jsinterp.cpp compilation, both with and without the troublesome switch. There's actually not a lot of difference between the 2 files.
Whiteboard: [platform-rel-Intel]
platform-rel: --- → ?
platform-rel: ? → ---
VS2008 is no longer supported.
Status: NEW → RESOLVED
Closed: 9 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: