aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDale Johannesen <dalej@apple.com>2007-09-28 00:21:38 +0000
committerDale Johannesen <dalej@apple.com>2007-09-28 00:21:38 +0000
commit4c839d0736cfe4ef442a8626cc50fa9c95f51242 (patch)
tree28e917b8a92472fd9d27d2a975abf1fe41c409e0
parent63b83452bf604fce122dd35a660f22e818895e01 (diff)
downloadexternal_llvm-4c839d0736cfe4ef442a8626cc50fa9c95f51242.zip
external_llvm-4c839d0736cfe4ef442a8626cc50fa9c95f51242.tar.gz
external_llvm-4c839d0736cfe4ef442a8626cc50fa9c95f51242.tar.bz2
Don't do SRA for unions with long double fields.
Fixes a SWB crash. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42422 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Transforms/Scalar/ScalarReplAggregates.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
index 1092b88..1d9e402 100644
--- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp
+++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
@@ -905,6 +905,9 @@ static bool MergeInType(const Type *In, const Type *&Accum,
case Type::PointerTyID: Accum = TD.getIntPtrType(); break;
case Type::FloatTyID: Accum = Type::Int32Ty; break;
case Type::DoubleTyID: Accum = Type::Int64Ty; break;
+ case Type::X86_FP80TyID: return true;
+ case Type::FP128TyID: return true;
+ case Type::PPC_FP128TyID: return true;
default:
assert(Accum->isInteger() && "Unknown FP type!");
break;
@@ -914,6 +917,9 @@ static bool MergeInType(const Type *In, const Type *&Accum,
case Type::PointerTyID: In = TD.getIntPtrType(); break;
case Type::FloatTyID: In = Type::Int32Ty; break;
case Type::DoubleTyID: In = Type::Int64Ty; break;
+ case Type::X86_FP80TyID: return true;
+ case Type::FP128TyID: return true;
+ case Type::PPC_FP128TyID: return true;
default:
assert(In->isInteger() && "Unknown FP type!");
break;