Nate Begeman [Tue, 28 Sep 2004 21:01:45 +0000 (21:01 +0000)]
Add support for the isLoad and isStore flags, needed by the instruction scheduler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16554
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:38:01 +0000 (18:38 +0000)]
Turn the hasDelaySlot flag into the M_DELAY_SLOT_FLAG
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16553
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:37:00 +0000 (18:37 +0000)]
Be consistent with our naming
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16552
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:34:14 +0000 (18:34 +0000)]
Capture delay slot info
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16551
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:33:50 +0000 (18:33 +0000)]
Capture information about whether the target instructions have delay slots
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16550
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:22:15 +0000 (18:22 +0000)]
Implement X / C1 / C2 folding
Implement (setcc (shl X, C1), C2) folding.
The second one occurs several dozen times in spec. The first was added
just in case. :)
These are tested by shift.ll:test2[12], and div.ll:test5
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16549
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:21:01 +0000 (18:21 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16548
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 18:18:35 +0000 (18:18 +0000)]
New testcases
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16547
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 17:54:07 +0000 (17:54 +0000)]
shl is always zero extending, so always use a zero extending shift right.
This latent bug was exposed by recent changes, and is tested as:
llvm/test/Regression/Transforms/InstCombine/2004-09-28-BadShiftAndSetCC.llx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16546
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 17:50:05 +0000 (17:50 +0000)]
New testcase for a latent bug in instcombine that I have been chasing for
1.5 days :(
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16545
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 28 Sep 2004 16:58:12 +0000 (16:58 +0000)]
* InstructionReader.cpp was absorbed into Reader.cpp
* Wrap at 80 cols
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16543
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 28 Sep 2004 16:57:46 +0000 (16:57 +0000)]
Fix doxygen comment
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16542
91177308-0d34-0410-b5e6-
96231b3b80d8
Brian Gaeke [Tue, 28 Sep 2004 16:04:00 +0000 (16:04 +0000)]
Touch output files before reading or writing them, so that they are
always guaranteed to exist. This fixes PR444. Thanks to Alkis
for reporting the bug and testing the patch.
AddRecord used to return a big list, but that return value was never
used. So now it doesn't return anything.
Create the WebDir if it does not exist.
Fix a typo in a comment.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16541
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Tue, 28 Sep 2004 14:52:58 +0000 (14:52 +0000)]
Corrected spelling of Makefile variable, thereby re-enabling profile
builds for projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16540
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 28 Sep 2004 14:42:44 +0000 (14:42 +0000)]
Add includes and use std:: for standard library calls to make code
compile on windows. This patch was contributed by Paolo Invernizzi.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16539
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 03:45:22 +0000 (03:45 +0000)]
Bug fixed
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16538
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 03:36:39 +0000 (03:36 +0000)]
Testcase for LLVM PR445
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16537
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 28 Sep 2004 02:53:15 +0000 (02:53 +0000)]
Since we use alloca now make sure we include the proper headers for it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16536
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 28 Sep 2004 02:47:38 +0000 (02:47 +0000)]
Use alloca instead of a C99 style array. This should fix the
compilation problem in windows.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16535
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 28 Sep 2004 02:40:37 +0000 (02:40 +0000)]
Pull assignment out of for loop conditional in order for this to
compile under windows. Patch contributed by Paolo Invernizzi!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16534
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 28 Sep 2004 02:38:58 +0000 (02:38 +0000)]
Fix includes. Patch contributed by Paolo Invernizzi!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16533
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 28 Sep 2004 02:29:40 +0000 (02:29 +0000)]
New testcase that crashes the C++ FE, encountered while working on PR445
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16532
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 28 Sep 2004 01:59:17 +0000 (01:59 +0000)]
Use class instead of struct for defining classes. This unbreaks the
build on windows. Patch contributed by Paolo Invernizzi!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16531
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 21:51:25 +0000 (21:51 +0000)]
Patch contributed by Patrick Meredith:
added notes on the fact that the current implementation uses
sbyte* for va_list. Updated all occurances of valist to va_list (it was
inconsistant and find/replace is so easy ;-) ). Added <...> around all
occurances of va_list in the intrinsic functions to match the vaarg and
vanext instructions and to further show that va_list is a variable type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16530
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 27 Sep 2004 20:35:59 +0000 (20:35 +0000)]
Fix grammar.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16529
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 19:29:18 +0000 (19:29 +0000)]
Fix two bugs: one where a condition was mistakenly swapped, and another
where we folded (X & 254) -> X < 1 instead of X < 2. These problems were
latent problems exposed by the latest patch.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16528
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 19:25:20 +0000 (19:25 +0000)]
New testcase
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16527
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Mon, 27 Sep 2004 18:22:18 +0000 (18:22 +0000)]
SparcV8 int regs are not only 32-bits in width, but they are 32-bit aligned!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16526
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 16:59:06 +0000 (16:59 +0000)]
The system ranlib on darwin occasionally adds two extra newlines to the
end of files, breaking the CFE build. As a gross hack around this,
ignore any trailing garbage on bytecode files. Thanks to Brian for digging
in and identifying the problem.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16525
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 16:41:01 +0000 (16:41 +0000)]
Hrm, if there is an error loading a file, try printing a message so the
user knows that...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16524
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 16:21:26 +0000 (16:21 +0000)]
Testcases for rev 250 of InstructionCombining.cpp
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16522
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 27 Sep 2004 16:18:50 +0000 (16:18 +0000)]
Fold: (setcc (shr X, ShAmt), CI), where 'cc' is eq or ne. This xform
triggers often, for example:
6x in povray, 1x in gzip, 279x in gcc, 1x in crafty, 8x in eon, 11x in perlbmk,
362x in gap, 4x in vortex, 14 in m88ksim, 211x in 126.gcc, 1x in compress,
11x in ijpeg, and 4x in 147.vortex.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16521
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 27 Sep 2004 07:35:19 +0000 (07:35 +0000)]
Improve warning
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16520
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Mon, 27 Sep 2004 05:08:17 +0000 (05:08 +0000)]
Correct some BuildMI arguments for the upcoming simple scheduler
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16519
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Sun, 26 Sep 2004 21:07:43 +0000 (21:07 +0000)]
Fix the copy-pasto that Brian noticed: V8 int regs are 32-bits wide, not 64.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16518
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 25 Sep 2004 16:00:07 +0000 (16:00 +0000)]
Add some missing #includes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16517
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 25 Sep 2004 15:59:41 +0000 (15:59 +0000)]
Qualify Path with sys:: namespace so this file compiles.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16516
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 25 Sep 2004 08:32:37 +0000 (08:32 +0000)]
Updated to reflect changes in the interface of TimeValue::now().
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16515
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 25 Sep 2004 08:29:54 +0000 (08:29 +0000)]
Clean up the interface of TimeValue:
- get rid of unneeded constructors
- get rid of duplicate methods/constructors/operators
- normalize to LLVM coding standards
- wrap to 80 columns.
Many thanks to Alkis Evlogimenos for his suggestions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16514
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 25 Sep 2004 05:03:54 +0000 (05:03 +0000)]
Added stub implementations of TimeValue concept for remaining platforms.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16513
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Sat, 25 Sep 2004 05:03:22 +0000 (05:03 +0000)]
Wrap to 80 cols.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16512
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Fri, 24 Sep 2004 23:25:19 +0000 (23:25 +0000)]
Initial implementation of the TimeValue abstraction.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16511
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Fri, 24 Sep 2004 21:19:06 +0000 (21:19 +0000)]
Updated the last two header files so that they are configured with
AC_CONFIG_HEADERS. This should prevent LLVM from needlessly re-compiling
on a re-configure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16510
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Fri, 24 Sep 2004 18:28:00 +0000 (18:28 +0000)]
Modified hash_map and hash_set configuration so that they are not
regenerated on every run of configure.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16509
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 24 Sep 2004 15:21:34 +0000 (15:21 +0000)]
Implement shift-and combinations, implementing InstCombine/and.ll:test19-21
These combinations trigger 4 times in povray, 7x in gcc, 4x in gap, and 2x in bzip2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16508
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Fri, 24 Sep 2004 15:18:43 +0000 (15:18 +0000)]
Add some tests for shr-and folding
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16507
91177308-0d34-0410-b5e6-
96231b3b80d8
John Criswell [Fri, 24 Sep 2004 13:28:51 +0000 (13:28 +0000)]
Configure Datatypes.h.in with AC_CONFIG_HEADERS. This should prevent it
from being re-generated if the new version is identical to the old version.
Hence, it should save us some recompiling after re-configures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16506
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 21:52:49 +0000 (21:52 +0000)]
Move LHSI->hasOneUse() into the arms of the conditional, reindenting code.
No functionality changes here.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16505
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 21:46:38 +0000 (21:46 +0000)]
Implement Transforms/InstCombine/and.ll:test18, a case that occurs 20 times
in perlbmk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16504
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 21:42:49 +0000 (21:42 +0000)]
New testcase for a pattern that occurs 20 times in perlbmk
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16503
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 23 Sep 2004 16:03:48 +0000 (16:03 +0000)]
Add a blurb about the use of class vs. struct keyword in class decls.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16500
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 15:46:00 +0000 (15:46 +0000)]
Implement select.ll:test16: fold load (select C, X, null) -> load X
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16499
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 15:45:20 +0000 (15:45 +0000)]
load null is undefined behavior, this should fold
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16498
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 23 Sep 2004 14:49:45 +0000 (14:49 +0000)]
Change Value from a "struct" to a "class" so that VC 7.1 doesn't generate
missing symbols when its referenced as a class.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16496
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 23 Sep 2004 14:47:10 +0000 (14:47 +0000)]
Patch for MINGW. Patch provided by Henrik Bach.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16495
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 23 Sep 2004 06:07:24 +0000 (06:07 +0000)]
Missed one $*.a -> $@ conversion for the Release build.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16494
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Thu, 23 Sep 2004 05:31:33 +0000 (05:31 +0000)]
Fix the last of the major PPC GEP folding deficiencies. This will allow
the ISel to use indexed and non-zero immediate offsets for GEPs that have
more than one use. This is common for instruction sequences such as a load
followed by a modify and store to the same address.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16493
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Thu, 23 Sep 2004 04:39:30 +0000 (04:39 +0000)]
Update email address
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16492
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 04:36:01 +0000 (04:36 +0000)]
Grrr... I shouldn't have to do this one :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16491
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Thu, 23 Sep 2004 04:30:05 +0000 (04:30 +0000)]
Update credits
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16490
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Thu, 23 Sep 2004 00:58:06 +0000 (00:58 +0000)]
Correct the rules for making shared libraries per libtool 1.5.10
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16489
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 22 Sep 2004 21:48:50 +0000 (21:48 +0000)]
Use the V8/V9 shared register file description
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16485
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 22 Sep 2004 21:38:42 +0000 (21:38 +0000)]
Combine the F2 and F3 instruction classes into one file for simplicity
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16484
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 22 Sep 2004 21:29:12 +0000 (21:29 +0000)]
Fix file header path
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16483
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 22 Sep 2004 20:09:29 +0000 (20:09 +0000)]
Prettify formatting of the file, adjust paths to making V8 a subdir of Sparc
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16482
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Wed, 22 Sep 2004 20:08:52 +0000 (20:08 +0000)]
V8 is now a subdirectory of Sparc; adjust paths accordingly
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16481
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 22 Sep 2004 15:32:08 +0000 (15:32 +0000)]
Update to add the HAVE_UINT64_T test and the STACK_DIRECTION indicator.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16480
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Wed, 22 Sep 2004 15:28:32 +0000 (15:28 +0000)]
The alloca function, strangely enough, is found in the malloc.h header file
on MINGW platform. Provide an #elseif case to #include malloc.h for this
platform if malloc.h is found.
Patch provided by Henrik Bach. Thanks Henrik!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16479
91177308-0d34-0410-b5e6-
96231b3b80d8
Nate Begeman [Wed, 22 Sep 2004 04:40:25 +0000 (04:40 +0000)]
add optimized code sequences for setcc x, 0
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16478
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 21 Sep 2004 21:35:23 +0000 (21:35 +0000)]
Do not fold (X + C1 != C2) if there are other users of the add. Doing
this transformation used to take a loop like this:
int Array[1000];
void test(int X) {
int i;
for (i = 0; i < 1000; ++i)
Array[i] += X;
}
Compiled to LLVM is:
no_exit: ; preds = %entry, %no_exit
%indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ] ; <uint> [#uses=2]
%tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar ; <int*> [#uses=2]
%tmp.7 = load int* %tmp.4 ; <int> [#uses=1]
%tmp.9 = add int %tmp.7, %X ; <int> [#uses=1]
store int %tmp.9, int* %tmp.4
*** %indvar.next = add uint %indvar, 1 ; <uint> [#uses=2]
*** %exitcond = seteq uint %indvar.next, 1000 ; <bool> [#uses=1]
br bool %exitcond, label %return, label %no_exit
and turn it into a loop like this:
no_exit: ; preds = %entry, %no_exit
%indvar = phi uint [ 0, %entry ], [ %indvar.next, %no_exit ] ; <uint> [#uses=3]
%tmp.4 = getelementptr [1000 x int]* %Array, int 0, uint %indvar ; <int*> [#uses=2]
%tmp.7 = load int* %tmp.4 ; <int> [#uses=1]
%tmp.9 = add int %tmp.7, %X ; <int> [#uses=1]
store int %tmp.9, int* %tmp.4
*** %indvar.next = add uint %indvar, 1 ; <uint> [#uses=1]
*** %exitcond = seteq uint %indvar, 999 ; <bool> [#uses=1]
br bool %exitcond, label %return, label %no_exit
Note that indvar.next and indvar can no longer be coallesced. In machine
code terms, this patch changes this code:
.LBBtest_1: # no_exit
mov %EDX, OFFSET Array
mov %ESI, %EAX
add %ESI, DWORD PTR [%EDX + 4*%ECX]
mov %EDX, OFFSET Array
mov DWORD PTR [%EDX + 4*%ECX], %ESI
mov %EDX, %ECX
inc %EDX
cmp %ECX, 999
mov %ECX, %EDX
jne .LBBtest_1 # no_exit
into this:
.LBBtest_1: # no_exit
mov %EDX, OFFSET Array
mov %ESI, %EAX
add %ESI, DWORD PTR [%EDX + 4*%ECX]
mov %EDX, OFFSET Array
mov DWORD PTR [%EDX + 4*%ECX], %ESI
inc %ECX
cmp %ECX, 1000
jne .LBBtest_1 # no_exit
We need better instruction selection to get this:
.LBBtest_1: # no_exit
add DWORD PTR [Array + 4*%ECX], EAX
inc %ECX
cmp %ECX, 1000
jne .LBBtest_1 # no_exit
... but at least there is less register juggling
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16473
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Tue, 21 Sep 2004 21:22:11 +0000 (21:22 +0000)]
The real x87 floating point registers should not be allocatable. They
are only used by the stackifier when transforming FPn register
allocations to the real stack file x87 registers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16472
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 21 Sep 2004 18:22:33 +0000 (18:22 +0000)]
s/ISel/PPC64ISel/ to have unique class names for debugging via gdb because the
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16471
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 21 Sep 2004 18:22:19 +0000 (18:22 +0000)]
s/ISel/PPC32ISel/ to have unique class names for debugging via gdb because the
C++ front-end in gcc does not mangle classes in anonymous namespaces correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16470
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 21 Sep 2004 18:21:21 +0000 (18:21 +0000)]
s/ISel/X86ISel/ to have unique class names for debugging via gdb because the C++
front-end in gcc does not mangle classes in anonymous namespaces correctly.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16469
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 21 Sep 2004 17:30:54 +0000 (17:30 +0000)]
Make sure to set the operand list
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16466
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 21 Sep 2004 17:14:44 +0000 (17:14 +0000)]
Fix a problem where the mmap_file test was generating an incorrect test
program that always failed (wouldn't compile).
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16465
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 21 Sep 2004 17:13:23 +0000 (17:13 +0000)]
Change the warning text so that NO warnings are permitted. This is now the
case since the AC_CONFIG_SUBDIRS problem has been fixed.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16464
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 21 Sep 2004 17:12:35 +0000 (17:12 +0000)]
Don't attempt to (illegally) configure a subdir if we don't recognize it.
Instead just create a warning message that says the directory cannot be
configured because it isn't recognized. This also gets rid of a bunch of
warning messages from the auto* tools.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16463
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Tue, 21 Sep 2004 17:10:52 +0000 (17:10 +0000)]
Fix the program passed to AC_LANG_PROGRAM to be only the BODY of the main
function, not the whole main function. This problem resulted during
conversion of scripts to the new autoconf standard. The effect was that
the mmap_file test would fail and if it does there is currently an
#ifdef'd #error that causes compilation to fail. Bad, bad, bad.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16462
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 21 Sep 2004 16:54:37 +0000 (16:54 +0000)]
Thanks to Brad Jones for packed type support!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16461
91177308-0d34-0410-b5e6-
96231b3b80d8
Misha Brukman [Tue, 21 Sep 2004 16:53:29 +0000 (16:53 +0000)]
Thanks to Brad for documentation on adding a DerivedType
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16460
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 21 Sep 2004 16:26:13 +0000 (16:26 +0000)]
This is an empty directory
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16459
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Tue, 21 Sep 2004 16:25:41 +0000 (16:25 +0000)]
This is a dead directory now
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16458
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 20 Sep 2004 22:14:56 +0000 (22:14 +0000)]
Change the name of the "known" module for Java from llvm-java to Java.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16453
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 20 Sep 2004 15:45:36 +0000 (15:45 +0000)]
Use the right directory for the Java frontend
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16448
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 10:15:10 +0000 (10:15 +0000)]
Fix potential miscompilations: InstCombine/2004-09-20-BadLoadCombine*.llx
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16447
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 10:14:27 +0000 (10:14 +0000)]
Two testcases for invalid transformations that instcombine is doing
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16446
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 20 Sep 2004 08:09:36 +0000 (08:09 +0000)]
Documentation upgrade.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16445
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 20 Sep 2004 08:04:13 +0000 (08:04 +0000)]
Finish the documentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16444
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 20 Sep 2004 08:00:09 +0000 (08:00 +0000)]
Tighten up the specification of what counts as a code file. The previous
specification was too liberal in some areas and missing things in others.
This specification is based on the actual extensions found in the source
tree.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16443
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 20 Sep 2004 07:22:23 +0000 (07:22 +0000)]
Base the implementation on the llvmdo script so that we only have to
maintain the logic for "what counts as a source file" in one place.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16442
91177308-0d34-0410-b5e6-
96231b3b80d8
Reid Spencer [Mon, 20 Sep 2004 07:21:19 +0000 (07:21 +0000)]
Fixed to actually work correctly and be the basis for other tools by
allowing the set of directories searched to be specified either by the
LLVMDO_DIRS env var or by the -dirs "dirs..." command line option.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16441
91177308-0d34-0410-b5e6-
96231b3b80d8
Alkis Evlogimenos [Mon, 20 Sep 2004 06:42:58 +0000 (06:42 +0000)]
Fix loop condition so that we don't decrement off the beginning of the
list.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16440
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 05:01:04 +0000 (05:01 +0000)]
Don't count .lo files :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16439
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 04:48:05 +0000 (04:48 +0000)]
'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16436
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 04:47:19 +0000 (04:47 +0000)]
'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
Also, fix some undefined behavior, expecting | on booleans to evaluate
left-to-right.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16435
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 04:44:31 +0000 (04:44 +0000)]
Finegrainify namespacification
'Pass' should now not be derived from by clients. Instead, they should derive
from ModulePass. Instead of implementing Pass::run, then should implement
ModulePass::runOnModule.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16434
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 04:43:57 +0000 (04:43 +0000)]
Prototype more accurately
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16433
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 04:43:15 +0000 (04:43 +0000)]
Prototype these functions more accurately
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16432
91177308-0d34-0410-b5e6-
96231b3b80d8
Chris Lattner [Mon, 20 Sep 2004 04:41:39 +0000 (04:41 +0000)]
Do not prototype any of these passes as returning Pass*. Instead, be specific
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16431
91177308-0d34-0410-b5e6-
96231b3b80d8