[Bug 910363] Re: miscompile writing to bitfield at -Os
dn
910363 at bugs.launchpad.net
Thu Jan 5 08:33:39 UTC 2012
To be more specific. These two member variables are at offset 0x8:
unsigned ID : 8;
unsigned SubclassData : 24;
When setSubclassData() isn't inlined, it's called with the address of
'SubclassData' in %rdi...:
0x00007ffff76d684f <+71>: lea 0x9(%rdi),%r12
0x00007ffff76d6853 <+75>: or $0x1,%esi
0x00007ffff76d6856 <+78>: mov %r12,%rdi
0x00007ffff76d6859 <+81>: callq 0x7ffff76d6774 <llvm::Type::setSubclassData(unsigned int)>
...but then, it writes more than 24 bits to that address, writing zeroes
into the next member:
0x00007ffff76d6774 <+0>: mov %esi,%eax
0x00007ffff76d6776 <+2>: sub $0x8,%rsp
0x00007ffff76d677a <+6>: and $0xffffff,%eax
0x00007ffff76d677f <+11>: cmp %esi,%eax
0x00007ffff76d6781 <+13>: mov %eax,(%rdi) # corruption
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-4.5 in Ubuntu.
https://bugs.launchpad.net/bugs/910363
Title:
miscompile writing to bitfield at -Os
Status in “gcc-4.5” package in Ubuntu:
New
Bug description:
The attached preprocessed file was extracted out of a file from LLVM. When it was compiled by g++-4.5 at -Os, and LLVM's test suite was run, it resulted in the assert in PointerType's constructor firing:
llvm::PointerType::PointerType(llvm::Type*, unsigned int): Assertion `oldNCT == NumContainedTys && "bitfield written out of bounds?"' failed.
This was the invocation I used:
g++-4.5 -Os -fPIC -g -pedantic -Wno-long-long -fno-exceptions -o lib/VMCore/CMakeFiles/LLVMCore.dir/Type2.cpp.o -c Type2.ii
Further details here:
http://llvm.org/PR11652
ProblemType: Bug
DistroRelease: Ubuntu 11.04
Package: g++-4.5 4.5.2-8ubuntu4
Uname: Linux 3.1.0-custom x86_64
Architecture: amd64
Date: Tue Dec 27 22:11:40 2011
InstallationMedia: Ubuntu 11.04 "Natty Narwhal" - Release amd64 (20110427.1)
ProcEnviron:
LANGUAGE=en_US:en
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
SourcePackage: gcc-4.5
UpgradeStatus: No upgrade log present (probably fresh install)
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-4.5/+bug/910363/+subscriptions
More information about the foundations-bugs
mailing list