Commit Graph

50680 Commits

Author SHA1 Message Date
Fariborz Jahanian 57251782d0 Code gen for aggregate-valued properties and a test case.
llvm-svn: 60122
2008-11-26 22:36:09 +00:00
Chris Lattner 397a11ccd8 Turn on my codegen prepare heuristic by default. It doesn't affect
performance in most cases on the Grawp tester, but does speed some 
things up (like shootout/hash by 15%).  This also doesn't impact 
compile time in a noticable way on the Grawp tester.

It also, of course, gets the testcase it was designed for right :)

llvm-svn: 60120
2008-11-26 22:16:44 +00:00
Argyrios Kyrtzidis 0c4162a659 Add some comments.
llvm-svn: 60119
2008-11-26 21:51:07 +00:00
Argyrios Kyrtzidis ace521a1e1 Implement some suggestions by Daniel:
-Change Parser::ParseCXXScopeSpecifier to MaybeParseCXXScopeSpecifier
-Remove Parser::isTokenCXXScopeSpecifier and fold it into MaybeParseCXXScopeSpecifier
-Rename Parser::TryAnnotateScopeToken to TryAnnotateCXXScopeToken and only allow it to be called when in C++

llvm-svn: 60117
2008-11-26 21:41:52 +00:00
Argyrios Kyrtzidis 041f958303 Add an overload for operator<<(const DiagnosticBuilder &DB,bool I).
Fixes building error on MSVC where passing bool couldn't resolve to one of the overloads.

llvm-svn: 60116
2008-11-26 20:39:45 +00:00
Fariborz Jahanian e7167c28f6 Removed a FIXME. Added a test case for anonymous category.
llvm-svn: 60115
2008-11-26 20:33:54 +00:00
Fariborz Jahanian f8ef9f3dc9 Set default property attributes on each property.
Implemented anonymous category (also know as continuation class)
used to override main class's property attribute. This is work in 
propgress.

llvm-svn: 60114
2008-11-26 20:01:34 +00:00
Bill Wendling 6e41adddab Small formatting change.
llvm-svn: 60113
2008-11-26 19:19:05 +00:00
Bill Wendling 0f5541e4cf Update to explain how ssp and sspreq attributes override each other.
llvm-svn: 60112
2008-11-26 19:07:40 +00:00
Devang Patel 1e916900ba Fix typo.
llvm-svn: 60111
2008-11-26 18:13:11 +00:00
Evan Cheng fc371c6c1d Cosmetic.
llvm-svn: 60110
2008-11-26 18:00:00 +00:00
Anders Carlsson f7a9a92359 Convert incomplete array types before emitting debug info for them, fixes PR3134.
llvm-svn: 60109
2008-11-26 17:40:42 +00:00
Duncan Sands d1ba7908cf Check that running the DAG combiner between type
and operation legalization does something useful.

