Я нашел ситуацию, в которой Clang дает незаконную инструкцию, где GCC нет,
, экспериментируя с этим вопросом. Задача.#include
#define EIGEN_MATRIXBASE_PLUGIN "eigen_matrix_addons.hpp"
#include
int main() {
Eigen::Matrix2d A;
A
friend std::ostream &operator
$ clang++ -std=c++11 -Wall -Wextra -pedantic -isystem/usr/include/eigen3 -I. -o eigen_clang eigen.cpp
$ ./eigen_clang
0 1
Illegal instruction
$ clang++ --version
clang version 3.4 (branches/release_34 198681)
Target: x86_64-suse-linux
Thread model: posix
< /code>
Как вы можете видеть, программа прерывается после выполнения незаконной инструкции. Задняя часть в GDB показывает, что проблема возникает во второй строке EIGEN_MATRIX_ADDONS.HPP < /code>: < /p>
(gdb) bt
#0 0x00000000004013e1 in Eigen::operator
.e. Наверное, static_cast < /code>? < /p>
Моя версия с собственной собственностью-3.2.0-2.1.4 в соответствии с Zypper < /code>. < /p>
edit < /h1>
dis-assemblembly, что @mysticial попросило: < /p br />
.(gdb) disass
Dump of assembler code for function Eigen::operator
Подробнее здесь: https://stackoverflow.com/questions/251 ... gcc-doesnt