Yes, it remains an error. The number 255 as I understand comes from src/SymbolTable.hh:235:class SystemSymTab : public SymbolTableBase<SystemName, 256 - 1>
> On Jan 18, 2017, at 9:41 AM, Juergen Sauermann > <juergen.sauerm...@t-online.de> wrote: > > Hi Xiao-Yong, > > I have simplified the loop a little hoping that gcc will get less confused. > *SVN 854*. > > If the warning remains then it is definitely bogus. > > Also, I can't really see why iteration 255 should behave differently than all > the others. > > /// Jürgen > > > On 01/17/2017 05:10 AM, Xiao-Yong Jin wrote: >> In addition, there is one more warning/error. >> >> g++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -I sql >> -I/sandbox/pkg/lib/include -I/sandbox/pkg/include -rdynamic >> -Wno-maybe-uninitialized -march=native -O3 -pipe -I/sandbox/pkg/include -MT >> apl-SymbolTable.o -MD -MP -MF .deps/apl-SymbolTable.Tpo -c -o >> apl-SymbolTable.o `test -f 'SymbolTable.cc' || echo './'`SymbolTable.cc >> SymbolTable.cc: In member function ‘void SystemSymTab::clear(std::ostream&)’: >> SymbolTable.cc:499:37: error: iteration 255 invokes undefined behavior >> [-Werror=aggressive-loop-optimizations] >> SystemName * sym = symbol_table[hash]; >> ^ >> In file included from Assert.hh:24:0, >> from Simple_string.hh:33, >> from CDR_string.hh:24, >> from CDR.hh:24, >> from SymbolTable.cc:24: >> Common.hh:106:44: note: within this loop >> #define loop(v, e) for (ShapeItem v = 0; v < ShapeItem(e); ++v) >> >> SymbolTable.cc:493:4: note: in expansion of macro ‘loop’ >> loop(hash, SYMBOL_HASH_TABLE_SIZE) clear_slot(out, hash); >> ^~~~ >> cc1plus: all warnings being treated as errors >> >>> On Jan 16, 2017, at 8:05 PM, Xiao-Yong Jin <jinxiaoy...@gmail.com> wrote: >>> >>> Not sure if it's another gcc unrolling bug. >>> Using gcc 6.2.0 >>> >>> g++ -DHAVE_CONFIG_H -I. -I.. -Werror -Wall -I sql >>> -I/sandbox/pkg/lib/include -I/sandbox/pkg/include -rdynamic -march=native >>> -O3 -pipe -I/sandbox/pkg/include -MT apl-Bif_F12_SORT.o -MD -MP -MF .deps/ap >>> l-Bif_F12_SORT.Tpo -c -o apl-Bif_F12_SORT.o `test -f 'Bif_F12_SORT.cc' || >>> echo './'`Bif_F12_SORT.cc >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh: In constructor ‘CollatingCache::CollatingCache(const Value&, >>> const Cell*, ShapeItem)’: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[7]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[7]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[6]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[6]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[5]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[5]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[4]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[4]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[3]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[3]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[2]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[2]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> In file included from PrintBuffer.hh:28:0, >>> from Cell.hh:27, >>> from Value.hh:30, >>> from Value.icc:24, >>> from NamedObject.hh:25, >>> from Function.hh:27, >>> from PrimitiveFunction.hh:25, >>> from Bif_F12_SORT.hh:25, >>> from Bif_F12_SORT.cc:22: >>> Shape.hh:143:43: error: ‘*((void*)(& entry)+8).Shape::rho[1]’ may be used >>> uninitialized in this function [-Werror=maybe-uninitialized] >>> rho[rho_rho++] = len; volume *= len; } >>> ^~~ >>> Bif_F12_SORT.cc:56:36: note: ‘*((void*)(& entry)+8).Shape::rho[1]’ was >>> declared here >>> const CollatingCacheEntry entry(uni, A.get_shape()); >>> ^~~~~ >>> cc1plus: all warnings being treated as errors >>> make[3]: *** [apl-Bif_F12_SORT.o] Error 1 >> >> >