Build failure with libcxx


Recently my libcxx enabled llvm/clang builds has started to fail in stage2. I must admit I am stomped because I cannot make sense of the error:

[ 723s] FAILED: /home/abuild/rpmbuild/BUILD/llvm/stage1/bin/clang++ -DLLVMSupport_EXPORTS -DNDEBUG -D_GNU_SOURCE -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -stdlib=libc++ -fPIC -fvisibility-inlines-hidden -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic -Wno-long-long -Wcovered-switch-default -Wnon-virtual-dtor -std=c++11 -fcolor-diagnostics -ffunction-sections -fdata-sections -O2 -g -DNDEBUG -fPIC -Ilib/Support -I…/lib/Support -Iinclude -I…/include -fno-exceptions -MMD -MT lib/Support/CMakeFiles/LLVMSupport.dir/Allocator.cpp.o -MF lib/Support/CMakeFiles/LLVMSupport.dir/Allocator.cpp.o.d -o lib/Support/CMakeFiles/LLVMSupport.dir/Allocator.cpp.o -c …/lib/Support/Allocator.cpp
[ 723s] In file included from …/lib/Support/Allocator.cpp:14:
[ 723s] …/include/llvm/Support/Allocator.h:421:65: error: ‘S’ does not refer to a value
[ 723s] Size, std::min((size_t)llvm::NextPowerOf2(Size), offsetof(S, x)));
[ 723s] ^
[ 723s] …/include/llvm/Support/Allocator.h:411:10: note: declared here
[ 723s] struct S {
[ 723s] ^
[ 723s] 1 error generated.

clang r207403 is OK but trunk fails. Any ideas for debugging this would be appreciated.


I did a diff -u broken.ii working.ii and the difference explains the problem:

@@ -36617,7 +36628,7 @@
} x;
return Allocator.Allocate(

  • Size, std::min((size_t)llvm::NextPowerOf2(Size), offsetof(S, x)));
  • Size, std::min((size_t)llvm::NextPowerOf2(Size), __builtin_offsetof(S, x)));

Looks like non-working clang is using offsetof where-as the working one uses __builtin_offsetof

Ok looks like r207606 regressed this. CC’ing Niko.

Niko, please see the messages below. This is on openSUSE 13.1 both on i586 and x86-64. Reverting r207606 fixes the second stage bootstrap.

I’m afk for a few more hours (traveling), will look once I’m at a keyboard. Is there a PR for this?

Not yet, will file one and CC you. Thanks!

Filed PR19723