[LLVMbugs] [Bug 12772] New: CONCAT_VECTORS expansion creates broken code.
bugzilla-daemon at llvm.org
bugzilla-daemon at llvm.org
Wed May 9 01:34:24 PDT 2012
http://llvm.org/bugs/show_bug.cgi?id=12772
Bug #: 12772
Summary: CONCAT_VECTORS expansion creates broken code.
Product: libraries
Version: trunk
Platform: PC
OS/Version: Linux
Status: NEW
Severity: enhancement
Priority: P
Component: Common Code Generator Code
AssignedTo: unassignedbugs at nondot.org
ReportedBy: hkultala at cs.tut.fi
CC: llvmbugs at cs.uiuc.edu
Classification: Unclassified
Created attachment 8518
--> http://llvm.org/bugs/attachment.cgi?id=8518
patch for this bug. against llvm 3.1-svn
The expansion of CONCAT_VECTORS goes into
SelectionDAGLegalize::ExpandVectorBuildThroughStack(SDNode* Node).
This routine converts the expansion into multiple stores into stack and a load
from the stack.
This correctly stores the first vector into stack but the stack offset of the
second vector is incorrect and the store happens into wrong place, so some
elements of vector end up in wrong place and last element becomes total
garbage.
This is because the stack offset is calculated by the size of the _element_ of
the vector instead of size of the stored data type (size of the _whole_
vector), so it breaks for CONCAT_VECTORS where input types are vectors.
The same routine is used expanding BUILD_VECTOR where it works correctly, as
the inputs of BUILD_VECTOR are always scalars, so the element size is same as
the whole data type size.
--
Configure bugmail: http://llvm.org/bugs/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.
More information about the llvm-bugs
mailing list