diff options
| author | Eric Christopher <echristo@apple.com> | 2011-05-09 20:04:43 +0000 |
|---|---|---|
| committer | Eric Christopher <echristo@apple.com> | 2011-05-09 20:04:43 +0000 |
| commit | 448042847456df52a7a7c11ff2c7fa059c58105a (patch) | |
| tree | e6da8560c2c93ea57158ad09ffb8ee5432e3508b /llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | |
| parent | 0cfdb9517e56f1de82722ace206d8336087f5fb3 (diff) | |
| download | llvm-448042847456df52a7a7c11ff2c7fa059c58105a.zip llvm-448042847456df52a7a7c11ff2c7fa059c58105a.tar.gz llvm-448042847456df52a7a7c11ff2c7fa059c58105a.tar.bz2 | |
Look through struct wrapped types for inline asm statments.
Patch by Evan Cheng.
llvm-svn: 131093
Diffstat (limited to 'llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index 366c130..a01e2b8 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -5268,6 +5268,7 @@ public: const llvm::Type *OpTy = CallOperandVal->getType(); + // FIXME: code duplicated from TargetLowering::ParseConstraints(). // If this is an indirect operand, the operand is a pointer to the // accessed type. if (isIndirect) { @@ -5277,6 +5278,11 @@ public: OpTy = PtrTy->getElementType(); } + // Look for vector wrapped in a struct. e.g. { <16 x i8> }. + if (const StructType *STy = dyn_cast<StructType>(OpTy)) + if (STy->getNumElements() == 1) + OpTy = STy->getElementType(0); + // If OpTy is not a single value, it may be a struct/union that we // can tile with integers. if (!OpTy->isSingleValueType() && OpTy->isSized()) { |
