Jay Foad
2012-Feb-21 10:51 UTC
[LLVMdev] buildbot failure in LLVM on clang-x86_64-debian-fnt
All, This buildbot is getting lots of assertion failures in the test suite. They were probably caused by my commit: ------------------------------------------------------------------------ r151049 | foad | 2012-02-21 09:25:52 +0000 (Tue, 21 Feb 2012) | 6 lines Changed paths: M /llvm/trunk/lib/VMCore/LLVMContextImpl.h M /llvm/trunk/lib/VMCore/Type.cpp PR1210: make uniquing of struct and function types more efficient by using a DenseMap and Talin's new GeneralHash, avoiding the need for a temporary std::vector on every lookup. Patch by Meador Inge! ------------------------------------------------------------------------ ... but I can't reproduce the failures on my machine. I'm also running x86_64 Linux, I've checked out the same revision of llvm+clang+testsuite as the buildbot, I'm doing a Release+Asserts build. Is anyone else seeing these failures? Any ideas how I can reproduce them here? Thanks, Jay. Example failure from http://lab.llvm.org:8011/builders/clang-x86_64-debian-fnt/builds/4877/steps/make.test-suite/logs/stdio : 0 clang 0x0000000001e417ff 1 clang 0x0000000001e43a62 2 libpthread.so.0 0x00002aaaaacd9f60 3 libc.so.6 0x00002aaaab8cb165 gsignal + 53 4 libc.so.6 0x00002aaaab8cdf70 abort + 384 5 libc.so.6 0x00002aaaab8c42b1 __assert_fail + 241 6 clang 0x0000000001d799dc llvm::Intrinsic::getDeclaration(llvm::Module*, llvm::Intrinsic::ID, llvm::ArrayRef<llvm::Type*>) + 172 7 clang 0x0000000001da8476 llvm::IRBuilderBase::CreateMemCpy(llvm::Value*, llvm::Value*, llvm::Value*, unsigned int, bool, llvm::MDNode*) + 278 8 clang 0x0000000000917059 clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::FunctionDecl const*, unsigned int, clang::CallExpr const*) + 13001 9 clang 0x000000000085491c clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) + 236 10 clang 0x0000000000879146 11 clang 0x00000000008807ae 12 clang 0x0000000000882f40 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) + 96 13 clang 0x0000000000847a27 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) + 247 14 clang 0x00000000008e6948 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 712 15 clang 0x00000000008e9e40 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 272 16 clang 0x00000000008ea0ff clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 271 17 clang 0x00000000008e66a7 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39 18 clang 0x00000000008e9c42 clang::CodeGen::CodeGenFunction::EmitIfStmt(clang::IfStmt const&) + 594 19 clang 0x00000000008e9e40 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 272 20 clang 0x00000000008ea0ff clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 271 21 clang 0x00000000008e66a7 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39 22 clang 0x00000000008e71ef clang::CodeGen::CodeGenFunction::EmitSwitchStmt(clang::SwitchStmt const&) + 1247 23 clang 0x00000000008e9e40 clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) + 272 24 clang 0x00000000008ea0ff clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + 271 25 clang 0x00000000008e66a7 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39 26 clang 0x00000000008f7193 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 995 27 clang 0x00000000007ca16b clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl) + 587 28 clang 0x00000000007dbe0e clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl) + 190 29 clang 0x00000000007dc3ed clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) + 1197 30 clang 0x00000000007dc82b clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 491 31 clang 0x00000000007bc394 32 clang 0x00000000007bb611 33 clang 0x0000000000918525 clang::ParseAST(clang::Sema&, bool) + 309 34 clang 0x00000000007baa04 clang::CodeGenAction::ExecuteAction() + 68 35 clang 0x000000000065e701 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 321 36 clang 0x0000000000647289 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1609 37 clang 0x000000000063c268 cc1_main(char const**, char const**, char const*, void*) + 920 38 clang 0x0000000000645f77 main + 7079 39 libc.so.6 0x00002aaaab8b7c4d __libc_start_main + 253 40 clang 0x0000000000639ad9 Stack dump: 0. Program arguments: /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/Release+Asserts/bin/clang -cc1 -triple x86_64-pc-linux-gnu -emit-llvm -disable-free -main-file-name slib.c -mrelocation-model static -masm-verbose -mconstructor-aliases -munwind-tables -target-cpu x86-64 -momit-leaf-frame-pointer -coverage-file Output/slib.ll -resource-dir /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/Release+Asserts/bin/../lib/clang/3.1 -D __USE_MISC -D __USE_GNU -D __USE_SVID -D __USE_XOPEN_EXTENDED -D __USE_XOPEN -D unix -D _GNU_SOURCE -D __STDC_LIMIT_MACROS -D NDEBUG -I /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.obj/MultiSource/Applications/siod -I /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod -I /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.obj/../test-suite.src/include -I ../../../include -I /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/include -I /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.src/include -fmodule-cache-path /var/tmp/clang-module-cache -internal-isystem /usr/local/include -internal-isystem /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/Release+Asserts/bin/../lib/clang/3.1/include -internal-externc-isystem /usr/include/x86_64-linux-gnu -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -fdebug-compilation-dir /bin/pwd -ferror-limit 19 -fmessage-length 0 -mstackrealign -fgnu-runtime -fobjc-runtime-has-arc -fobjc-runtime-has-weak -fobjc-fragile-abi -fdiagnostics-show-option -disable-llvm-optzns -o Output/slib.ll -x c /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c 1. /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1133:1: current parser token 'LISP' 2. /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1097:6: LLVM IR generation of declaration 'gc_relocate' 3. /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1097:6: Generating code for declaration 'gc_relocate' 4. /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1098:1: LLVM IR generation of compound statement ('{}') 5. /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1103:4: LLVM IR generation of compound statement ('{}') 6. /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1126:2: LLVM IR generation of compound statement ('{}') On 21 February 2012 09:45, <llvm.buildmaster at lab.llvm.org> wrote:> The Buildbot has detected a new failure on builder clang-x86_64-debian-fnt while building llvm. > Full details are available at: > http://lab.llvm.org:8011/builders/clang-x86_64-debian-fnt/builds/4877 > > Buildbot URL: http://lab.llvm.org:8011/ > > Buildslave for this Build: gcc20 > > Build Reason: scheduler > Build Source Stamp: [branch trunk] 151050 > Blamelist: chandlerc,foad > > BUILD FAILED: failed make.test-suite > > sincerely, > -The Buildbot
Chandler Carruth
2012-Feb-21 11:45 UTC
[LLVMdev] buildbot failure in LLVM on clang-x86_64-debian-fnt
On Tue, Feb 21, 2012 at 2:51 AM, Jay Foad <jay.foad at gmail.com> wrote:> All, > > This buildbot is getting lots of assertion failures in the test suite. > They were probably caused by my commit: > > ------------------------------------------------------------------------ > r151049 | foad | 2012-02-21 09:25:52 +0000 (Tue, 21 Feb 2012) | 6 lines > Changed paths: > M /llvm/trunk/lib/VMCore/LLVMContextImpl.h > M /llvm/trunk/lib/VMCore/Type.cpp > > PR1210: make uniquing of struct and function types more efficient by > using a DenseMap and Talin's new GeneralHash, avoiding the need for a > temporary std::vector on every lookup. > > Patch by Meador Inge! > > ------------------------------------------------------------------------ > > ... but I can't reproduce the failures on my machine. I'm also running > x86_64 Linux, I've checked out the same revision of > llvm+clang+testsuite as the buildbot, I'm doing a Release+Asserts > build. > > Is anyone else seeing these failures? Any ideas how I can reproduce them > here? >If the hashing is the culprit, there are many more variables to consider: different pointer values entering the hash can cause drastically different results. The best way to spot this is often through scrutiny and direct testing of the hashing. We've already found one bug in the hashing library, so it could likely be tested significantly more thoroughly. I don't have time tonight, but I can scrutinize the actual commit using the hashing library to see if we're just putting bad data into it. Either way, I would try speculatively reverting to ensure it is this patch. If so, we can keep experimenting with the patch, but it's important to get the builders back. There are several others seeing the failure as well.> > Thanks, > Jay. > > > Example failure from > > http://lab.llvm.org:8011/builders/clang-x86_64-debian-fnt/builds/4877/steps/make.test-suite/logs/stdio > : > > 0 clang 0x0000000001e417ff > 1 clang 0x0000000001e43a62 > 2 libpthread.so.0 0x00002aaaaacd9f60 > 3 libc.so.6 0x00002aaaab8cb165 gsignal + 53 > 4 libc.so.6 0x00002aaaab8cdf70 abort + 384 > 5 libc.so.6 0x00002aaaab8c42b1 __assert_fail + 241 > 6 clang 0x0000000001d799dc > llvm::Intrinsic::getDeclaration(llvm::Module*, llvm::Intrinsic::ID, > llvm::ArrayRef<llvm::Type*>) + 172 > 7 clang 0x0000000001da8476 > llvm::IRBuilderBase::CreateMemCpy(llvm::Value*, llvm::Value*, > llvm::Value*, unsigned int, bool, llvm::MDNode*) + 278 > 8 clang 0x0000000000917059 > clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::FunctionDecl > const*, unsigned int, clang::CallExpr const*) + 13001 > 9 clang 0x000000000085491c > clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, > clang::CodeGen::ReturnValueSlot) + 236 > 10 clang 0x0000000000879146 > 11 clang 0x00000000008807ae > 12 clang 0x0000000000882f40 > clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, > bool) + 96 > 13 clang 0x0000000000847a27 > clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, > clang::CodeGen::AggValueSlot, bool) + 247 > 14 clang 0x00000000008e6948 > clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 712 > 15 clang 0x00000000008e9e40 > clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt > const&, bool, clang::CodeGen::AggValueSlot) + 272 > 16 clang 0x00000000008ea0ff > clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + > 271 > 17 clang 0x00000000008e66a7 > clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39 > 18 clang 0x00000000008e9c42 > clang::CodeGen::CodeGenFunction::EmitIfStmt(clang::IfStmt const&) + > 594 > 19 clang 0x00000000008e9e40 > clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt > const&, bool, clang::CodeGen::AggValueSlot) + 272 > 20 clang 0x00000000008ea0ff > clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + > 271 > 21 clang 0x00000000008e66a7 > clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39 > 22 clang 0x00000000008e71ef > clang::CodeGen::CodeGenFunction::EmitSwitchStmt(clang::SwitchStmt > const&) + 1247 > 23 clang 0x00000000008e9e40 > clang::CodeGen::CodeGenFunction::EmitCompoundStmt(clang::CompoundStmt > const&, bool, clang::CodeGen::AggValueSlot) + 272 > 24 clang 0x00000000008ea0ff > clang::CodeGen::CodeGenFunction::EmitSimpleStmt(clang::Stmt const*) + > 271 > 25 clang 0x00000000008e66a7 > clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const*) + 39 > 26 clang 0x00000000008f7193 > clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, > llvm::Function*, clang::CodeGen::CGFunctionInfo const&) + 995 > 27 clang 0x00000000007ca16b > > clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl) > + 587 > 28 clang 0x00000000007dbe0e > clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl) > + 190 > 29 clang 0x00000000007dc3ed > clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) + 1197 > 30 clang 0x00000000007dc82b > clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) + 491 > 31 clang 0x00000000007bc394 > 32 clang 0x00000000007bb611 > 33 clang 0x0000000000918525 clang::ParseAST(clang::Sema&, bool) > + 309 > 34 clang 0x00000000007baa04 > clang::CodeGenAction::ExecuteAction() + 68 > 35 clang 0x000000000065e701 > clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) + 321 > 36 clang 0x0000000000647289 > clang::ExecuteCompilerInvocation(clang::CompilerInstance*) + 1609 > 37 clang 0x000000000063c268 cc1_main(char const**, char > const**, char const*, void*) + 920 > 38 clang 0x0000000000645f77 main + 7079 > 39 libc.so.6 0x00002aaaab8b7c4d __libc_start_main + 253 > 40 clang 0x0000000000639ad9 > Stack dump: > 0. Program arguments: > > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/Release+Asserts/bin/clang > -cc1 -triple x86_64-pc-linux-gnu -emit-llvm -disable-free > -main-file-name slib.c -mrelocation-model static -masm-verbose > -mconstructor-aliases -munwind-tables -target-cpu x86-64 > -momit-leaf-frame-pointer -coverage-file Output/slib.ll -resource-dir > > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/Release+Asserts/bin/../lib/clang/3.1 > -D __USE_MISC -D __USE_GNU -D __USE_SVID -D __USE_XOPEN_EXTENDED -D > __USE_XOPEN -D unix -D _GNU_SOURCE -D __STDC_LIMIT_MACROS -D NDEBUG -I > > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.obj/MultiSource/Applications/siod > -I > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod > -I > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.obj/../test-suite.src/include > -I ../../../include -I > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/include > -I /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.src/include > -fmodule-cache-path /var/tmp/clang-module-cache -internal-isystem > /usr/local/include -internal-isystem > > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/llvm.obj/Release+Asserts/bin/../lib/clang/3.1/include > -internal-externc-isystem /usr/include/x86_64-linux-gnu > -internal-externc-isystem /include -internal-externc-isystem > /usr/include -O3 -fdebug-compilation-dir /bin/pwd -ferror-limit 19 > -fmessage-length 0 -mstackrealign -fgnu-runtime -fobjc-runtime-has-arc > -fobjc-runtime-has-weak -fobjc-fragile-abi -fdiagnostics-show-option > -disable-llvm-optzns -o Output/slib.ll -x c > > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c > 1. > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1133:1: > current parser token 'LISP' > 2. > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1097:6: > LLVM IR generation of declaration 'gc_relocate' > 3. > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1097:6: > Generating code for declaration 'gc_relocate' > 4. > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1098:1: > LLVM IR generation of compound statement ('{}') > 5. > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1103:4: > LLVM IR generation of compound statement ('{}') > 6. > /home/baldrick/osuosl/slave/clang-x86_64-debian-fnt/test-suite.src/MultiSource/Applications/siod/slib.c:1126:2: > LLVM IR generation of compound statement ('{}') > > > On 21 February 2012 09:45, <llvm.buildmaster at lab.llvm.org> wrote: > > The Buildbot has detected a new failure on builder > clang-x86_64-debian-fnt while building llvm. > > Full details are available at: > > http://lab.llvm.org:8011/builders/clang-x86_64-debian-fnt/builds/4877 > > > > Buildbot URL: http://lab.llvm.org:8011/ > > > > Buildslave for this Build: gcc20 > > > > Build Reason: scheduler > > Build Source Stamp: [branch trunk] 151050 > > Blamelist: chandlerc,foad > > > > BUILD FAILED: failed make.test-suite > > > > sincerely, > > -The Buildbot > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20120221/6716921e/attachment.html>
Jay Foad
2012-Feb-21 11:51 UTC
[LLVMdev] buildbot failure in LLVM on clang-x86_64-debian-fnt
On 21 February 2012 11:45, Chandler Carruth <chandlerc at google.com> wrote:> Either way, I would try speculatively reverting to ensure it is this patch. > If so, we can keep experimenting with the patch, but it's important to get > the builders back. There are several others seeing the failure as well.OK, I've reverted it. Duncan is letting me play on the build slave machine, where I'm having more luck reproducing it. I think the failures might depend on which version of GCC you use to compile LLVM. Or something. Cheers, Jay.
Meador Inge
2012-Feb-21 14:58 UTC
[LLVMdev] buildbot failure in LLVM on clang-x86_64-debian-fnt
On Tue, Feb 21, 2012 at 4:51 AM, Jay Foad <jay.foad at gmail.com> wrote:> All, > > This buildbot is getting lots of assertion failures in the test suite. > They were probably caused by my commit: > > ------------------------------------------------------------------------ > r151049 | foad | 2012-02-21 09:25:52 +0000 (Tue, 21 Feb 2012) | 6 lines > Changed paths: > M /llvm/trunk/lib/VMCore/LLVMContextImpl.h > M /llvm/trunk/lib/VMCore/Type.cpp > > PR1210: make uniquing of struct and function types more efficient by > using a DenseMap and Talin's new GeneralHash, avoiding the need for a > temporary std::vector on every lookup. > > Patch by Meador Inge! > > ------------------------------------------------------------------------ > > ... but I can't reproduce the failures on my machine. I'm also running > x86_64 Linux, I've checked out the same revision of > llvm+clang+testsuite as the buildbot, I'm doing a Release+Asserts > build. > > Is anyone else seeing these failures? Any ideas how I can reproduce them here?I tested on x86_64 Fedora 16 with GCC 4.6.2 and OS X Lion with clang 3.0 and could not reproduce the problem. I will keep investigating. -- Meador
Jay Foad
2012-Feb-21 15:05 UTC
[LLVMdev] buildbot failure in LLVM on clang-x86_64-debian-fnt
On 21 February 2012 14:58, Meador Inge <meadori at gmail.com> wrote:> On Tue, Feb 21, 2012 at 4:51 AM, Jay Foad <jay.foad at gmail.com> > I tested on x86_64 Fedora 16 with GCC 4.6.2 and OS X Lion with clang > 3.0 and could not reproduce the problem. I will keep investigating.I only get the failures with a Release build using GCC 4.4 (not 4.5 or 4.6). See this thread: http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120220/137504.html Thanks, Jay.
NAKAMURA Takumi
2012-Feb-21 15:51 UTC
[LLVMdev] buildbot failure in LLVM on clang-x86_64-debian-fnt
Jay, I can reproduce with -O2 and -O3. See http://bb.pgr.jp/builders/cmake-llvm-x86_64-linux/builds/185 gcc version 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC) The failures could be suppressed with -O2 -fno-strict-aliasing. I am dubious to type punning in ADT/Hashing.h. ...Takumi