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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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