[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Frozen
From: |
Lennart Sorensen |
Subject: |
Re: Frozen |
Date: |
Mon, 5 Mar 2012 09:46:10 -0500 |
User-agent: |
Mutt/1.5.20 (2009-06-14) |
On Sun, Mar 04, 2012 at 01:17:29PM +0100, Vladimir 'φ-coder/phcoder' Serbinenko
wrote:
> On 01.03.2012 20:15, Lennart Sorensen wrote:
> >On Thu, Mar 01, 2012 at 01:37:10PM -0500, Lennart Sorensen wrote:
> >>gcc-4.4 -DHAVE_CONFIG_H -I. -I../../../grub-core -I.. -Wall -W
> >>-I../../../include -I../include -DGRUB_MACHINE_EMU=1
> >>-DGRUB_MACHINE=POWERPC_EMU -DGRUB_TARGET_CPU_POWERPC=1 -m32
> >>-DGRUB_FILE=\"normal/charset.c\" -I. -I../../../grub-core -I.. -I../../..
> >>-I../../../include -I../include -I../../../grub-core/lib/posix_wrap -Os
> >>-Wall -W -Wshadow -Wold-style-declaration -Wold-style-definition
> >>-Wpointer-arith -Wundef -Wextra -Waddress -Warray-bounds -Wattributes
> >>-Wbuiltin-macro-redefined -Wcast-align -Wchar-subscripts -Wclobbered
> >>-Wcomment -Wcoverage-mismatch -Wdeprecated -Wdeprecated-declarations
> >>-Wdisabled-optimization -Wdiv-by-zero -Wempty-body -Wendif-labels
> >>-Wfloat-equal -Wformat-contains-nul -Wformat-extra-args -Wformat-security
> >>-Wformat-y2k -Wignored-qualifiers -Wimplicit
> >>-Wimplicit-function-declaration -Wimplicit-int -Winit-self
> >>-Wint-to-pointer-cast -Winvalid-pch -Wunsafe-loop-optimizations
> >>-Wlogical-op -Wmain -Wmissing-braces -Wmissing-field-initializers
> >>-Wmissing-format-attribute -Wmissing-noreturn
> -W
> >>mudflap -Wmultichar -Wnonnull -Woverflow -Wpacked-bitfield-compat
> >>-Wparentheses -Wpointer-arith -Wpointer-to-int-cast -Wreturn-type
> >>-Wsequence-point -Wshadow -Wsign-compare -Wstrict-aliasing -Wswitch
> >>-Wsync-nand -Wtrigraphs -Wtype-limits -Wundef -Wuninitialized
> >>-Wunknown-pragmas -Wunused -Wunused-function -Wunused-label
> >>-Wunused-parameter -Wunused-value -Wunused-variable -Wvariadic-macros
> >>-Wvolatile-register-var -Wwrite-strings -Wmissing-parameter-type
> >>-Wnested-externs -Wstrict-prototypes -Wpointer-sign -g -Wredundant-decls
> >>-Wmissing-prototypes -Wmissing-declarations -fno-dwarf2-cfi-asm
> >>-fno-asynchronous-unwind-tables -m32 -fno-stack-protector -Werror
> >>-DUSE_ASCII_FAILBACK=1 -DHAVE_UNIFONT_WIDTHSPEC=1 -ffreestanding
> >>-fno-builtin -Wno-redundant-decls -c -o normal/normal_module-charset.o
> >>`test -f 'normal/charset.c' || echo '../../../grub-core/'`normal/charset.c
> >>cc1: warnings being treated as errors
> >>../../../grub-core/normal/charset.c: In function
> >>'grub_bidi_line_logical_to_visual':
> >>../../../grub-core/normal/charset.c:636: error: cannot optimize possibly
> >>infinite loops
> >Would using this instead work:
> >
> >for (i = k - 1; i>= 0&& (unsigned) i> line_start - 1;
> >
> >After all if i already had to be>=0 then casting it to unsigned has no
> >harm, whereas casting line_start to signed could potentially generate
> >a very negative number if line_start was very big.
> You forget the case line_start = 0. Please try:
> - for (i = k - 1; i > (signed) line_start - 1 && i >= 0;
> + for (i = k - 1; i >= 0 && (unsigned) i >= line_start;
The compiler objects. Back to the "error: cannot optimize possibly
infinite loops" again.
The compiler approves of:
for (i = k - 1; i >= 0 && (unsigned) i + 1 > line_start;
I guess that's because i >=0 and i < 2147483647 (since it was signed),
and i+1 hence can't overflow.
--
Len Sorensen
- Re: Frozen, Lennart Sorensen, 2012/03/01
- Re: Frozen, Lennart Sorensen, 2012/03/01
- Re: Frozen, Lennart Sorensen, 2012/03/01
- Re: Frozen, Vladimir 'φ-coder/phcoder' Serbinenko, 2012/03/04
- Re: Frozen, Andreas Born, 2012/03/04
- Re: Frozen,
Lennart Sorensen <=