llvm-svn: 60108
2008-11-26 16:44:30 +00:00
Nuno Lopes 8c6fbc04ee add missing RUN lines
llvm-svn: 60107
2008-11-26 15:50:12 +00:00
Mikhail Glushenkov b21abb9d48 Describe some more options in the man page.
llvm-svn: 60105
2008-11-26 13:40:08 +00:00
Nuno Lopes f8701a62a0 ignore build dirs and generated files
llvm-svn: 60104
2008-11-26 13:10:39 +00:00
Sanjiv Gupta 80810f8c6b Allow custom lowering of ADDE/ADDC/SUBE/SUBC operations.
llvm-svn: 60102
2008-11-26 11:19:00 +00:00
Mikhail Glushenkov 5b4e3b88eb Fix the -I option (llvmc -I dir1 -I dir2 didn't work).
llvm-svn: 60101
2008-11-26 10:57:31 +00:00
Mikhail Glushenkov f9e0513415 Refactor Tools.td to remove repetition.
llvm-svn: 60100
2008-11-26 10:56:56 +00:00
Mikhail Glushenkov 3ac10202c0 Small fix: the error message was incorrect in some cases.
llvm-svn: 60099
2008-11-26 10:55:45 +00:00
Sanjiv Gupta 83c70fa3dc Emit declaration for globals and externs.
Custom lower AND, OR, XOR bitwise operations.

llvm-svn: 60098
2008-11-26 10:53:50 +00:00
Douglas Gregor 08d96d5182 Fix a minor typo in the handling of the conditional operator for Objective-C interface pointers
llvm-svn: 60096
2008-11-26 06:43:45 +00:00
Dan Gohman 002a2cb207 Fish kill flag annotations in PUSH instructions.
llvm-svn: 60095
2008-11-26 06:39:12 +00:00
Douglas Gregor a60a6914cc Tweak the new ResolveOverloadedCallFn to just return a FunctionDecl. It makes ActOnCallExpr simpler
llvm-svn: 60094
2008-11-26 06:01:48 +00:00
Douglas Gregor 99dcbff154 Move the overloading logic of Sema::ActOnCallExpr to a separate function
llvm-svn: 60093
2008-11-26 05:54:23 +00:00
Dan Gohman 3336b1f06b LiveRanges are represented as half-open ranges. Fix the findLiveInMBBs code
and the LiveInterval.h top-level comment and accordingly. This fixes blocks
having spurious live-in registers in boundary cases.

llvm-svn: 60092
2008-11-26 05:50:31 +00:00
Zhongxing Xu 21148402d6 Add plugin loading for clang. This will be used to load alternative constraint manager for static analysis.
llvm-svn: 60091
2008-11-26 05:23:17 +00:00
Devang Patel c6fab4f50f Disable -loop-index-split for now.
llvm-svn: 60089
2008-11-26 05:01:52 +00:00
Chris Lattner fef04acc50 teach the new heuristic how to handle inline asm.
llvm-svn: 60088
2008-11-26 04:59:11 +00:00
Devang Patel 3bc9e25df2 Disable -loop-index-split for now.
llvm-svn: 60087
2008-11-26 04:58:14 +00:00
Ted Kremenek bf2d60145d Re-apply r60071 now that raw_fd_ostream::tell has been committed.
llvm-svn: 60086
2008-11-26 03:36:26 +00:00
Ted Kremenek e076257b8c Add 'tell' method to raw_fd_ostream that clients can use to query the current location in the file the stream is writing to.
llvm-svn: 60085
2008-11-26 03:33:13 +00:00
Chris Lattner 6d71b7fb95 Improve ValueAlreadyLiveAtInst with a cheap and dirty, but effective
heuristic: the value is already live at the new memory operation if
it is used by some other instruction in the memop's block.  This is
cheap and simple to compute (moreso than full liveness).

This improves the new heuristic even more.  For example, it cuts two
out of three new instructions out of 255.vortex:DbmFileInGrpHdr, 
which is one of the functions that the heuristic regressed.  This
overall eliminates another 40 instructions from 403.gcc and visibly
reduces register pressure in 255.vortex (though this only actually
ends up saving the 2 instructions from the whole program).

llvm-svn: 60084
2008-11-26 03:20:37 +00:00
Nick Lewycky ea0bd51cae __fastcall and __stdcall are mingw extensions to gcc for windows. Use the
__attribute__ notation which is supported on more platforms.

llvm-svn: 60083
2008-11-26 03:17:27 +00:00
Chris Lattner e34fe2c52d Start rewroking a subpiece of the profitability heuristic to be
phrased in terms of liveness instead of as a horrible hack.  :)

In pratice, this doesn't change the generated code for either 
255.vortex or 403.gcc, but it could cause minor code changes in 
theory.  This is framework for coming changes.

