This is the mail archive of the crossgcc@sources.redhat.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Mon, 2004-11-01 at 09:52, Toralf Lund wrote: > I'm having a rather strange problem with an ARM code built with gcc > 2.95.3. Maybe I'm missing something obvious, but it looks like the wrong > branch is taken after a comparison with a negative constant. > > I have the following test > > if(position<-ZSTP_MAX_POS) > > > where ZSTP_MAX_POS is #defined as 250000, and "position" is an argument > to the function containing the test. The problem is simply that if I > pass e.g. 1 for the position argument, the test evaluates to "true" - > according to the debugger, anyway - but surely 1 is not smaller than > -250000? Also, the following code is generated for the test: > > 8013458: e51b3014 ldr r3, [fp, -#20] > 801345c: e3e02a3d mvn r2, #249856 ; 0x3d000 > 8013460: e2422090 sub r2, r2, #144 ; 0x90 > 8013464: e1530002 cmp r3, r2 > 8013468: 8a000017 bhi 80134cc <_SetZoomPos+0xc4> > > This is followed by the "test true" code, i.e. as far as I can tell, the > branch is supposed to be taken when the test is not true. But will it? I > would expect "bgt" instead of "bhi" for the branch instruction, I think. > > All this with gcc 2.95.3. Maybe I could upgrade, but it seems to me that > newer versions will actually generate less efficient code... bhi is a branch used for an unsigned comparison. So I suspect your problem is the type of one of your arguments, most likely the declaration of position itself. R. ------ Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/ Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |