Commit Graph

27796 Commits

Author SHA1 Message Date
Torok Edwin 73312b3f39 Another attempt at fixing PR2975.
Types can have references to eachother, so we can't just call destroy on them.

llvm-svn: 68523
2009-04-07 17:23:02 +00:00
Chris Lattner 321741af5f fix rdar://6762290, a crash compiling cxx filt with clang.
llvm-svn: 68500
2009-04-07 05:03:34 +00:00
Chris Lattner 47d6e7b93e remove empty section
llvm-svn: 68485
2009-04-07 02:55:53 +00:00
Bob Wilson 0669f6d295 Handle 'a' modifier in ARM inline assembly.
Patch by Richard Pennington.

llvm-svn: 68464
2009-04-06 21:46:51 +00:00
Torok Edwin 839026562c revert r68457, its crashing in make check.
llvm-svn: 68459
2009-04-06 20:57:34 +00:00
Chris Lattner b9e07fd297 Teach llvm-bcanalyzer to skip over the header we use on LLVM IR files.
llvm-svn: 68458
2009-04-06 20:54:32 +00:00
Torok Edwin 96dadc3b63 fix (part of) memory leak on shutdown. See PR2975.
llvm-svn: 68457
2009-04-06 20:49:21 +00:00
Ed Schouten 01aa6ec97a Let the strcat optimizer return the pointer to the start of the buffer,
instead of the place where it started to perform the string copy.

- PR3661
- Patch by Benjamin Kramer!

llvm-svn: 68443
2009-04-06 13:06:48 +00:00
Sanjiv Gupta 0b08df8c09 Map stack based frameindices for spills to zero based indices that can be accessed based on an external symbol defining the location of temporary data for a function. For example: we have spill slots addressed as foo.tmp + 0, foo.tmp + 1 etc.
llvm-svn: 68442
2009-04-06 10:54:50 +00:00
Nick Lewycky 0bb65f44fa Remove bogus include.
llvm-svn: 68421
2009-04-04 07:42:46 +00:00
Nick Lewycky 49f891958f Add support for embedded metadata to LLVM. This introduces two new types of
Constant, MDString and MDNode which can only be used by globals with a name
that starts with "llvm." or as arguments to a function with the same naming
restriction.

llvm-svn: 68420
2009-04-04 07:22:01 +00:00
Bob Wilson 6bedd59894 Wrap some lines to fix indentation problems.
llvm-svn: 68405
2009-04-03 21:08:42 +00:00
Bob Wilson d24b794f31 Fix some comments.
llvm-svn: 68404
2009-04-03 20:53:25 +00:00
Dan Gohman 8bff8a1e87 Fix a TargetLowering optimization so that it doesn't duplicate
loads when an input node has multiple uses.

llvm-svn: 68398
2009-04-03 20:11:30 +00:00
Oscar Fuentes f4de47b91e CMake: removed IA64AsmPrinter.cpp from lib/Target/IA64/CMakeLists.txt
llvm-svn: 68384
2009-04-03 12:11:43 +00:00
Anton Korobeynikov 06d2d8ba72 Separate MIPS asmprinter
llvm-svn: 68383
2009-04-03 10:41:41 +00:00
Anton Korobeynikov 354171f060 Fix target library name
llvm-svn: 68382
2009-04-03 10:41:17 +00:00
Anton Korobeynikov b1cce77929 Fix comment
llvm-svn: 68381
2009-04-03 10:41:00 +00:00
Anton Korobeynikov 547b43a809 Move IA64 asmprinter to separate library
llvm-svn: 68380
2009-04-03 10:38:51 +00:00
Mon P Wang 9c186c5d27 Added a x86 dag combine to increase the chances to use a
movq for v2i64 on x86-32.

llvm-svn: 68368
2009-04-03 02:43:30 +00:00
Dan Gohman b425feb2aa Delete ISD::INSERT_SUBREG and ISD::EXTRACT_SUBREG, which are unused.
Note that these are distinct from TargetInstrInfo::INSERT_SUBREG
and TargetInstrInfo::EXTRACT_SUBREG, which are used.

