llvm-6502/lib
Chris Lattner 1a3257bbf5 Make SROA produce a vector only when the alloca is actually
accessed at least once as a vector.  This prevents it from
compiling the example in not-a-vector into:

define double @test(double %A, double %B) {
	%tmp4 = insertelement <7 x double> undef, double %A, i32 0
	%tmp = insertelement <7 x double> %tmp4, double %B, i32 4
	%tmp2 = extractelement <7 x double> %tmp, i32 4
	ret double %tmp2
}

instead, producing the integer code.  Producing vectors when they
aren't otherwise in the program is dangerous because a lot of other
code treats them carefully and doesn't want to break them down.
OTOH, many things want to break down tasty i448's.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63638 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-03 18:15:05 +00:00
..
Analysis Teach AliasAnalysis that a bunch of the atomic intrinsics only dereference their arguments. 2009-02-03 06:27:22 +00:00
Archive
AsmParser
Bitcode fix a bitcode reader bug where it can't handle extractelement correctly: 2009-02-03 02:11:28 +00:00
CodeGen Fix PR3411. When replacing values, nodes are analyzed 2009-02-03 10:23:33 +00:00
Debugger
ExecutionEngine
Linker
Support Improve -fno-opt style option processing to not require an extra 2009-02-02 22:48:49 +00:00
System
Target Create DebugLoc information in FastISel. Several temporary methods were 2009-02-03 00:55:04 +00:00
Transforms Make SROA produce a vector only when the alloca is actually 2009-02-03 18:15:05 +00:00
VMCore reject things like: zext <4 x i32> %tmp to i256 2009-02-02 07:40:17 +00:00
Makefile