From 257d5f32cee1fa8d51d2adb3cd71f8bf9823a7a5 Mon Sep 17 00:00:00 2001
From: Volker Reichelt <reichelt@igpm.rwth-aachen.de>
Date: Thu, 9 Dec 2004 10:34:21 +0000
Subject: [PATCH] re PR c++/18073 (mmintrin.h rejected by C++ frontend)

	PR c++/18073
	* typeck.c (build_reinterpret_cast_1): Allow cast from vector type.

	* g++.dg/other/mmintrin.C: New test.

From-SVN: r91929
---
 gcc/cp/ChangeLog                      | 5 +++++
 gcc/cp/typeck.c                       | 2 ++
 gcc/testsuite/ChangeLog               | 5 +++++
 gcc/testsuite/g++.dg/other/mmintrin.C | 4 ++++
 4 files changed, 16 insertions(+)
 create mode 100644 gcc/testsuite/g++.dg/other/mmintrin.C

diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 2d73639bce14..202e416cb571 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-09  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+	PR c++/18073
+	* typeck.c (build_reinterpret_cast_1): Allow cast from vector type.
+
 2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>
 
 	PR c++/16681
diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index a26bff4b5610..74380d36a92b 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -4956,6 +4956,8 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p,
     }
   else if (TREE_CODE (type) == VECTOR_TYPE)
     return fold_if_not_in_template (convert_to_vector (type, expr));
+  else if (TREE_CODE (intype) == VECTOR_TYPE)
+    return fold_if_not_in_template (convert_to_integer (type, expr));
   else
     {
       if (valid_p)
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index d8ad0adbf58a..54b1dfe9da3d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-12-09  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>
+
+	PR c++/18073
+	* g++.dg/other/mmintrin.C: New test.
+
 2004-12-09  Nathan Sidwell  <nathan@codesourcery.com>
 
 	PR c++/16681
diff --git a/gcc/testsuite/g++.dg/other/mmintrin.C b/gcc/testsuite/g++.dg/other/mmintrin.C
new file mode 100644
index 000000000000..417a1acc6de1
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/mmintrin.C
@@ -0,0 +1,4 @@
+// { dg-do compile { target i?86-*-* x86_64-*-* } }
+// { dg-options "-msse" }
+
+#include <xmmintrin.h>
-- 
GitLab