llvm-svn: 68355
2009-04-03 00:25:26 +00:00
Chris Lattner 206f75e7d2 use higher level APIs.
llvm-svn: 68351
2009-04-03 00:02:39 +00:00
Sanjiv Gupta e9cff3328f Fixed build warnings.
llvm-svn: 68333
2009-04-02 18:33:12 +00:00
Sanjiv Gupta cc841a3810 To convert the StopPoint insn into an assembler directive by ISel, we need to have access to the line number field. So we convert that info as an operand by custom handling DBG_STOPPOINT in legalize.
llvm-svn: 68329
2009-04-02 18:03:10 +00:00
Sanjiv Gupta 1e8860a8f5 Params are not being generated as static globals now. The caller passes them onto the callee's stack directly and the callee loads the argvals from its own stack. Clang generated frameindexes validatd by recalculating the stack as if all frameindexes represent 1-byte slots.
llvm-svn: 68327
2009-04-02 17:42:00 +00:00
Mikhail Glushenkov 12062ba83d Fix build on Linux.
llvm-svn: 68269
2009-04-02 01:11:37 +00:00
Owen Anderson 98f912bf13 Reapply r68211, with the miscompilations it caused fixed.
llvm-svn: 68262
2009-04-01 23:53:49 +00:00
Devang Patel ec9c58f7e5 Clean up pass manager cache after each run.
llvm-svn: 68254
2009-04-01 22:34:41 +00:00
Chris Lattner d2eb0a63a1 silence warning in release-asserts build.
llvm-svn: 68253
2009-04-01 22:14:45 +00:00
Daniel Dunbar 4abd56677d Add llvm::Triple class for abstracting access to target triples.
- The code is silly, I'm just amusing myself. Rewrite to be efficient
   if you like. :)

Also, if you wish to debate the proper names of the triple components
I'm all ears.

llvm-svn: 68252
2009-04-01 21:53:23 +00:00
Dan Gohman cff6953c45 Use CHAR_BIT instead of hard-coding 8 in several places where it
is appropriate. This helps visually differentiate host-oriented
calculations from target-oriented calculations.

llvm-svn: 68227
2009-04-01 18:45:54 +00:00
Dan Gohman 0170402fe8 Use LLVM type names instead of C type names in comments, to be
less ambiguous and less C-specific.

llvm-svn: 68219
2009-04-01 18:10:16 +00:00
Bob Wilson cf1ec2cc68 Fix PR3862: Recognize some ARM-specific constraints for immediates in inline
assembly.

llvm-svn: 68218
2009-04-01 17:58:54 +00:00
Dan Gohman c4971721ea Revert r68172. It caused regressions in
Applications/Burg/burg
  Applications/ClamAV/clamscan
and many other tests.

