x86-64 byval vectors use 8 byte alignment.

llvm-svn: 52752
diff --git a/llvm-gcc-4.2/gcc/config/i386/llvm-i386-target.h b/llvm-gcc-4.2/gcc/config/i386/llvm-i386-target.h
index 2228b45..b8b6599 100644
--- a/llvm-gcc-4.2/gcc/config/i386/llvm-i386-target.h
+++ b/llvm-gcc-4.2/gcc/config/i386/llvm-i386-target.h
@@ -85,10 +85,12 @@
 
 #ifdef LLVM_ABI_H
 
-/* Objects containing SSE vectors are 16 byte aligned, everything else 4. */
+/* On x86-32 objects containing SSE vectors are 16 byte aligned, everything
+   else 4.  On x86-64 vectors are 8-byte aligned, everything else can
+   be figured out by the back end. */
 extern "C" bool contains_128bit_aligned_vector_p(tree);
 #define LLVM_BYVAL_ALIGNMENT(T) \
-  (TARGET_64BIT ? 0 : \
+  (TARGET_64BIT ? (TREE_CODE(T)==VECTOR_TYPE ? 8 : 0) : \
    TARGET_SSE && contains_128bit_aligned_vector_p(T) ? 16 : 4)
 
 extern tree llvm_x86_should_return_selt_struct_as_scalar(tree);