Commit Graph

40069 Commits

Author SHA1 Message Date
Chris Lattner 5e8bf5673b make isExactlyValue work for long double.
llvm-svn: 46410
2008-01-27 06:19:08 +00:00
Bill Wendling 8c491162d2 The CorrelatedExpressions pass is now no more.
llvm-svn: 46409
2008-01-27 06:13:32 +00:00
Bill Wendling 60361a16f8 The CorrelatedExpressionElimination pass is known to be buggy. Remove it.
This fixes PR1769.

llvm-svn: 46408
2008-01-27 06:11:41 +00:00
Chris Lattner f1a6c9fe86 For long double constants, print an approximation of their value to the .s file to make it easier to read.
llvm-svn: 46407
2008-01-27 06:09:28 +00:00
Chris Lattner fa1e7eef30 Fold fptrunc(add (fpextend x), (fpextend y)) -> add(x,y), as GCC does.
llvm-svn: 46406
2008-01-27 05:29:54 +00:00
Chris Lattner 2dd23b9f32 Add some notes.
llvm-svn: 46405
2008-01-26 20:12:07 +00:00
Chris Lattner 250789f1bd Remove some code for inferring alignment info from the x86 backend
now that the dag combiner does it.

llvm-svn: 46404
2008-01-26 20:07:42 +00:00
Chris Lattner 596704405f New test to verify that "merging 4 loads into a vec load" continues to work and
continues to infer alignment info.

llvm-svn: 46403
2008-01-26 20:06:45 +00:00
Chris Lattner 1472c7fe76 make this 64-bit safe
llvm-svn: 46402
2008-01-26 19:50:30 +00:00
Chris Lattner e30e33af4f Infer alignment of loads and increase their alignment when we can tell they are
from the stack.  This allows us to compile stack-align.ll to:

_test:
	movsd	LCPI1_0, %xmm0
	movapd	%xmm0, %xmm1
***	andpd	4(%esp), %xmm1
	andpd	_G, %xmm0
	addsd	%xmm1, %xmm0
	movl	20(%esp), %eax
	movsd	%xmm0, (%eax)
	ret

instead of:

_test:
	movsd	LCPI1_0, %xmm0
**	movsd	4(%esp), %xmm1
**	andpd	%xmm0, %xmm1
	andpd	_G, %xmm0
	addsd	%xmm1, %xmm0
	movl	20(%esp), %eax
	movsd	%xmm0, (%eax)
	ret

llvm-svn: 46401
2008-01-26 19:45:50 +00:00
Chris Lattner 364963d41c remove a useless xfailed test.
llvm-svn: 46400
2008-01-26 19:35:46 +00:00
Duncan Sands dc157a4f0a Invert this test, because it is wrong if we allow
readonly functions to use byval parameters as local
storage (how much do we want this?).

llvm-svn: 46399
2008-01-26 12:33:01 +00:00
Bill Wendling 1a17ef02c8 If there's no instructions being emitted on X86 for a function, emit a
nop. Emit the nop directly for PPC.

llvm-svn: 46398
2008-01-26 09:03:52 +00:00
Bill Wendling a60c61dc1a Need to convert to LLVM code and not C.
llvm-svn: 46397
2008-01-26 06:56:08 +00:00
Bill Wendling 0b973210f8 Rename the .c to .ll
llvm-svn: 46396
2008-01-26 06:53:40 +00:00
Bill Wendling 0f69974fdb Move testcase to the code gen directory.
llvm-svn: 46395
2008-01-26 06:53:06 +00:00
Bill Wendling 5079483957 If there are no machine instructions emitted for a function, then insert
a "nop" instruction so that we don't have the function's label associated
with something that it's not supposed to be associated with.

llvm-svn: 46394
2008-01-26 06:51:24 +00:00
Duncan Sands c4dc3dc3a2 Create an explicit copy for byval parameters even
when inlining a readonly function.

llvm-svn: 46393
2008-01-26 06:41:49 +00:00
Anders Carlsson 8a88c3815a Tweaks to EmitLValue in CGExprConstant. Patch by Eli Friedman.
llvm-svn: 46389
2008-01-26 04:30:23 +00:00
Anders Carlsson a413911373 Add CodeGen for AddrOf in constant initializers. Original patch by Eli Friedman.
llvm-svn: 46388
2008-01-26 02:08:50 +00:00
Bill Wendling 0862e3421d If we have a function like this:
void bork() {
  int *address = 0;
  *address = 0;
}

It's compiled into LLVM code that looks like this:

define void @bork() noreturn nounwind  {
entry:
        unreachable
}

This is bad on some platforms (like PPC) because it will generate the label for
the function but no body. The label could end up being associated with some
non-code related stuff, like a section. This places a "trap" instruction if the
SimplifyCFG pass removed all code from the function leaving only one
"unreachable" instruction.

llvm-svn: 46387
2008-01-26 01:43:44 +00:00
Anders Carlsson 610ee7134e Factor out the constant generation into its own file.
llvm-svn: 46386
2008-01-26 01:36:00 +00:00
Devang Patel 8797851fbe Add another testcase.
llvm-svn: 46385
2008-01-26 01:21:48 +00:00
Chris Lattner 31e9edce1c Fix some bugs in SimplifyNodeWithTwoResults where it would call deletenode to
delete a node even if it was not dead in some cases.  Instead, just add it to
the worklist.  Also, make sure to use the CombineTo methods, as it was doing
things that were unsafe: the top level combine loop could touch dangling memory.

