I compiled with free pascal too.
Sample problem there:
Works with optimizations off, crashes with optimizations on ?!?
I also inspected the asm for some sections and it seems the same (Delphi:)
Good:
DCPtiger_optimized_version_201.pas.84: begin
0041044C 55 push ebp
0041044D 8BEC mov ebp,esp
0041044F 83C4F4 add esp,-$0c
00410452 894DF8 mov [ebp-$08],ecx
00410455 8955FC mov [ebp-$04],edx
00410458 8945F4 mov [ebp-$0c],eax
DCPtiger_optimized_version_201.pas.90: lea edx, [TigerTable]
0041045B 8D15683A4100 lea edx,[$00413a68]
....
DCPtiger_optimized_version_201.pas.514: Index:= 0;
00410ABE 8B45F4 mov eax,[ebp-$0c]
00410AC1 33D2 xor edx,edx
00410AC3 895010 mov [eax+$10],edx
DCPtiger_optimized_version_201.pas.515:
FillChar(HashBuffer,Sizeof(HashBuffer),0);
00410AC6 8B45F4 mov eax,[ebp-$0c]
00410AC9 83C030 add eax,$30
00410ACC 33C9 xor ecx,ecx
00410ACE BA40000000 mov edx,$00000040
00410AD3 E8D029FFFF call @[EMAIL PROTECTED]
end;
00410AD8 8BE5 mov esp,ebp
00410ADA 5D pop ebp
00410ADB C3 ret
SAME ?
Bad:
DCPtiger_optimized_version_201.pas.84: begin
0041044C 55 push ebp
0041044D 8BEC mov ebp,esp
0041044F 83C4F4 add esp,-$0c
00410452 894DF8 mov [ebp-$08],ecx
00410455 8955FC mov [ebp-$04],edx
00410458 8945F4 mov [ebp-$0c],eax
DCPtiger_optimized_version_201.pas.90: lea edx, [TigerTable]
0041045B 8D15683A4100 lea edx,[$00413a68]
....
DCPtiger_optimized_version_201.pas.514: Index:= 0;
00410ABE 8B45F4 mov eax,[ebp-$0c]
00410AC1 33D2 xor edx,edx
00410AC3 895010 mov [eax+$10],edx
DCPtiger_optimized_version_201.pas.515:
FillChar(HashBuffer,Sizeof(HashBuffer),0);
00410AC6 8B45F4 mov eax,[ebp-$0c]
00410AC9 83C030 add eax,$30
00410ACC 33C9 xor ecx,ecx
00410ACE BA40000000 mov edx,$00000040
00410AD3 E8D029FFFF call @[EMAIL PROTECTED]
end;
00410AD8 8BE5 mov esp,ebp
00410ADA 5D pop ebp
00410ADB C3 ret
Bye,
Skybuck.


|