DescriptionStefan Schweter
2014-08-24 13:08:07 UTC
Description of problem:
When using clang 3.4.2 and boost, I got many "__extern_always_inline" error messages.
Notice: These error messages won't appear when using e.g Arch Linux with clang 3.4.2 and Boost 1.55 or Debian Debian Testing with the same boost and clang version.
Version-Release number of selected component (if applicable):
Fedora 21
clang 3.4.2
Boost 1.55
How reproducible:
Here's short example code:
#include <boost/archive/binary_oarchive.hpp>
#include <boost/archive/binary_iarchive.hpp>
#include <string>
#include <fstream>
class test_me
{
public:
friend class boost::serialization::access;
test_me(){}
template <typename Archive> void load(Archive &ar)
{
}
void load(std::string file_name);
};
void test_me::load(std::string file_name)
{
std::ifstream input_fs(file_name.c_str());
boost::archive::binary_iarchive ia(input_fs);
load(ia);
}
int main()
{
test_me * test = new test_me();
test->load("test.out");
return 0;
}
Steps to Reproduce:
1. Compile the code with clang++ -Wunreachable-code -std=c++11 -O3 -lboost_serialization test.cpp
2.
3.
Actual results:
In file included from test.cpp:2:
In file included from /usr/include/boost/archive/binary_iarchive.hpp:20:
In file included from /usr/include/boost/archive/binary_iarchive_impl.hpp:21:
In file included from /usr/include/boost/archive/basic_binary_iprimitive.hpp:33:
In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.9.1/../../../../include/c++/4.9.1/cstring:42:
/usr/include/string.h:82:1: error: unknown type name '__extern_always_inline'
__extern_always_inline void *
Expected results:
No error messages.
Additional info:
I can fix that manually with adding -D__extern_always_inline=inline as additional clang parameter. But the code mentioned above is working on Arch Linux + Debian Testing, so I guess it must be somethig redhat-special?
Thanks many in advance! If you need additional information please let me know!
Regards,
Stefan
Description of problem: When using clang 3.4.2 and boost, I got many "__extern_always_inline" error messages. Notice: These error messages won't appear when using e.g Arch Linux with clang 3.4.2 and Boost 1.55 or Debian Debian Testing with the same boost and clang version. Version-Release number of selected component (if applicable): Fedora 21 clang 3.4.2 Boost 1.55 How reproducible: Here's short example code: #include <boost/archive/binary_oarchive.hpp> #include <boost/archive/binary_iarchive.hpp> #include <string> #include <fstream> class test_me { public: friend class boost::serialization::access; test_me(){} template <typename Archive> void load(Archive &ar) { } void load(std::string file_name); }; void test_me::load(std::string file_name) { std::ifstream input_fs(file_name.c_str()); boost::archive::binary_iarchive ia(input_fs); load(ia); } int main() { test_me * test = new test_me(); test->load("test.out"); return 0; } Steps to Reproduce: 1. Compile the code with clang++ -Wunreachable-code -std=c++11 -O3 -lboost_serialization test.cpp 2. 3. Actual results: In file included from test.cpp:2: In file included from /usr/include/boost/archive/binary_iarchive.hpp:20: In file included from /usr/include/boost/archive/binary_iarchive_impl.hpp:21: In file included from /usr/include/boost/archive/basic_binary_iprimitive.hpp:33: In file included from /usr/bin/../lib/gcc/x86_64-redhat-linux/4.9.1/../../../../include/c++/4.9.1/cstring:42: /usr/include/string.h:82:1: error: unknown type name '__extern_always_inline' __extern_always_inline void * Expected results: No error messages. Additional info: I can fix that manually with adding -D__extern_always_inline=inline as additional clang parameter. But the code mentioned above is working on Arch Linux + Debian Testing, so I guess it must be somethig redhat-special? Thanks many in advance! If you need additional information please let me know! Regards, Stefan