This fixes CodeGen/Generic/2008-01-25-dag-combine-mul.ll

llvm-svn: 46384
2008-01-26 01:09:19 +00:00
Chris Lattner 720d8999c7 don't bother making x&-1 only to simplify it in dag combine. This commonly occurs expanding i64 ops.
llvm-svn: 46383
2008-01-26 01:05:42 +00:00
Evan Cheng 2df73ea849 New test case.
llvm-svn: 46382
2008-01-26 00:35:43 +00:00
Ted Kremenek 95a123c0ec Added back logic in patch r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) with the addition of
some previously missing NULL pointer checks.

Modified the UninitializedValues analysis to not expect that every Expr* at the
block-level is a block-level expression (we probably need to change the name of
such expressions to something truer to their meaning).

llvm-svn: 46380
2008-01-26 00:03:27 +00:00
Ted Kremenek 5588c9e9ce Implemented transfer function for '/='.
llvm-svn: 46379
2008-01-25 23:45:34 +00:00
Ted Kremenek 2b8a7c80b8 Further refactoring of transfer functions by having APSIntSetOp take
a template-template parameter.

llvm-svn: 46378
2008-01-25 23:43:12 +00:00
Chris Lattner cb3cf546c3 reduce indentation
llvm-svn: 46377
2008-01-25 23:34:24 +00:00
Ted Kremenek 0cb1ba2c5e Reverting r46361 (http://llvm.org/viewvc/llvm-project?rev=46361&view=rev) until
I diagnose the source of the failures it causes in the test suite.

llvm-svn: 46376
2008-01-25 23:22:27 +00:00
Ted Kremenek ec5a444de6 Renamed RValueDisjunctiveEqual to RValEqualityORSet.
Renamed RValueConjunctiveUnequal to RValInequalityANDSet.

Refactored add/subtract/multiple (and now divide) operations for
RValEqualityORSet to be based on a single template function.

llvm-svn: 46374
2008-01-25 22:55:56 +00:00
Chris Lattner 0af861c43a add a testcase for a bug Duncan pointed out.
llvm-svn: 46372
2008-01-25 22:36:24 +00:00
Steve Naroff fda820970a Add more support for Apple's "private extern" extension...
llvm-svn: 46371
2008-01-25 22:14:40 +00:00
Ted Kremenek 109e362fbd Fixed 80 col. violation.
llvm-svn: 46370
2008-01-25 22:07:26 +00:00
Duncan Sands f52faf9a64 Do this more neatly.
llvm-svn: 46369
2008-01-25 22:06:51 +00:00
Ted Kremenek 555855c779 Renamed RValueMayEqualSet to RValueDisjunctiveEqual.
llvm-svn: 46368
2008-01-25 22:06:07 +00:00
Chris Lattner 77927cc33c Add support for dispatching an objc message to a variable
in an initializer list.

llvm-svn: 46367
2008-01-25 19:43:26 +00:00
Chris Lattner 8917c5ace2 First half of a fix for the "objc message send in initializer" bug. This only
handles message sends with typenames to start with.

llvm-svn: 46366
2008-01-25 19:37:24 +00:00
Chris Lattner e10c6da41e Factor a complex predicate out to a helper method.
llvm-svn: 46365
2008-01-25 19:25:00 +00:00
Chris Lattner de001c186e fix isIntegerConstantExpr evaluation of unary !.
llvm-svn: 46364
2008-01-25 19:16:19 +00:00
Chris Lattner 8f6970663a split the second half of ParseObjCMessageExpression into a new
ParseObjCMessageExpressionBody method.

llvm-svn: 46363
2008-01-25 18:59:06 +00:00
Chris Lattner b241a1ba4c remove an implemented todo
llvm-svn: 46362
2008-01-25 18:58:06 +00:00
Ted Kremenek 463b726698 When adding assignment expressions to the set of block-level expressions, only
include the assignment expressions whose result (as in the value of the
expression) is used by other expressions.

llvm-svn: 46361
2008-01-25 18:28:28 +00:00
Chris Lattner 6532001fc0 Reorder a field to reduce the size of StackObject. Note that this
may require a clean rebuild on leopard. :(

llvm-svn: 46360
2008-01-25 17:49:41 +00:00
Fariborz Jahanian cc9c5452d1 Diagnose bad receiver type.
llvm-svn: 46358
2008-01-25 17:43:39 +00:00
Duncan Sands e5433a90ce Test for PR1942.
llvm-svn: 46357
2008-01-25 17:36:44 +00:00
Chris Lattner fc80996a21 fix long lines.
llvm-svn: 46355
2008-01-25 17:24:52 +00:00
Chris Lattner 919ad97c01 JITEmitter.cpp was trying to sync the icache for function stubs, but
was actually passing a completely incorrect size to sys_icache_invalidate.
Instead of having the JITEmitter do this (which doesn't have the correct 
size), just make the target sync its own stubs.

llvm-svn: 46354
2008-01-25 16:41:09 +00:00
Seo Sanghyeon d145ac0b34 Implement -print-prog-name. Patch by Nuno Lopes.
llvm-svn: 46353
2008-01-25 14:57:54 +00:00