summaryrefslogtreecommitdiff
path: root/compiler/ninl.pas
diff options
context:
space:
mode:
authorsergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2014-06-17 18:45:11 +0000
committersergei <sergei@3ad0048d-3df7-0310-abae-a5850022a9f2>2014-06-17 18:45:11 +0000
commit2feee21c9dbab0f1abe65e55744fb0f49742c5d5 (patch)
tree61f76d77477128866cc1cfcf5bcdaee862006e0b /compiler/ninl.pas
parent78109c479ce78586e1d46b300b3694d1537e11a2 (diff)
downloadfpc-2feee21c9dbab0f1abe65e55744fb0f49742c5d5.tar.gz
* On 64-bit targets, handle abs(int64) internally, using the same code as for abs(longint), i.e. without branching. Both generic and x86-specific pass 2 code is already suitable for different operand sizes, only type checking needs removal of excessive conversions to 32 bits.
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@27989 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/ninl.pas')
-rw-r--r--compiler/ninl.pas7
1 files changed, 3 insertions, 4 deletions
diff --git a/compiler/ninl.pas b/compiler/ninl.pas
index f4138e874d..1185675d9f 100644
--- a/compiler/ninl.pas
+++ b/compiler/ninl.pas
@@ -2412,9 +2412,9 @@ implementation
if left.nodetype=ordconstn then
begin
if tordconstnode(left).value<0 then
- result:=cordconstnode.create((-tordconstnode(left).value),s32inttype,false)
+ result:=cordconstnode.create((-tordconstnode(left).value),resultdef,false)
else
- result:=cordconstnode.create((tordconstnode(left).value),s32inttype,false);
+ result:=cordconstnode.create((tordconstnode(left).value),resultdef,false);
end
end;
in_sqr_real :
@@ -3139,8 +3139,7 @@ implementation
in_abs_long:
begin
set_varstate(left,vs_read,[vsf_must_be_valid]);
- inserttypeconv(left,s32inttype);
- resultdef:=s32inttype;
+ resultdef:=left.resultdef;
end;
in_abs_real,