Duncan, Thanks for getting back to me. I am not sure how to find the original bitcode (and related Ada source code) that causes the truncate. This is the error message that gcc gave me when I tried to compile an Ada source file using dragonegg plugin (gcc -c -fplugin...). ZY ps, sorry for multiple emails, trying to find out how to reply to a thread in the mailing list On Sat, May 11, 2013 at 12:42 PM, Duncan Sands <baldrick at free.fr> wrote:> Hi ZY, > > > On 10/05/13 22:34, Zhiyuan Ren wrote: > >> Hello, I am new to LLVM and doing some experiment with 3.2 on Ada code. >> Can >> anyone help me on the following error message? >> > > a truncate from an i32 to an f32 is not valid. This caused the code > generator > to abort. What is the original bitcode that caused this? > > Ciao, Duncan. > > >> Thanks, >> ZY >> >> >> LLVM ERROR: Cannot select: 0xa7a0bf0: f32 = truncate 0xa7a5ea8 [ID=24] >> 0xa7a5ea8: i32 = X86ISD::SHLD 0xa790280, 0xa790390, 0xa76e088 [ID=22] >> 0xa790280: i32,ch = load 0xa7386a0, 0xa7a68d8, >> 0xa7a5628<LD1[%1482+4], >> anyext from i8> [ID=19] >> 0xa7a68d8: i32 = add 0xa7a6040, 0xa7a11c8 [ID=15] >> 0xa7a6040: i32,ch = CopyFromReg 0xa7386a0, 0xa790c98 [ORD=741] >> [ID=12] >> 0xa790c98: i32 = Register %vreg7 [ORD=741] [ID=3] >> 0xa7a11c8: i32 = Constant<13> [ID=7] >> 0xa7a5628: i32 = undef [ORD=737] [ID=2] >> 0xa790390: i32,ch = load 0xa7386a0, 0xa7a57c0, >> 0xa7a5628<LD4[%1482](align=1)> [ID=20] >> 0xa7a57c0: i32 = add 0xa7a6040, 0xa7a5f30 [ID=16] >> 0xa7a6040: i32,ch = CopyFromReg 0xa7386a0, 0xa790c98 [ORD=741] >> [ID=12] >> 0xa790c98: i32 = Register %vreg7 [ORD=741] [ID=3] >> 0xa7a5f30: i32 = Constant<9> [ID=5] >> 0xa7a5628: i32 = undef [ORD=737] [ID=2] >> 0xa76e088: i8 = Constant<31> [ID=6] >> >> >> ______________________________**_________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> >> >> > ______________________________**_________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130511/bd6fa2b3/attachment.html>
Hi ZY, On 11/05/13 20:37, Zhiyuan Ren wrote:> Duncan, > > Thanks for getting back to me. I am not sure how to find the original bitcode > (and related Ada source code) that causes the truncate. This is the error > message that gcc gave me when I tried to compile an Ada source file using > dragonegg plugin (gcc -c -fplugin...).use -S instead of -c and add -flto The resulting .s file contains the bitcode. Please send in the file. Ciao, Duncan.> > ZY > > ps, sorry for multiple emails, trying to find out how to reply to a thread in > the mailing list > > > On Sat, May 11, 2013 at 12:42 PM, Duncan Sands <baldrick at free.fr > <mailto:baldrick at free.fr>> wrote: > > Hi ZY, > > > On 10/05/13 22:34, Zhiyuan Ren wrote: > > Hello, I am new to LLVM and doing some experiment with 3.2 on Ada code. Can > anyone help me on the following error message? > > > a truncate from an i32 to an f32 is not valid. This caused the code generator > to abort. What is the original bitcode that caused this? > > Ciao, Duncan. > > > Thanks, > ZY > > > LLVM ERROR: Cannot select: 0xa7a0bf0: f32 = truncate 0xa7a5ea8 [ID=24] > 0xa7a5ea8: i32 = X86ISD::SHLD 0xa790280, 0xa790390, 0xa76e088 [ID=22] > 0xa790280: i32,ch = load 0xa7386a0, 0xa7a68d8, 0xa7a5628<LD1[%1482+4], > anyext from i8> [ID=19] > 0xa7a68d8: i32 = add 0xa7a6040, 0xa7a11c8 [ID=15] > 0xa7a6040: i32,ch = CopyFromReg 0xa7386a0, 0xa790c98 [ORD=741] > [ID=12] > 0xa790c98: i32 = Register %vreg7 [ORD=741] [ID=3] > 0xa7a11c8: i32 = Constant<13> [ID=7] > 0xa7a5628: i32 = undef [ORD=737] [ID=2] > 0xa790390: i32,ch = load 0xa7386a0, 0xa7a57c0, > 0xa7a5628<LD4[%1482](align=1)> [ID=20] > 0xa7a57c0: i32 = add 0xa7a6040, 0xa7a5f30 [ID=16] > 0xa7a6040: i32,ch = CopyFromReg 0xa7386a0, 0xa790c98 [ORD=741] > [ID=12] > 0xa790c98: i32 = Register %vreg7 [ORD=741] [ID=3] > 0xa7a5f30: i32 = Constant<9> [ID=5] > 0xa7a5628: i32 = undef [ORD=737] [ID=2] > 0xa76e088: i8 = Constant<31> [ID=6] > > > _________________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev > <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> > > > _________________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev > <http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> > >
Duncan, here is part of the assembly around the problem area. I used gcc -S -flto to generate the .s file, llvm-as on the .s fiile will show error: invalid cast opcode for cast from 'i40' to 'float' %638 = trunc i40 %637 to float %633 = bitcast i8* %632 to float* %634 = bitcast float* %633 to i40* %635 = load i40* %634, align 1 %636 = shl i40 %635, 7 %637 = ashr i40 %636, 8 %638 = trunc i40 %637 to float Thanks, ZY On Sat, May 11, 2013 at 3:49 PM, Duncan Sands <baldrick at free.fr> wrote:> Hi ZY, > > > On 11/05/13 20:37, Zhiyuan Ren wrote: > >> Duncan, >> >> Thanks for getting back to me. I am not sure how to find the original >> bitcode >> (and related Ada source code) that causes the truncate. This is the error >> message that gcc gave me when I tried to compile an Ada source file using >> dragonegg plugin (gcc -c -fplugin...). >> > > use -S instead of -c and add -flto > The resulting .s file contains the bitcode. Please send in the file. > > Ciao, Duncan. > > >> ZY >> >> ps, sorry for multiple emails, trying to find out how to reply to a >> thread in >> the mailing list >> >> >> On Sat, May 11, 2013 at 12:42 PM, Duncan Sands <baldrick at free.fr >> <mailto:baldrick at free.fr>> wrote: >> >> Hi ZY, >> >> >> On 10/05/13 22:34, Zhiyuan Ren wrote: >> >> Hello, I am new to LLVM and doing some experiment with 3.2 on Ada >> code. Can >> anyone help me on the following error message? >> >> >> a truncate from an i32 to an f32 is not valid. This caused the code >> generator >> to abort. What is the original bitcode that caused this? >> >> Ciao, Duncan. >> >> >> Thanks, >> ZY >> >> >> LLVM ERROR: Cannot select: 0xa7a0bf0: f32 = truncate 0xa7a5ea8 >> [ID=24] >> 0xa7a5ea8: i32 = X86ISD::SHLD 0xa790280, 0xa790390, 0xa76e088 >> [ID=22] >> 0xa790280: i32,ch = load 0xa7386a0, 0xa7a68d8, >> 0xa7a5628<LD1[%1482+4], >> anyext from i8> [ID=19] >> 0xa7a68d8: i32 = add 0xa7a6040, 0xa7a11c8 [ID=15] >> 0xa7a6040: i32,ch = CopyFromReg 0xa7386a0, 0xa790c98 >> [ORD=741] >> [ID=12] >> 0xa790c98: i32 = Register %vreg7 [ORD=741] [ID=3] >> 0xa7a11c8: i32 = Constant<13> [ID=7] >> 0xa7a5628: i32 = undef [ORD=737] [ID=2] >> 0xa790390: i32,ch = load 0xa7386a0, 0xa7a57c0, >> 0xa7a5628<LD4[%1482](align=1)> [ID=20] >> 0xa7a57c0: i32 = add 0xa7a6040, 0xa7a5f30 [ID=16] >> 0xa7a6040: i32,ch = CopyFromReg 0xa7386a0, 0xa790c98 >> [ORD=741] >> [ID=12] >> 0xa790c98: i32 = Register %vreg7 [ORD=741] [ID=3] >> 0xa7a5f30: i32 = Constant<9> [ID=5] >> 0xa7a5628: i32 = undef [ORD=737] [ID=2] >> 0xa76e088: i8 = Constant<31> [ID=6] >> >> >> ______________________________**___________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> >> http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/__**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev> >> <http://lists.cs.uiuc.edu/**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> >> > >> >> >> ______________________________**___________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu> >> http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/__**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/__mailman/listinfo/llvmdev> >> <http://lists.cs.uiuc.edu/**mailman/listinfo/llvmdev<http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev> >> > >> >> >> >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130511/9419d185/attachment.html>