On Thu, 2006-03-02 at 14:05 +0100, Eric Botcazou wrote: > > # BLOCK 6 > > # PRED: 4 (false,exec) > > <L1>:; > > iftmp.78_63 = D.1309_32; > > iftmp.78_64 = D.1309_32; > > D.1316_65 = (c460008__unsigned_edge_8) D.1309_32; > > if (D.1316_65 == 255) goto <L3>; else goto <L4>; > > # SUCC: 7 (true,exec) 8 (false,exec) > > [...] > > The problem (of course) is D.1316_65 can and does actually hold > > values outside the range [ ,254] at runtime. For example, it could > > hold the value 255 if D.1309_32 had the value 255, which would occur > > if for_the_value_31 held the value 255000000000. > > > > Someone with a better knowledge of Ada is going to need to step > > in here, but based on the type information provided by the Ada > > front-end, VRP is doing the right thing here. > > Yes, I think we have a problem in Gigi, namely convert_with_check: [ ... ] Just to be 100% clear, I'm leaving this one in the hands of the Ada maintainers. I'm not qualified to fix it. Once the Ada maintainers have this issue fixed, I'll re-run the Ada testsuite and attack the next regression introduced by the VRP changes (if any are left).
We're also still need the uintp fix installed. I'm not qualified to say if Kenner's fix is correct or not, thus I'm not comfortable checking in that change. jeff