Commit Graph

61191 Commits

Author SHA1 Message Date
Owen Anderson 5e1f6d95a2 Simplify by using no-op-when-not-multithreaded locks.
llvm-svn: 73719
2009-06-18 20:36:21 +00:00
Dan Gohman 8c9ac59455 Generalize LSR's OptimizeSMax to handle unsigned max tests as well
as signed max tests. Along with r73717, this helps CodeGen avoid
emitting code for a maximum operation for this class of loop.

llvm-svn: 73718
2009-06-18 20:23:18 +00:00
Dan Gohman 4d3c3cfffd Recognize n != 0 ? n : 1 as umax(n, 1). Previously only ULT/UGT/ULE/UGE
comparisons were recognized for umax, but instcombine canonicalizes
unsigned comparisons with zero to this simpler form.

llvm-svn: 73717
2009-06-18 20:21:07 +00:00
Owen Anderson 830ff50abf Simplify using mutexes that become no-ops when not in multithreaded mode.
llvm-svn: 73716
2009-06-18 20:15:26 +00:00
Anton Korobeynikov 6ee547bb1b Revert IRBuilder CC propagation. Fix SimplifyLibCalls instead.
llvm-svn: 73715
2009-06-18 20:05:31 +00:00
Owen Anderson d830eb8365 Simplify a lot of code by using a R/W mutex that becomes a no-op when multithreading is disabled.
llvm-svn: 73714
2009-06-18 19:10:19 +00:00
Douglas Gregor 1e09bf83c0 Some cleanups suggested by Chris
llvm-svn: 73713
2009-06-18 18:45:36 +00:00
Owen Anderson fa107259fe Use SmartMutex to simplify.
llvm-svn: 73712
2009-06-18 18:36:34 +00:00
Owen Anderson 6c634f39ce Simplify the SmartMutex implementation a bit.
llvm-svn: 73711
2009-06-18 18:29:03 +00:00
Owen Anderson 1498a7a510 Give RWMutex the SmartRWMutex treatment too.
llvm-svn: 73710
2009-06-18 18:26:15 +00:00
Owen Anderson 68f6598c69 Insert a SmartMutex templated class into the class hierarchy, which takes a template parameter specifying whether this mutex
should become a no-op when not running in multithreaded mode.  Make sys::Mutex a typedef of SmartMutex<false>, to preserve source compatibility.

llvm-svn: 73709
2009-06-18 17:53:17 +00:00
Ted Kremenek 81ef65d491 Update CMake files to account for new location of Threading.cpp.
llvm-svn: 73708
2009-06-18 17:47:09 +00:00
Owen Anderson 7d42b95b6c Move Threading.[h|cpp] from Support to System.
llvm-svn: 73707
2009-06-18 16:54:52 +00:00
Dan Gohman a0348809b6 Remove the code from IVUsers that attempted to handle
casted induction variables in cases where the cast
isn't foldable. It ended up being a pessimization in
many cases. This could be fixed, but it would require
a bunch of complicated code in IVUsers' clients. The
advantages of this approach aren't visible enough to
justify it at this time.

llvm-svn: 73706
2009-06-18 16:54:06 +00:00
Dan Gohman 56bd02c55c Generalize the zext(trunc(t) & C) instcombine to work even with
C is not a low-bits mask, and add a similar instcombine for
zext((trunc(t) & C) ^ C).

llvm-svn: 73705
2009-06-18 16:30:21 +00:00
Dan Gohman 5a728c908c Update a comment to reflect the code.
llvm-svn: 73704
2009-06-18 16:24:47 +00:00
Owen Anderson c5eb1ee4b7 Fix the double checked locking in this file too.
llvm-svn: 73703
2009-06-18 16:17:42 +00:00
Douglas Gregor 78bd61f661 Move the static DeclAttrs map into ASTContext. Fixes <rdar://problem/6983177>.
llvm-svn: 73702
2009-06-18 16:11:24 +00:00
Owen Anderson 0fd4eaef30 As pointed out by Duncan, I accidentally dropped the first MemoryFence of the
double-checked locking pattern here.

llvm-svn: 73701
2009-06-18 16:08:27 +00:00
Douglas Gregor e1d15c80a3 Add some missing CMake dependencies
llvm-svn: 73700
2009-06-18 15:05:47 +00:00
Anton Korobeynikov e2ff9a6f38 Forgot to commit this hunk
llvm-svn: 73693
2009-06-18 08:30:57 +00:00
Anton Korobeynikov 832b9e6a7a Propagate calling conv for invokes too
llvm-svn: 73692
2009-06-18 08:13:56 +00:00
Zhongxing Xu b21175ccbe Modify test case comments.
llvm-svn: 73691
2009-06-18 06:49:35 +00:00
Zhongxing Xu cea6578078 When casting region, if we do not create an element region, record the cast-to
type. 

When retrieving the region value, if we are going to create a symbol value, use
the cast-to type if possible.

llvm-svn: 73690
2009-06-18 06:29:10 +00:00
Chris Lattner e7e659431c Fix a crash that can occur when a #pragma handler eats to the end of the
line, and when the pragma is at the end of a file.  In this case, the last
token consumed could pop the lexer, invalidating CurPPLexer.  Thanks to
Peter Thoman for pointing it out.

