|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2018/4/20 11:29:45 |
标题: |
|
加入我的收藏 |
楼主: |
https://quality.embarcadero.com/browse/RSP-20389
----------------------------------------------
- |
作者: |
go_on (go_on) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2018/4/20 11:31:47 |
1楼: |
问题不能一并贴过来?大家好快速看一下影响大小,和自己有没有关系
----------------------------------------------
-
|
作者: |
|
2018/4/20 11:43:24 |
2楼: |
贴个网址也很难么? type TMySubdata = record Value: SmallInt; end; TMyData = record Subvalue1: TMySubdata; Subvalue2: TMySubdata; end; function GetValue: TMyData; begin Result.Subvalue1.Value := 1; Result.Subvalue2.Value := 2; end; var sv: TMySubdata; begin sv := GetValue.Subvalue2; if sv.Value = 2 then Writeln('PASS') else Writeln('FAIL'); end.
win32 显示 FAIL win64正常
----------------------------------------------
-
|
作者: |
|
2018/4/20 11:46:31 |
3楼: |
另一个问题也很严重,编译器BUG https://quality.embarcadero.com/browse/RSP-20357
const testPtr = pointer ($FFFFFFFF);
procedure abc1 (p : tobject); register; begin if p <> testPtr then raise exception.create ('Unexpected Error in <abc1> !') end;
procedure abc2 (p : tobject); stdcall; begin if p <> testPtr then raise exception.create ('Unexpected Error in <abc2> !') end;
procedure TForm10.vvclButton1Click(Sender: TObject); begin abc1 (testPtr); abc2 (testPtr) end;
出现异常
----------------------------------------------
-
|
作者: |
|
2018/4/20 11:47:23 |
4楼: |
不靠谱不是一点两点。 VCL之后,编译器也要被整得千疮百孔了。
----------------------------------------------
-
|
作者: |
|
2018/4/20 11:58:22 |
5楼: |
https://quality.embarcadero.com/browse/RSP-20388 范型: Try to compile following code: type TRec<T> = record Value: T; end; TCls = class public Rec: TRec<TRec<Integer>>; end; end. Expected: compiles Actual: E2564 Undefined type 'TRec<T>'
这就是范型。
----------------------------------------------
-
|
作者: |
|
2018/4/20 13:09:54 |
6楼: |
smallint的那个BUG,XE也有,这BUG都这么多年了吗
----------------------------------------------
-
|
作者: |
a5824 (Return) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/4/20 14:38:57 |
7楼: |
一直要把这个项目干黄为止
----------------------------------------------
-
|
作者: |
|
2018/4/20 20:36:05 |
8楼: |
参考 cb 4k 的问题,人多,就有机会解决。没人关心的话,几百年也不一定解决。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/4/20 20:47:29 |
7楼: |
这算是bug么,我d6测的也是FAIL...
----------------------------------------------
-
|
作者: |
|
2018/4/21 1:07:05 |
9楼: |
真受不了Delphi的编译器。TMyData总共4个字节,所以GetValue的返回值放在eax寄存器中。但32位编译器居然认为GetValue.Subvalue1和GetValue.Subvalue2都在eax的低16位即ax内。狂晕!~~~
此帖子包含附件:
大小:25.5K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 1:11:27 |
10楼: |
对第一个程序,64位编译器是对的,call GetValue后先shr eax,$10再取ax的结果
此帖子包含附件:
大小:30.0K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 1:30:50 |
11楼: |
第二个程序的bug是Delphi10 Tokyo版新引入的,至少Seattle版还没有。stdcall调用约定时,对取值为-1的常量参数,32位编译器居然往栈里压0。狂晕!~~~~
此帖子包含附件:
大小:13.2K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 1:36:32 |
12楼: |
程序二的64位编译器也没问题。64位下只有register调用约定,stdcall也被映射为register。所以都是ecx置为$ffffffff来传参。
此帖子包含附件:
大小:13.3K |
----------------------------------------------
-
|
作者: |
|
2018/4/21 1:41:57 |
13楼: |
另外,从Win32目标平台的Delphi编译器生成的目标码的优化程度来看,建议Embarcadero尽快把该目标平台编译器的backend换成LLVM。 Win64目标平台的Delphi编译器生成的目标码的优化程度多少好一些。
----------------------------------------------
-
|
作者: |
|
2018/4/21 18:13:44 |
14楼: |
比Delphi10 Tokyo 低的 哪个版本的 delphi bug少一点?
delphi xe 的 bug 多吗?
----------------------------------------------
kittyapp
|
作者: |
boyla (土著巫师) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/4/21 18:26:29 |
14楼: |
验证了第一个问题:https://quality.embarcadero.com/browse/RSP-20389 WIN32平台确实有问题,WIN64平台没有问题,ANDROID平台也没有问题。 把smallint 换成byte类型也有问题,换成integer或int64问题消失,使用 packed record字节对齐方式也是出错。
另用C++Builder也测试了,三个平台都没有问题。
上述测试都是建立多平台应用,我再测试下VCL框架下有没有问题。
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
|
作者: |
boyla (土著巫师) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/4/21 18:47:19 |
15楼: |
针对第一个问题,VCL框架下,WIN32平台也测试了一下,同样有问题,WIN64平台还是没有问题。其它与上面测试雷同。
(C++Builder没有再测试VCL框架应用,猜想和多平台框架一样没有问题)
这个问题对DELPHI编译器影响很大 :(
上述两个验证测试IDE是最新版本: 10.2.3.2631。 静候10.2.4(不幸被猜中),RAD Studio版本历史多次说明SP4才会稳定下来哈,请允许无耐的做个鬼脸哈 :)。
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
|
作者: |
|
2018/4/22 16:36:58 |
16楼: |
RSP-20171 之所以很快 FIX,到底是因为 运气好,还是因为投票的人太多? 在 2000 人群 全体一下,到底对 EMB FIX Bug 有没有促进作? 至今都是未解之谜。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
boyla (土著巫师) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/4/22 18:25:11 |
17楼: |
验证了另一个问题:https://quality.embarcadero.com/browse/RSP-20357
多平台应用,WIN32有问题,WIN64没有问题,ANDROID平台因为测试代码使用$FFFFFFFF地址,不容许越权访问直接被系统拒掉了,应该与编译器没有直接关系。
----------------------------------------------
妹聊的不是BUG是追求,哥写的不是CODE是梦想。
|
|