Dan Gohman [Tue, 21 Apr 2009 01:25:57 +0000 (01:25 +0000)]
Factor out a common base class from SCEVTruncateExpr, SCEVZeroExtendExpr,
and SCEVSignExtendExpr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69649
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 21 Apr 2009 01:11:19 +0000 (01:11 +0000)]
Usage getAnalysisToUpdate for TargetData, per PR760.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69645
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 21 Apr 2009 01:07:12 +0000 (01:07 +0000)]
Introduce encapsulation for ScalarEvolution's TargetData object, and refactor
the code to minimize dependencies on TargetData.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69644
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 21 Apr 2009 00:55:22 +0000 (00:55 +0000)]
Move some assertion checks so they can do more complete checking.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69643
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Tue, 21 Apr 2009 00:47:46 +0000 (00:47 +0000)]
Convert ScalarEvolution to use raw_ostream instead of OStream.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69640
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Tue, 21 Apr 2009 00:08:56 +0000 (00:08 +0000)]
Fix Visual Studio 2008 build failure.
Patch by Marius Wachtler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69637
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 20 Apr 2009 22:54:34 +0000 (22:54 +0000)]
Make X86's copyRegToReg able to handle copies to and from subclasses.
This makes the extra copyRegToReg calls in ScheduleDAGSDNodesEmit.cpp
unnecessary. Derived from a patch by Jakob Stoklund Olesen.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69635
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 20 Apr 2009 22:51:43 +0000 (22:51 +0000)]
Simplify this code. getConstant knows how to make
broadcasted vector constants.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69634
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 20 Apr 2009 22:49:59 +0000 (22:49 +0000)]
No, we are not avoiding -O3, just -fstrict-aliasing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69633
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Mon, 20 Apr 2009 22:19:33 +0000 (22:19 +0000)]
Adjust loop size estimate for full unrolling;
GEP's don't usually become instructions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69631
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 20 Apr 2009 22:16:40 +0000 (22:16 +0000)]
One Mac OS X, just build with -O3 but without -fstrict-aliasing (which is kinda broken).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69630
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 20 Apr 2009 20:50:13 +0000 (20:50 +0000)]
Make Unix.h:MakeErrMsg separate the prefix and errno string, so we get:
clang: error: unable to make temporary file: /etc/cc: can't make
unique filename: Permission denied
instead of
clang: error: unable to make temporary file: /etc/cc: can't make
unique filenamePermission denied
for example.
Also, audited the uses of MakeErrMsg to make the prefix strings
consistent (not end with newline/punctuation/space/": ").
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69626
91177308-0d34-0410-b5e6-
96231b3b80d8
Daniel Dunbar [Mon, 20 Apr 2009 20:34:38 +0000 (20:34 +0000)]
Remove unused variable.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69624
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Mon, 20 Apr 2009 18:36:57 +0000 (18:36 +0000)]
Move duplicated AddLiveIn function from X86 and ARM backends to be a method
in the MachineFunction class, renaming it to addLiveIn for consistency with
the same method in MachineBasicBlock. Thanks for Anton for suggesting this.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69615
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Mon, 20 Apr 2009 18:07:22 +0000 (18:07 +0000)]
Match C backend only if it explicitly requested.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69613
91177308-0d34-0410-b5e6-
96231b3b80d8
Tanya Lattner [Mon, 20 Apr 2009 17:48:16 +0000 (17:48 +0000)]
Remove clang since its conditionally there already.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69610
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Mon, 20 Apr 2009 17:27:09 +0000 (17:27 +0000)]
Revise my previous change 68996 as suggested by Duncan.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69607
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 20 Apr 2009 17:23:48 +0000 (17:23 +0000)]
- Remove an arbitrary spill weight tweak that should not have been there.
- Find more reloads from SS.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69606
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjiv Gupta [Mon, 20 Apr 2009 16:59:35 +0000 (16:59 +0000)]
Emit the auto variables of a function into a different section than parameters.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69605
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 20 Apr 2009 16:26:25 +0000 (16:26 +0000)]
It's not necessary for PrintModulePass to flush the output streams
now that errs() is properly non-buffered.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69602
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 20 Apr 2009 16:19:02 +0000 (16:19 +0000)]
Use .empty() instead of .size().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69599
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 20 Apr 2009 16:10:33 +0000 (16:10 +0000)]
Don't discard an AssemblyAnnotationWriter when writing GlobalValues,
which include Functions, where it can be quite useful to use an
AssemblyAnnotationWriter.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69598
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Mon, 20 Apr 2009 16:03:21 +0000 (16:03 +0000)]
These bitfields were being miscompiled on some
64 bit platforms when building with optimization.
So replace them by a hand-coded implementation.
This fixes PR3822.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69597
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Mon, 20 Apr 2009 15:55:38 +0000 (15:55 +0000)]
Implement operator<<(raw_ostream &OS, const Type &T).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69596
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Mon, 20 Apr 2009 08:01:12 +0000 (08:01 +0000)]
Added a linearscan register allocation optimization. When the register allocator spill an interval with multiple uses in the same basic block, it creates a different virtual register for each of the reloads. e.g.
%reg1498<def> = MOV32rm %reg1024, 1, %reg0, 12, %reg0, Mem:LD(4,4) [sunkaddr39 + 0]
%reg1506<def> = MOV32rm %reg1024, 1, %reg0, 8, %reg0, Mem:LD(4,4) [sunkaddr42 + 0]
%reg1486<def> = MOV32rr %reg1506
%reg1486<def> = XOR32rr %reg1486, %reg1498, %EFLAGS<imp-def,dead>
%reg1510<def> = MOV32rm %reg1024, 1, %reg0, 4, %reg0, Mem:LD(4,4) [sunkaddr45 + 0]
=>
%reg1498<def> = MOV32rm %reg2036, 1, %reg0, 12, %reg0, Mem:LD(4,4) [sunkaddr39 + 0]
%reg1506<def> = MOV32rm %reg2037, 1, %reg0, 8, %reg0, Mem:LD(4,4) [sunkaddr42 + 0]
%reg1486<def> = MOV32rr %reg1506
%reg1486<def> = XOR32rr %reg1486, %reg1498, %EFLAGS<imp-def,dead>
%reg1510<def> = MOV32rm %reg2038, 1, %reg0, 4, %reg0, Mem:LD(4,4) [sunkaddr45 + 0]
From linearscan's point of view, each of reg2036, 2037, and 2038 are separate registers, each is "killed" after a single use. The reloaded register is available and it's often clobbered right away. e.g. In thise case reg1498 is allocated EAX while reg2036 is allocated RAX. This means we end up with multiple reloads from the same stack slot in the same basic block.
Now linearscan recognize there are other reloads from same SS in the same BB. So it'll "downgrade" RAX (and its aliases) after reg2036 is allocated until the next reload (reg2037) is done. This greatly increase the likihood reloads from SS are reused.
This speeds up sha1 from OpenSSL by 5.8%. It is also an across the board win for SPEC2000 and 2006.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69585
91177308-0d34-0410-b5e6-
96231b3b80d8
Douglas Gregor [Mon, 20 Apr 2009 07:34:17 +0000 (07:34 +0000)]
Make all raw_ostreams support the tell() function.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69583
91177308-0d34-0410-b5e6-
96231b3b80d8
Sanjiv Gupta [Mon, 20 Apr 2009 06:05:54 +0000 (06:05 +0000)]
Before trying to introduce/eliminate cast/ext/trunc to make indices type as
pointer type, make sure that the pointer size is a valid sequential index type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69574
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sun, 19 Apr 2009 18:32:03 +0000 (18:32 +0000)]
Use an AssertingVH to detect the case where the Function was deleted but
freeMachineCodeForFunction was never called.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69531
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sun, 19 Apr 2009 18:20:21 +0000 (18:20 +0000)]
Fix missing text in doxygen documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69529
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 19 Apr 2009 06:40:30 +0000 (06:40 +0000)]
Now that BUILD_VECTOR operands are allowed to be
bigger than the vector element type, turn checking
of the operand type back on again, appropriately
adjusted.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69516
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sun, 19 Apr 2009 06:23:05 +0000 (06:23 +0000)]
Remove the SimpleTy enumerated type field from the MVT
value type union: this field was causing problems for
some compilers on 64 bit systems, presumably because
SimpleTy is 32 bits wide while the other fields are
64 bits wide.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69515
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Sun, 19 Apr 2009 00:22:35 +0000 (00:22 +0000)]
Add some assertions.
Fixes segfaults in some corner cases.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69494
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sat, 18 Apr 2009 21:45:27 +0000 (21:45 +0000)]
Revert 69474 and 69475. They are causing failures during a bootstrap on Darwin.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69478
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Sat, 18 Apr 2009 20:55:55 +0000 (20:55 +0000)]
Reconfigure.
Turns out that doing this by hand is easier than using autoreconf:-).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69475
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Sat, 18 Apr 2009 20:55:28 +0000 (20:55 +0000)]
Add a configure check for llvm-gcc (reapply).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69474
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 18 Apr 2009 20:49:22 +0000 (20:49 +0000)]
testcase for PR3898
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69473
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Sat, 18 Apr 2009 20:48:07 +0000 (20:48 +0000)]
Fix PR3898, which manifests as failures on are an Xcore,
patch by Jakob Stoklund Olesen!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69472
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sat, 18 Apr 2009 20:16:54 +0000 (20:16 +0000)]
Don't try to make BUILD_VECTOR operands have the same
type as the vector element type: allow them to be of
a wider integer type than the element type all the way
through the system, and not just as far as LegalizeDAG.
This should be safe because it used to be this way
(the old type legalizer would produce such nodes), so
backends should be able to handle it. In fact only
targets which have legal vector types with an illegal
promoted element type will ever see this (eg: <4 x i16>
on ppc). This fixes a regression with the new type
legalizer (vec_splat.ll). Also, treat SCALAR_TO_VECTOR
the same as BUILD_VECTOR. After all, it is just a
special case of BUILD_VECTOR.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69467
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 18 Apr 2009 18:11:26 +0000 (18:11 +0000)]
Generalize to support more ARM types.
Configure was not actually regenerated, but the change last time only touched
this one line, so I'm being lazy and cheating by fixing it manually.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69453
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Sat, 18 Apr 2009 17:58:19 +0000 (17:58 +0000)]
Add a ScalarEvolution::getCouldNotCompute() function, and use it
instead of allocating and leaking new SCEVCouldNotCompute objects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69452
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Sat, 18 Apr 2009 17:57:20 +0000 (17:57 +0000)]
More const qualifiers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69451
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Sat, 18 Apr 2009 17:56:28 +0000 (17:56 +0000)]
Use more const qualifiers with SCEV interfaces.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69450
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 18 Apr 2009 15:41:38 +0000 (15:41 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69447
91177308-0d34-0410-b5e6-
96231b3b80d8
Nick Lewycky [Sat, 18 Apr 2009 15:34:25 +0000 (15:34 +0000)]
Detect beagleboard as ARM. The $target is "armv7l".
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69446
91177308-0d34-0410-b5e6-
96231b3b80d8
Duncan Sands [Sat, 18 Apr 2009 12:40:19 +0000 (12:40 +0000)]
Make it clearer that llvm-gcc is not needed for
building llvm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69441
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Sat, 18 Apr 2009 11:20:33 +0000 (11:20 +0000)]
Temporarily revert r69438 and r69439. These were causing failures during a
release build of llvm.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69440
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Sat, 18 Apr 2009 09:59:26 +0000 (09:59 +0000)]
Regenerate.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69439
91177308-0d34-0410-b5e6-
96231b3b80d8
Mikhail Glushenkov [Sat, 18 Apr 2009 09:57:58 +0000 (09:57 +0000)]
Add a configure check for llvm-gcc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69438
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Sat, 18 Apr 2009 08:52:15 +0000 (08:52 +0000)]
Add a new LiveInterval::overlaps(). It checks if the live interval overlaps a range specified by [Start, End).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69434
91177308-0d34-0410-b5e6-
96231b3b80d8
Mon P Wang [Sat, 18 Apr 2009 05:16:01 +0000 (05:16 +0000)]
Fixed a few 64 bit cases in X86InstrInfo::commuteInstruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69417
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Sat, 18 Apr 2009 02:01:23 +0000 (02:01 +0000)]
Adjust XFAIL syntax, maybe that will help. The other
way worked for me...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69414
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Sat, 18 Apr 2009 00:11:50 +0000 (00:11 +0000)]
patch 69408 breaks this by removing the opportunity
for the optimization it's testing to kick in (although
it improves the code, getting rid of all spills).
I don't understand the optimization well enough to
rescue the test, so XFAILing.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69409
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Sat, 18 Apr 2009 00:09:40 +0000 (00:09 +0000)]
Inline asm's were still introducing bogus dependencies;
my earlier patch to this code only fixed half of it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69408
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 17 Apr 2009 23:30:55 +0000 (23:30 +0000)]
remove trailing whitespace
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69402
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 17 Apr 2009 22:40:38 +0000 (22:40 +0000)]
Recommit r69335 and r69336. These were not causing problems.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69394
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 17 Apr 2009 20:42:34 +0000 (20:42 +0000)]
Move the AddLiveIn function definition closer to its uses.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69382
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 17 Apr 2009 20:40:45 +0000 (20:40 +0000)]
Rearrange code to reduce indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69381
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 17 Apr 2009 20:40:20 +0000 (20:40 +0000)]
Rename file to have the correct suffix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69380
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 17 Apr 2009 20:35:10 +0000 (20:35 +0000)]
Clean up formatting, remove trailing whitespace, fix comment typos and
punctuation. No functional changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69378
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 17 Apr 2009 20:03:31 +0000 (20:03 +0000)]
Delete an unused field.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69375
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Fri, 17 Apr 2009 19:07:39 +0000 (19:07 +0000)]
Use CallConvLower.h and TableGen descriptions of the calling conventions
for ARM. Patch by Sandeep Patel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69371
91177308-0d34-0410-b5e6-
96231b3b80d8
Jim Grosbach [Fri, 17 Apr 2009 17:25:16 +0000 (17:25 +0000)]
Update information on canadian cross builds
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69358
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Fri, 17 Apr 2009 14:56:18 +0000 (14:56 +0000)]
Use a safer iterator interface and get rid of std C++ library misuse.
This fixes a --enable-expensive-checks problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69353
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Fri, 17 Apr 2009 14:50:39 +0000 (14:50 +0000)]
Regenerate configure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69352
91177308-0d34-0410-b5e6-
96231b3b80d8
David Greene [Fri, 17 Apr 2009 14:49:22 +0000 (14:49 +0000)]
Add a --enable-profiling option to configure to build Debug+Profile and
Opt+Profile tools. Now we can profile any kind of flavor we build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69351
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Fri, 17 Apr 2009 14:35:58 +0000 (14:35 +0000)]
For general dynamic TLS access we must use
leaq foo@TLSGD(%rip), %rdi
as part of the instruction sequence. Using a register other than %rdi and then
copying it to %rdi is not valid.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69350
91177308-0d34-0410-b5e6-
96231b3b80d8
Bill Wendling [Fri, 17 Apr 2009 04:19:22 +0000 (04:19 +0000)]
Revert r69335 and r69336. They were causing build failures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69347
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 17 Apr 2009 02:02:52 +0000 (02:02 +0000)]
Don't create ConstantInts with pointer type. This fixes a
regression in 403.gcc in PIC_CODEGEN=1 and DISABLE_LTO=1
mode.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69344
91177308-0d34-0410-b5e6-
96231b3b80d8
Evan Cheng [Fri, 17 Apr 2009 01:29:40 +0000 (01:29 +0000)]
Teach spiller to unfold instructions which modref spill slot when a scratch
register is available and when it's profitable.
e.g.
xorq %r12<kill>, %r13
addq %rax, -184(%rbp)
addq %r13, -184(%rbp)
==>
xorq %r12<kill>, %r13
movq -184(%rbp), %r12
addq %rax, %r12
addq %r13, %r12
movq %r12, -184(%rbp)
Two more instructions, but fewer memory accesses. It can also open up
opportunities for more optimizations.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69341
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 17 Apr 2009 00:45:17 +0000 (00:45 +0000)]
MOV8rr_NOREX is a "Move" instruction. This doesn't currently
matter, because this instruction isn't generated until after
things that care.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69336
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Fri, 17 Apr 2009 00:43:09 +0000 (00:43 +0000)]
Don't use MOV8rr_NOREX on x86-32. It doesn't actually hurt anything at
present, but it's inconsistent.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69335
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 17 Apr 2009 00:26:12 +0000 (00:26 +0000)]
Fix some failures in targets on available_externally functions,
this fixes a crash on CodeGen/Generic/externally_available.ll
on ppc hosts. Thanks to Nicholas L for pointing this out.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69333
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 22:35:57 +0000 (22:35 +0000)]
Use TargetData::getTypeSizeInBits instead of getPrimitiveSizeInBits()
to get the correct answer for pointer types.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69321
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 16 Apr 2009 21:51:05 +0000 (21:51 +0000)]
Fix PR3994: LLVMMatchType arguments do not refer to absolute return value
and argument positions but only to the overloaded intrinsic parameters.
Keep a separate list of these overloaded parameters in CodeGenTarget.cpp
so they can be resolved easily. Remove assertions from IntrinsicEmitter.cpp:
they were harmless but confusing, and the assertions elsewhere in TableGen
will catch any incorrect values.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69316
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 16 Apr 2009 21:47:59 +0000 (21:47 +0000)]
make sure to unlock keymgr if the JIT is created and destroyed, all
locks must be matched with unlocks. Also, use calloc to allocate the
block so that it is properly zero'd. Thanks to Nick Kledzik for
tracking this down.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69314
91177308-0d34-0410-b5e6-
96231b3b80d8
Bob Wilson [Thu, 16 Apr 2009 21:46:42 +0000 (21:46 +0000)]
Add a comment to describe LLVMMatchType.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69313
91177308-0d34-0410-b5e6-
96231b3b80d8
Eli Friedman [Thu, 16 Apr 2009 21:40:28 +0000 (21:40 +0000)]
Fix for PR3944: make mem2reg O(N) instead of O(N^2) in the number of
incoming edges for a block with many predecessors.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69312
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 21:34:54 +0000 (21:34 +0000)]
Handle a pointer type correctly in SCEVExpander::visitAddRecExpr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69310
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 20:59:02 +0000 (20:59 +0000)]
In the list-burr's pseudo two-addr dependency heuristics, don't
add dependencies on nodes with exactly one successor which is a
COPY_TO_REGCLASS node. In the case that the copy is coalesced
away, the dependence should be on the user of the copy, rather
than the copy itself.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69309
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 20:57:10 +0000 (20:57 +0000)]
Handle SUBREG_TO_REG instructions with the same heuristics
as INSERT_SUBREG instructions in the list-burr scheduler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69308
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 19:25:55 +0000 (19:25 +0000)]
Fix a bug with inttoptr/ptrtoint casts where the pointer has a different
size from the integer, requiring zero extension or truncation. Don't
create ZExtInsts with pointer types. This fixes a regression in
consumer-jpeg.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69307
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 16 Apr 2009 17:55:30 +0000 (17:55 +0000)]
Do not treat beginning of inlined scope as beginning of normal function scope if the location info is missing.
Insetad of doing ...
if (inlined_subroutine && known_location)
DW_TAG_inline_subroutine
else
DW_TAG_subprogram
do
if (inlined_subroutine) {
if (known_location)
DW_TAG_inline_subroutine
} else {
DW_TAG_subprogram
}
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69300
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 16:49:48 +0000 (16:49 +0000)]
Minor code simplifications. Don't attempt LSR on theoretical
targets with pointers larger than 64 bits, due to the code not
yet being APInt clean.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69296
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 16:46:01 +0000 (16:46 +0000)]
LSR is no longer a GEP optimizer. It is now an IV expression
optimizer, which just happen to frequently involve optimizing GEPs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69295
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 16:15:25 +0000 (16:15 +0000)]
Fix SCEVExpander::visitSMaxExpr and SCEVExpander::visitUMaxExpr to
not create ICmpInsts with operands of different types. This fixes
a regression in Applications/d/make_dparser.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69294
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 15:52:57 +0000 (15:52 +0000)]
Teach SCEVExpander::InsertCastOfTo to avoid creating inttoptr-of-ptrtoint
and ptrtoint-of-inttoptr expressions. This fixes a regression in 300.twolf.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69293
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 15:48:38 +0000 (15:48 +0000)]
Use ConstantExpr::getIntToPtr instead of SCEVExpander::InsertCastOfTo,
since the operand is always a constant.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69291
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 15:47:35 +0000 (15:47 +0000)]
Use a SCEV expression cast instead of immediately inserting a
new instruction with SCEVExpander::InsertCastOfTo.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69290
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 16 Apr 2009 15:07:09 +0000 (15:07 +0000)]
Record line number at the beginning of a func.start.
This line was accidently lost yesterday.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69286
91177308-0d34-0410-b5e6-
96231b3b80d8
Rafael Espindola [Thu, 16 Apr 2009 12:34:53 +0000 (12:34 +0000)]
fix PR3995. A scale must be 1, 2, 4 or 8.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69284
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 16 Apr 2009 05:52:18 +0000 (05:52 +0000)]
prove diagnostic -> group mapping information.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69270
91177308-0d34-0410-b5e6-
96231b3b80d8
Dan Gohman [Thu, 16 Apr 2009 03:18:22 +0000 (03:18 +0000)]
Expand GEPs in ScalarEvolution expressions. SCEV expressions can now
have pointer types, though in contrast to C pointer types, SCEV
addition is never implicitly scaled. This not only eliminates the
need for special code like IndVars' EliminatePointerRecurrence
and LSR's own GEP expansion code, it also does a better job because
it lets the normal optimizations handle pointer expressions just
like integer expressions.
Also, since LLVM IR GEPs can't directly index into multi-dimensional
VLAs, moving the GEP analysis out of client code and into the SCEV
framework makes it easier for clients to handle multi-dimensional
VLAs the same way as other arrays.
Some existing regression tests show improved optimization.
test/CodeGen/ARM/2007-03-13-InstrSched.ll in particular improved to
the point where if-conversion started kicking in; I turned it off
for this test to preserve the intent of the test.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69258
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 16 Apr 2009 03:16:12 +0000 (03:16 +0000)]
encode subgroups into the clang .inc file. -Wall now works!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69257
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 16 Apr 2009 02:33:41 +0000 (02:33 +0000)]
In -fast mode do what FastISel does.
This code could use some refactoring help!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69254
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 16 Apr 2009 01:33:10 +0000 (01:33 +0000)]
If FastISel is run and it has known DebugLoc then use it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69253
91177308-0d34-0410-b5e6-
96231b3b80d8
Devang Patel [Thu, 16 Apr 2009 01:31:54 +0000 (01:31 +0000)]
If location where the function was inlined is not know then do not emit debug info describing inlinied region.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69252
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 16 Apr 2009 00:53:25 +0000 (00:53 +0000)]
start producing subgroup info.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69249
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Thu, 16 Apr 2009 00:45:21 +0000 (00:45 +0000)]
Another testcase for IV shortening.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69247
91177308-0d34-0410-b5e6-
96231b3b80d8
Dale Johannesen [Wed, 15 Apr 2009 23:31:51 +0000 (23:31 +0000)]
Eliminate zext over (iv | const) or (signed iv),
and sext over (iv | const), if a longer iv is
available. Allow expressions to have more than
one zext/sext parent. All from OpenSSL.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69241
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Wed, 15 Apr 2009 22:33:02 +0000 (22:33 +0000)]
make sure that empty diag groups get known by clang.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69235
91177308-0d34-0410-b5e6-
96231b3b80d8