llvm-svn: 60082
2008-11-26 03:02:41 +00:00
Zhongxing Xu 50e6f82ce4 Adjust indent.
llvm-svn: 60081
2008-11-26 02:57:24 +00:00
Chris Lattner 8b291e66eb add a long-overdue AllocaInst::isStaticAlloca method.
llvm-svn: 60080
2008-11-26 02:54:17 +00:00
Bill Wendling 3d14916b3e Add test for rdar://6394879.
llvm-svn: 60079
2008-11-26 02:21:12 +00:00
Daniel Dunbar 3ea9485335 Revert 60071, depends on uncommitted LLVM changes.
llvm-svn: 60077
2008-11-26 02:18:33 +00:00
Chris Lattner 383a797f42 add a comment, make save/restore logic more obvious.
llvm-svn: 60076
2008-11-26 02:11:11 +00:00
Chris Lattner eb3e4fb6fb This adds in some code (currently disabled unless you pass
-enable-smarter-addr-folding to llc) that gives CGP a better
cost model for when to sink computations into addressing modes.
The basic observation is that sinking increases register 
pressure when part of the addr computation has to be available
for other reasons, such as having a use that is a non-memory
operation.  In cases where it works, it can substantially reduce
register pressure.

This code is currently an overall win on 403.gcc and 255.vortex
(the two things I've been looking at), but there are several 
things I want to do before enabling it by default:

1. This isn't doing any caching of results, so it is much slower 
   than it could be.  It currently slows down release-asserts llc 
   by 1.7% on 176.gcc: 27.12s -> 27.60s.
2. This doesn't think about inline asm memory operands yet.
3. The cost model botches the case when the needed value is live
   across the computation for other reasons.

I'll continue poking at this, and eventually turn it on as llcbeta.

llvm-svn: 60074
2008-11-26 02:00:14 +00:00
Evan Cheng 496b042e20 Revert r60042. IndVarSimplify should check if APFloat is PPCDoubleDouble first before trying to convert it to an integer.
llvm-svn: 60072
2008-11-26 01:11:57 +00:00
Ted Kremenek 22d4b885fd Migrate token-cache generation logic from dummy harness in PPLexerChange.cpp to CacheTokens.cpp.
llvm-svn: 60071
2008-11-26 00:57:55 +00:00
Ted Kremenek e6847594ef Add setter method PreprocessorLexer::setParsingPreprocessorDirective(). This will be used by the mechanism to generate cached tokens.
llvm-svn: 60070
2008-11-26 00:57:02 +00:00
Nuno Lopes 615f34c719 remove debug-only assertion in the complex float evaluator as it makes some real apps crash
llvm-svn: 60069
2008-11-26 00:39:53 +00:00
Chris Lattner a9ab165b08 Teach CodeGenPrepare to look through Bitcast instructions when attempting to
optimize addressing modes.  This allows us to optimize things like isel-sink2.ll
into:

	movl	4(%esp), %eax
	cmpb	$0, 4(%eax)
	jne	LBB1_2	## F
LBB1_1:	## TB
	movl	$4, %eax
	ret
LBB1_2:	## F
	movzbl	7(%eax), %eax
	ret

instead of:

_test:
	movl	4(%esp), %eax
	cmpb	$0, 4(%eax)
	leal	4(%eax), %eax
	jne	LBB1_2	## F
LBB1_1:	## TB
	movl	$4, %eax
	ret
LBB1_2:	## F
	movzbl	3(%eax), %eax
	ret

This shrinks (e.g.) 403.gcc from 1133510 to 1128345 lines of .s.

Note that the 2008-10-16-SpillerBug.ll testcase is dubious at best, I doubt
it is really testing what it thinks it is.

llvm-svn: 60068
2008-11-26 00:26:16 +00:00
Chris Lattner f0e01def8c fix an over-reduced test.
llvm-svn: 60067
2008-11-26 00:12:08 +00:00
Chris Lattner 0f98f74c74 this doesn't need EH
llvm-svn: 60066
2008-11-26 00:03:26 +00:00
Nuno Lopes b6aae0524c ignore tests output
llvm-svn: 60065
2008-11-26 00:02:09 +00:00
Nuno Lopes b472c9fac7 change AnnotationManager to use 'const char*' instead of std::string. this fixes the leakage of those strings and avoids the creation of such strings in static cosntructors (should result in a little improvement of startup time)
llvm-svn: 60064
2008-11-26 00:00:44 +00:00