[Llvm-bgq-discuss] clang ICE: std::atomic<uint_fast16_t>
Michael Blocksome
blocksom at us.ibm.com
Tue Feb 5 16:20:55 CST 2013
I recently learned that I should not be using types such as 'uint32_t' for
atomics, but instead should use the "fast" versions of these types, such
as 'uint_fast32_t'. However, when I use these "fast" types with clang and
the std::atomic::operator= overload I get a nasty ICE.
I get the same ICE with 'uint64_t', so I'm guessing that 'uint_fast*_t' is
a typedef to 'uint64_t'...
----
$> cat atomic_store.cc
#include <atomic>
int main ()
{
// this works fine ...
std::atomic<uint_fast16_t> a(0);
a++;
std::atomic<uint_fast16_t> b;
b = 0; // fail
std::atomic<uint16_t> c;
c = 0; // success
std::atomic<uint32_t> d;
d = 0; // success
std::atomic<uint64_t> e;
e = 0; // fail
std::atomic<uint_fast32_t> f;
f = 0; // fail
return 0;
};
$> /bghome/blocksom/development/c++11/bgclang++ -ferror-limit=10 -I
/bghome/blocksom/development/c++11/install/libc++/include -std=c++11
-stdlib=libc++ -g -c atomic_store.cc -o atomic_store.o
fatal error: error in backend: Cannot select: 0x10005b64a80: ch =
AtomicStore 0x10005b67ac0, 0x10005b66ca0, 0x10005b679c0<Volatile
ST8[%__a_.i.i62]> [ID=10]
dbg:/bghome/blocksom/development/c++11/install/libc++/include/atomic:571
0x10005b66ca0: i64,ch = CopyFromReg 0x10005ac0660, 0x10005b60c30 [ID=8]
dbg:/bghome/blocksom/development/c++11/install/libc++/include/atomic:571
0x10005b60c30: i64 = Register %vreg1 [ID=5]
0x10005b679c0: i64,ch = load 0x10005ac0660, 0x10005b65390,
0x10005b61230<LD8[%.atomictmp.i.i57]> [ORD=98] [ID=7]
dbg:/bghome/blocksom/development/c++11/install/libc++/include/atomic:571
0x10005b65390: i64 = FrameIndex<14> [ORD=98] [ID=1]
0x10005b61230: i64 = undef [ORD=98] [ID=2]
In function: main
clang: error: clang frontend command failed with exit code 70 (use -v to
see invocation)
clang version 3.3 (trunk 170456)
Target: powerpc64-bgq-linux
Thread model: posix
clang: note: diagnostic msg: PLEASE submit a bug report to
http://llvm.org/bugs/ and include the crash backtrace, preprocessed
source, and associated run script.
clang: note: diagnostic msg:
********************
PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:
Preprocessed source(s) and associated run script(s) are located at:
clang: note: diagnostic msg: /tmp/atomic_store-j00aLw.cpp
clang: note: diagnostic msg: /tmp/atomic_store-j00aLw.sh
clang: note: diagnostic msg:
********************
Any ideas?
--> http://en.cppreference.com/w/c/types/integer
--> http://en.cppreference.com/w/cpp/atomic/atomic/operator%3D
Thanks,
Michael Blocksome
Blue Gene Messaging
blocksom at us.ibm.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alcf.anl.gov/pipermail/llvm-bgq-discuss/attachments/20130205/24d43f41/attachment.html>
More information about the llvm-bgq-discuss
mailing list