Clang дает незаконное обучение, где GCC неC++

Программы на C++. Форум разработчиков
Anonymous
Clang дает незаконное обучение, где GCC не

Сообщение Anonymous »

Я нашел ситуацию, в которой 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

Вернуться в «C++»