Commit Graph

43155 Commits

Author SHA1 Message Date
Anton Korobeynikov fac70f2f44 Fix FP return for Win64 ABI
llvm-svn: 50342
2008-04-28 07:40:07 +00:00
Chris Lattner c9e280c78a Another collection of random cleanups. No functionality change.
llvm-svn: 50341
2008-04-28 07:16:35 +00:00
Chris Lattner 52504e78fb Remove the SmallVector ctor that converts from a SmallVectorImpl. This
conversion open the door for many nasty implicit conversion issues, and
can be easily solved by initializing with (V.begin(), V.end()) when 
needed.

This patch includes many small cleanups for sdisel also.

llvm-svn: 50340
2008-04-28 06:44:42 +00:00
Chris Lattner d03f4516cf restore the copy ctor in SmallVector. This fixes serious
errors I introduced in my last patch.

llvm-svn: 50338
2008-04-28 06:32:08 +00:00
Chris Lattner 8c7f5ad968 switch RegsForValue::Regs to be a SmallVector to avoid
heap thrash on tiny (usually single-element) vectors.

llvm-svn: 50335
2008-04-28 06:02:19 +00:00
Chris Lattner 84836144d9 generalize SmallVector copy ctor, there is no requirement for
the initialization vector to have the same fixed size, just the
same element type.

llvm-svn: 50334
2008-04-28 06:01:06 +00:00
Chris Lattner 8be72700b8 Fix PR2256, yet another miscompilation in simplifycfg of i
multiple return values.

Bill, please pull this into Tak.

llvm-svn: 50332
2008-04-28 00:19:07 +00:00
Chris Lattner 7855a5cb70 several multiple-retval fixes for bugpoint.
llvm-svn: 50331
2008-04-28 00:04:58 +00:00
Chris Lattner d04b818a91 move static function out of anon namespace, no functionality change.
llvm-svn: 50330
2008-04-27 23:48:12 +00:00
Chris Lattner 122721843b Another step to getting multiple result inline asm to work.
llvm-svn: 50329
2008-04-27 23:44:28 +00:00
Chris Lattner 10748d8edd Allow asms to return multiple results by value.
llvm-svn: 50328
2008-04-27 23:33:55 +00:00
Anton Korobeynikov e183b3cd76 Properly lower vararg's FORMAL_ARGUMENTS node on win64
llvm-svn: 50325
2008-04-27 23:15:03 +00:00
Anton Korobeynikov b5096e9c73 Handle fp80 for win64
llvm-svn: 50324
2008-04-27 22:54:09 +00:00
Argyrios Kyrtzidis 8eab584388 Call ExitScope before ActOnFinishNamespaceDef.
This is the same for functions and it's preferable to have the namespace as DeclContext during ActOnPopScope.

llvm-svn: 50322
2008-04-27 14:10:57 +00:00
Argyrios Kyrtzidis 081148986a Parsing of namespaces:
-NamespaceDecl for the AST
-Checks for name clashes between namespaces and tag/normal declarations.

This commit doesn't implement proper name lookup for namespaces.

llvm-svn: 50321
2008-04-27 13:50:30 +00:00
Argyrios Kyrtzidis ed1eec4812 Use PushOnScopeChains to introduce a decl into scope.
llvm-svn: 50320
2008-04-27 13:30:35 +00:00
Bill Wendling d8c2d29327 Added support for:
- defm and multiclass
- imbricatable multiline C style comment
- FIXME/TODO highlight in comment
- binary and hexadecimal number
- code using [{ }] is no highlighted as special (perhaps not the best
choice)
Patch by Cedric Venet!

llvm-svn: 50319
2008-04-27 09:44:10 +00:00
Chris Lattner 58b9ece38d typo
llvm-svn: 50316
2008-04-27 01:49:46 +00:00
Chris Lattner 2237973438 Implement a signficant optimization for inline asm:
When choosing between constraints with multiple options,
like "ir", test to see if we can use the 'i' constraint and
go with that if possible.  This produces more optimal ASM in
all cases (sparing a register and an instruction to load it),
and fixes inline asm like this:

void test () {
  asm volatile (" %c0 %1 " : : "imr" (42), "imr"(14));
}

Previously we would dump "42" into a memory location (which
is ok for the 'm' constraint) which would cause a problem
because the 'c' modifier is not valid on memory operands.

Isn't it great how inline asm turns 'missed optimization'
into 'compile failed'??

Incidentally, this was the todo in 
PowerPC/2007-04-24-InlineAsm-I-Modifier.ll

Please do NOT pull this into Tak.

llvm-svn: 50315
2008-04-27 00:37:18 +00:00
Chris Lattner a937baeb9b isa+cast -> dyn_cast
llvm-svn: 50314
2008-04-27 00:16:18 +00:00
Chris Lattner 4793515a9c Move a bunch of inline asm code out of line.
llvm-svn: 50313
2008-04-27 00:09:47 +00:00
Chris Lattner 724539c001 A few inline asm cleanups:
- Make targetlowering.h fit in 80 cols.
  - Make LowerAsmOperandForConstraint const.
  - Make lowerXConstraint -> LowerXConstraint
  - Make LowerXConstraint return a const char* instead of taking a string byref.

llvm-svn: 50312
2008-04-26 23:02:14 +00:00
Chris Lattner b4224cda3b no need to implement this method and just have it call
the default impl.