llvm-svn: 68211
2009-04-01 16:37:47 +00:00
Chris Lattner 7e06443d44 hopefully fix an apparent build error on windows.
llvm-svn: 68175
2009-04-01 02:03:38 +00:00
Chris Lattner 647cffba61 fix a serious regression I introduced in my previous patch.
llvm-svn: 68173
2009-04-01 01:43:03 +00:00
Owen Anderson ff5961b46c Enhance GVN to propagate simple conditionals. This fixes PR3921.
llvm-svn: 68172
2009-04-01 01:20:45 +00:00
Misha Brukman 5fc1a0339c * Fixed spelling of `invertible'
* Simplified if statement

llvm-svn: 68163
2009-04-01 00:15:46 +00:00
Chris Lattner 2d8cd80ee0 reimplement BitcodeReaderValueList in terms of WeakVH instead of making
it be an LLVM IR User object.

llvm-svn: 68156
2009-03-31 22:55:09 +00:00
Chris Lattner f72ce6ea8b Make the key of ValueRankMap an AssertingVH, so that we die violently
if it dangles.

llvm-svn: 68150
2009-03-31 22:13:29 +00:00
Chris Lattner 90234f34c6 Add two new classes: WeakVH and AssertingVH. These are both "ValueHandles",
which are effectively smart pointers to Value*'s.  They are both very light
weight and simple, and react to values being destroyed or being RAUW'd.

WeakVN does a best effort to follow a value around, including through RAUW 
operations and will get nulled out of the value is destroyed.  This is useful
for the eventual "metadata that references a value" work, because it is a
reference to a value that does not show up on its use_* list.

AssertingVH is a pointer that compiles down to a dumb raw pointer when 
assertions are disabled.  When enabled, it emits an assertion if the 
pointed-to value is destroyed while it is still being referenced.  This
is very useful for Maps and other things, and should have caught the recent
bugs in CallGraph and Reassociate, for example.

llvm-svn: 68149
2009-03-31 22:11:05 +00:00
Evan Cheng 826b6f0f7c Throttle back "fold select into operand" transformation. InstCombine should not generate selects of two constants unless they are selects of 0 and 1.
e.g.
define i32 @t1(i32 %c, i32 %x) nounwind {
       %t1 = icmp eq i32 %c, 0
       %t2 = lshr i32 %x, 18
       %t3 = select i1 %t1, i32 %t2, i32 %x
       ret i32 %t3
}

was turned into

define i32 @t2(i32 %c, i32 %x) nounwind {
       %t1 = icmp eq i32 %c, 0
       %t2 = select i1 %t1, i32 18, i32 0
       %t3 = lshr i32 %x, %t2
       ret i32 %t3
}

For most targets, that means materializing two constants and then a select. e.g. On x86-64

movl    %esi, %eax
shrl    $18, %eax
testl   %edi, %edi
cmovne  %esi, %eax
ret

=>

xorl    %eax, %eax
testl   %edi, %edi
movl    $18, %ecx
cmovne  %eax, %ecx
movl    %esi, %eax
shrl    %cl, %eax
ret

Also, the optimizer and codegen can reason about shl / and / add, etc. by a constant. This optimization will hinder optimizations using ComputeMaskedBits.

llvm-svn: 68142
2009-03-31 20:42:45 +00:00
Evan Cheng 0d551591ea Fully general expansion of integer shift of any size.
llvm-svn: 68134
2009-03-31 19:39:24 +00:00
Evan Cheng d9d6e427d6 i128 shift libcalls are not available on x86.
llvm-svn: 68133
2009-03-31 19:38:51 +00:00
Dan Gohman 6b42dfddf4 Reapply 68073, with fixes. EH Landing-pad basic blocks are not
entered via fall-through. Don't miss fallthroughs from blocks
terminated by conditional branches. Also, move
isOnlyReachableByFallthrough out of line.

llvm-svn: 68129
2009-03-31 18:39:13 +00:00
Devang Patel 4ce6e69022 Update call graph after inlining invoke.
Patch by Jay Foad.

llvm-svn: 68120
2009-03-31 17:36:12 +00:00
Daniel Dunbar fb1a6eb69b Add llvm::sys::getHostTriple and remove
llvm::sys::getOS{Name,Version}.

Right now the implementation just derives from LLVM_HOSTTRIPLE (which
is wrong, but it doesn't look like we have a define for the target
triple). Ideally this routine would actually be able to compute the
triple for targets we care about.

llvm-svn: 68118
2009-03-31 17:30:15 +00:00
Dan Gohman d51f196ff5 Minor top-level comment fix.
llvm-svn: 68113
2009-03-31 16:51:18 +00:00
Rafael Espindola 9277379fc0 remove unused arguments.
llvm-svn: 68109
2009-03-31 16:16:57 +00:00
Bill Wendling 6afae239c2 Really temporarily revert r68073.
llvm-svn: 68100
2009-03-31 08:42:40 +00:00