llvm-svn: 73689
2009-06-18 05:55:53 +00:00
Chris Lattner 8527e674ce Don't use int8_t, that requires DataTypes.h
llvm-svn: 73682
2009-06-18 04:56:53 +00:00
Owen Anderson 6eb4a73633 Fix build when disable thread support.
Patch by Howard Su.

llvm-svn: 73680
2009-06-18 04:44:46 +00:00
Zhongxing Xu bb4a7979b5 include header for uint8_t.
llvm-svn: 73675
2009-06-18 04:11:43 +00:00
Zhongxing Xu dd19e15fe2 More GRStateRef removal fix.
llvm-svn: 73674
2009-06-18 03:42:19 +00:00
Nick Lewycky 87c4a05008 Add braces to clarify if/else structure and remove warning.
llvm-svn: 73673
2009-06-18 03:01:42 +00:00
Eli Friedman c619d6fab5 Add a target triple to a couple of tests which depend on it. Reported
by Mark Cianciosa on cfe-dev.

llvm-svn: 73672
2009-06-18 02:04:19 +00:00
Evan Cheng 0e79603588 - Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints.
- Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping.
- More fixes to get ARM load / store double word working.

llvm-svn: 73671
2009-06-18 02:04:01 +00:00
Ted Kremenek 6a667ab710 Remove GRStateRef.
llvm-svn: 73670
2009-06-18 01:33:24 +00:00
Ted Kremenek d93c6e3fd6 Remove more dependencies on GRStateRef. As a consequence, we can now
pretty-print a GRState object anywhere it is referenced (instead of
needing a GRStateRef of a GRStateManager handy).

llvm-svn: 73669
2009-06-18 01:23:53 +00:00
Dale Johannesen 9d9acb065a It looks like nobody is working on PR 4158, so I'm
adding a check to catch this case at compile time
instead of quietly generating incorrect code.
That will at least let us identify CBE failures
that are not due to this problem.

llvm-svn: 73668
2009-06-18 01:07:23 +00:00
Ted Kremenek 89a303caac Remove another dependency on GRStateRef.
llvm-svn: 73667
2009-06-18 00:49:02 +00:00
Dan Gohman 94c468f419 Fix trailing whitespace from ScalarEvolution::print.
llvm-svn: 73666
2009-06-18 00:37:45 +00:00
Bob Wilson 86c12d7bc4 ARM unified syntax is not specific to ELF; use it for Darwin, too.
llvm-svn: 73665
2009-06-18 00:36:17 +00:00
Dan Gohman eddf77123a Teach ScalarEvolution how to recognize another xor(and(x, C), C) case.
If C is a single bit and the and gets analyzed as a truncate and
zero-extend, the xor can be represnted as an add.

llvm-svn: 73664
2009-06-18 00:00:20 +00:00
Dan Gohman 4d8723d47f Delete unnecessary braces.
llvm-svn: 73663
2009-06-17 23:54:37 +00:00
Owen Anderson ed14e767e8 Reapply r73647 in a non-broken form.
llvm-svn: 73662
2009-06-17 23:49:06 +00:00
Anton Korobeynikov 5658086052 Fix asm string from MOVi16
llvm-svn: 73661
2009-06-17 23:43:36 +00:00
Anton Korobeynikov f687a828b2 Thumb2 instructions are enabled only in unified assembler mode.
Emit switch directive for it. I have no idea whether this is
requirement for Darwin or not.

llvm-svn: 73660
2009-06-17 23:43:18 +00:00
Douglas Gregor f187420feb Diagnose class members that shadow a template parameter. Fixes
<rdar://problem/6952203>. 

To do this, we actually remove a not-quite-correct optimization in the
C++ name lookup routines. We'll revisit this optimization for the
general case once more C++ is working.

llvm-svn: 73659
2009-06-17 23:37:01 +00:00
Douglas Gregor 4dd5b57ef4 Fix regression testing in Xcode, again
llvm-svn: 73658
2009-06-17 23:35:04 +00:00
Argyrios Kyrtzidis 9941a4d314 Fix some erroneous comments due to trigger-happy copy&paste.
No functionality change.

llvm-svn: 73657
2009-06-17 23:19:02 +00:00
Dan Gohman 7f836c7c61 Instcombine zext(trunc(x) & mask) to x&mask, even if the trunc has
multiple users.

llvm-svn: 73656
2009-06-17 23:17:05 +00:00
Argyrios Kyrtzidis 7bcce49e04 Factor out some common code into Sema::EnterDeclaratorContext/ExitDeclaratorContext.
llvm-svn: 73655
2009-06-17 23:15:40 +00:00
Owen Anderson 89ee957cbd Use double-checked locking for this lazy initialization.
llvm-svn: 73653
2009-06-17 22:53:57 +00:00
Argyrios Kyrtzidis 3df1978270 Implement correct name lookup inside an initializer of a C++ class static data member.
Fixes "test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp" test case.

llvm-svn: 73652
2009-06-17 22:50:06 +00:00