llvm-svn: 50311
2008-04-26 22:59:59 +00:00
Argyrios Kyrtzidis fa2d2f2886 Make assertions for all addresses passed to ProgramPoint that they have at least an 8-byte alignment.
llvm-svn: 50310
2008-04-26 15:19:51 +00:00
Chris Lattner 67ca6f6347 When SRoA'ing a global variable, make sure the new globals get the
appropriate alignment.  This fixes a miscompilation of 252.eon on
x86-64 (rdar://5891920).

Bill, please pull this into Tak.

llvm-svn: 50308
2008-04-26 07:40:11 +00:00
Nate Begeman 98f0898e42 Feedback from chris
llvm-svn: 50305
2008-04-25 21:47:35 +00:00
Ted Kremenek e5aa10cec4 Pass down more -iXXX options that clang supports
llvm-svn: 50304
2008-04-25 21:28:20 +00:00
Nate Begeman f10b493fc0 Add a testcase for the recent "handle variable vector insert elt in mem" patch
llvm-svn: 50303
2008-04-25 21:26:59 +00:00
Dale Johannesen 0d1d3df564 change comments per review
llvm-svn: 50300
2008-04-25 21:16:07 +00:00
Ted Kremenek d71ba91a7d fix broken tag
llvm-svn: 50299
2008-04-25 20:31:58 +00:00
Ted Kremenek c7dde7a25b Another link fix.
llvm-svn: 50298
2008-04-25 20:30:34 +00:00
Ted Kremenek d6db434162 Fix links.
llvm-svn: 50297
2008-04-25 20:29:37 +00:00
Evan Cheng 402572a149 Update tests.
llvm-svn: 50293
2008-04-25 20:13:47 +00:00
Evan Cheng 1e78184a99 Extract the lower 64-bit if a MMX value is passed in a XMM register.
llvm-svn: 50292
2008-04-25 20:13:28 +00:00
Evan Cheng 5ba02020e6 Fix illegal MMX_MOVDQ2Qrr pattern. vector_extract result must be a scalar value.
llvm-svn: 50291
2008-04-25 20:12:46 +00:00
Evan Cheng ccde6dd016 Special handling for MMX values being passed in either GPR64 or lower 64-bits of XMM registers.
llvm-svn: 50289
2008-04-25 19:11:04 +00:00
Ted Kremenek dd38e0bd0d Fix bug in BugReporter where we didn't handle emitting diagnostics for
empty CFGBlocks that only contained a terminator.

Added improved diagnostics for break and continue statements and default branches in switch statements.

This fixes <rdar://problem/5889244>.

llvm-svn: 50286
2008-04-25 19:01:27 +00:00
Ted Kremenek 6d2eeddff5 Added some notes about the LLVM "checker". This isn't a public link yet; still refining.
llvm-svn: 50283
2008-04-25 18:44:36 +00:00
Dan Gohman ca95a5f49f Remove the code from CodeGenPrepare that moved getresult instructions
to the block that defines their operands. This doesn't work in the
case that the operand is an invoke, because invoke is a terminator
and must be the last instruction in a block.

Replace it with support in SelectionDAGISel for copying struct values
into sequences of virtual registers.

llvm-svn: 50279
2008-04-25 18:27:55 +00:00
Evan Cheng 6d653b58f9 Fix MMX_MOVQ2DQrr pattern. It's illegal to do a bitconvert from a smaller type to a larger one.
llvm-svn: 50278
2008-04-25 18:19:54 +00:00
Chris Lattner b58a365cb6 new testcase
llvm-svn: 50274
2008-04-25 18:11:06 +00:00
Nate Begeman 6f94f61317 Pull the code to perform an INSERT_VECTOR_ELT in memory out into its own
function, and then use it to fix a bug in SplitVectorOp that expected inserts
to always have constant insertion indices.

llvm-svn: 50273
2008-04-25 18:07:40 +00:00
Anton Korobeynikov f18ec8b160 Update test
llvm-svn: 50272
2008-04-25 17:54:21 +00:00
Nate Begeman ca270ad96f Feedback from chris
llvm-svn: 50271
2008-04-25 17:45:52 +00:00
Chris Lattner 33bd24bd92 add a note
llvm-svn: 50267
2008-04-25 17:25:00 +00:00
Evan Cheng 715eaa031c 80 col violation.
llvm-svn: 50266
2008-04-25 17:21:40 +00:00
Nick Lewycky 4d43d3c72c Remove 'unwinds to' support from mainline. This patch undoes r47802 r47989
r48047 r48084 r48085 r48086 r48088 r48096 r48099 r48109 and r48123.

llvm-svn: 50265
2008-04-25 16:53:59 +00:00
Chris Lattner 73669defed remove the 'unused static' diagnostic from codegen. This should be
reimplemented in Sema someday.  This is tracked in PR2236.  Until then
disabling it removes some bogus diagnostics (see 2236).

llvm-svn: 50263
2008-04-25 15:47:13 +00:00
Nuno Lopes 0276933b4b initial support for recognizing __transparent_union__ attributes
comments on the ML will follow

llvm-svn: 50262
2008-04-25 09:32:00 +00:00
Evan Cheng 59834d1c7a Not checking for intrinsics which do not have a chain operand.
llvm-svn: 50260
2008-04-25 08:55:28 +00:00