mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-13 10:39:39 +02:00
* prettify the "Use of -offset(%ebp) is not recommended for local variable
access" warning by showing the exact register used (bp, ebp or rbp) and using the original asm syntax git-svn-id: trunk@42208 -
This commit is contained in:
parent
1e07606cbf
commit
4f2ab3fb11
@ -2764,7 +2764,7 @@ asmr_w_no_direct_ebp_for_parameter=07102_W_Use of $1 for parameters invalid here
|
||||
asmr_w_direct_ebp_for_parameter_regcall=07103_W_Use of $1 is not compatible with regcall convention
|
||||
% Using direct 8(%ebp) reference for function/procedure parameters is invalid
|
||||
% if parameters are in registers.
|
||||
asmr_w_direct_ebp_neg_offset=07104_W_Use of -offset(%ebp) is not recommended for local variable access
|
||||
asmr_w_direct_ebp_neg_offset=07104_W_Use of $1 is not recommended for local variable access
|
||||
% Using -8(%ebp) to access a local variable is not recommended
|
||||
asmr_w_direct_esp_neg_offset=07105_W_Use of -offset(%esp), access may cause a crash or value may be lost
|
||||
% Using -8(%esp) to access a local stack is not recommended, as
|
||||
|
@ -1110,7 +1110,7 @@ const
|
||||
option_info=11024;
|
||||
option_help_pages=11025;
|
||||
|
||||
MsgTxtSize = 83020;
|
||||
MsgTxtSize = 83009;
|
||||
|
||||
MsgIdxMax : array[1..20] of longint=(
|
||||
28,106,351,126,99,61,142,34,221,67,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -290,7 +290,35 @@ begin
|
||||
message1(asmr_w_direct_ebp_for_parameter_regcall,ErrorRefStr);
|
||||
end
|
||||
else if (getsupreg(opr.ref.base)=RS_EBP) and (opr.ref.offset<0) then
|
||||
message(asmr_w_direct_ebp_neg_offset)
|
||||
begin
|
||||
if current_settings.asmmode in [asmmode_i8086_intel,asmmode_i386_intel,asmmode_x86_64_intel] then
|
||||
begin
|
||||
case getsubreg(opr.ref.base) of
|
||||
R_SUBW:
|
||||
ErrorRefStr:='[BP-offset]';
|
||||
R_SUBD:
|
||||
ErrorRefStr:='[EBP-offset]';
|
||||
R_SUBQ:
|
||||
ErrorRefStr:='[RBP-offset]';
|
||||
else
|
||||
internalerror(2019061003);
|
||||
end;
|
||||
end
|
||||
else
|
||||
begin
|
||||
case getsubreg(opr.ref.base) of
|
||||
R_SUBW:
|
||||
ErrorRefStr:='-offset(%bp)';
|
||||
R_SUBD:
|
||||
ErrorRefStr:='-offset(%ebp)';
|
||||
R_SUBQ:
|
||||
ErrorRefStr:='-offset(%rbp)';
|
||||
else
|
||||
internalerror(2019061004);
|
||||
end;
|
||||
end;
|
||||
message1(asmr_w_direct_ebp_neg_offset,ErrorRefStr);
|
||||
end
|
||||
else if (getsupreg(opr.ref.base)=RS_ESP) and (opr.ref.offset<0) then
|
||||
message(asmr_w_direct_esp_neg_offset);
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user