| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* We can now fold cast instructions into select instructions that
have at least one constant operand.
* We now optimize expressions more aggressively based on bits that are
known to be zero. These optimizations occur a lot in code that uses
bitfields even in simple ways.
* We now turn more cast-cast sequences into AND instructions. Before we
would only do this if it if all types were unsigned. Now only the
middle type needs to be unsigned (guaranteeing a zero extend).
* We transform sign extensions into zero extensions in several cases.
This corresponds to these test/Regression/Transforms/InstCombine testcases:
2004-11-22-Missed-and-fold.ll
and.ll: test28-29
cast.ll: test21-24
and-or-and.ll
cast-cast-to-and.ll
zeroext-and-reduce.ll
llvm-svn: 19220
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
While we're at it, improve codegen of select instructions. For this
testcase:
int %test(bool %C, int %A, int %B) {
%D = select bool %C, int %A, int %B
ret int %D
}
We used to generate this code:
_test:
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
b .LBB_test_3 ;
.LBB_test_2: ;
or r5, r4, r4
.LBB_test_3: ;
or r3, r5, r5
blr
Now we emit:
_test:
cmpwi cr0, r3, 0
bne .LBB_test_2 ;
.LBB_test_1: ;
or r4, r5, r5
.LBB_test_2: ;
or r3, r4, r4
blr
-Chris
llvm-svn: 19214
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In particular, instead of compiling this:
bool %test(int %A, int %B) {
%C = setlt int %A, %B
ret bool %C
}
to this:
test:
save %sp, -96, %sp
subcc %i0, %i1, %g0
bl .LBBtest_1 !
nop
ba .LBBtest_2 !
nop
.LBBtest_1: !
or %g0, 1, %i0
ba .LBBtest_3 !
nop
.LBBtest_2: !
or %g0, 0, %i0
ba .LBBtest_3 !
nop
.LBBtest_3: !
restore %g0, %g0, %g0
retl
nop
We now compile it to this:
test:
save %sp, -96, %sp
subcc %i0, %i1, %g0
or %g0, 1, %i0
bl .LBBtest_2 !
nop
.LBBtest_1: !
or %g0, %g0, %i0
.LBBtest_2: !
restore %g0, %g0, %g0
retl
nop
llvm-svn: 19213
|
| |
|
|
|
|
|
|
| |
SimplifyCFG is one of those passes that we use for final cleanup: it should
not rely on other passes to clean up its garbage. This fixes the "why are
trivially dead setcc's in the output of gccas" problem.
llvm-svn: 19212
|
| |
|
|
| |
llvm-svn: 19210
|
| |
|
|
| |
llvm-svn: 19203
|
| |
|
|
| |
llvm-svn: 19202
|
| |
|
|
| |
llvm-svn: 19201
|
| |
|
|
| |
llvm-svn: 19199
|
| |
|
|
| |
llvm-svn: 19198
|
| |
|
|
| |
llvm-svn: 19190
|
| |
|
|
|
|
| |
Transforms/DeadStoreElimination/2004-12-28-PartialStore.ll
llvm-svn: 19180
|
| |
|
|
|
|
| |
Fix testcase CodeGen/CBackend/2004-12-28-LogicalConstantExprs.ll
llvm-svn: 19176
|
| |
|
|
| |
llvm-svn: 19172
|
| |
|
|
|
|
|
|
|
|
| |
portability, the --track-space option was inadvertently ignored. This patch
fixes that so that sys::Process::GetMallocUsage() is only invoked if the
--track-spaces option is given. Apparently the mallinfo() call that
GetMallocUsage() uses is *very* slow, especially when processing very large
modules like projects/llvm-test/MultiSource/Applications/kimwitu++.
llvm-svn: 19163
|
| |
|
|
|
|
|
|
|
|
| |
* Ensure #includes are wrapped with appropriate HAVE_ guards
* Account for variations in time.h and sys/time.h inclusion.
* Add macros for getting wait(2) exit status correctly (per autoconf sugg.)
* Implement ThrowErrno in terms of strerror_r, strerror or none based on
what is available on the platform.
llvm-svn: 19161
|
| |
|
|
|
|
| |
* Remove redundant #includes that are now in Unix.h
llvm-svn: 19160
|
| |
|
|
|
|
|
| |
* Move implementation of sys::PreventCoreFiles function to this file from
the now defunct SysConfig abstraction.
llvm-svn: 19159
|
| |
|
|
|
|
|
| |
* Ensure #includes are wrapped with appropriate HAVE_ guards
* Ensure variations in "dirent" structure are accounted for.
llvm-svn: 19158
|
| |
|
|
|
|
|
| |
* Ensure #includes are wrapped with appropriate HAVE_ guards
* Consolidate implementation from operating system specific directory.
llvm-svn: 19157
|
| |
|
|
|
|
| |
* Ensure #includes are wrapped with appropriate HAVE_ guards
llvm-svn: 19156
|
| |
|
|
|
|
|
| |
* Consolidate implementation for Unix systems into Unix/TimeValue.cpp
* Avoid use of symbolic link to #include platform-specific implementation.
llvm-svn: 19155
|
| |
|
|
|
|
|
| |
* Consolidate implementation for Unix systems into Unix/Program.cpp
* Avoid use of symbolic link to #include platform-specific implementation.
llvm-svn: 19154
|
| |
|
|
|
|
|
| |
* Consolidate implementation for Unix systems into Unix/Signals.cpp
* Avoid use of symbolic link to #include platform-specific implementation.
llvm-svn: 19153
|
| |
|
|
|
|
|
| |
* Consolidate implementation for Unix systems into Unix/Memory.cpp
* Avoid use of symbolic link to #include platform-specific implementation.
llvm-svn: 19152
|
| |
|
|
|
|
|
| |
* Consolidate implementation for Unix systems into Unix/MappedFile.cpp
* Avoid use of symbolic link to #include platform-specific implementation.
llvm-svn: 19151
|
| |
|
|
|
|
|
| |
* Consolidate implementation for Unix systems into Unix/Process.cpp
* Avoid use of symbolic link to #include platform-specific implementation.
llvm-svn: 19150
|
| |
|
|
|
|
|
|
| |
SysConf abstraction was pointless because it had a single function in it that
pertained only to the current process. So merge it into the Process abstraction
and remove the files completely.
llvm-svn: 19149
|
| |
|
|
|
|
|
| |
Old versions of the C runtime somehow get loaded into the process. Make
sure they aren't searched for symbols.
llvm-svn: 19141
|
| |
|
|
| |
llvm-svn: 19140
|
| |
|
|
|
|
| |
ltdl's LGPL license would infect all of LLVM.
llvm-svn: 19137
|
| |
|
|
|
|
|
|
| |
Merge implementations of isValid and GetTemporaryDirectory into this file. There
is not any point having the operating system specific files for such little
variation between the Unix family of systems.
llvm-svn: 19134
|
| |
|
|
|
|
|
| |
This implementation is no longer needed, its been merged to Unix/Path.cpp since
there is such little variation between the platforms.
llvm-svn: 19133
|
| |
|
|
|
|
|
| |
Use the LLVM_ON_UNIX and LLVM_ON_WIN32 #defines to include the implementation
instead of relying upon the "platform" link
llvm-svn: 19132
|
| |
|
|
| |
llvm-svn: 19130
|
| |
|
|
|
|
|
| |
is now implemented via ltdl.cpp which has its own way of dealing with
the different platforms.
llvm-svn: 19129
|
| |
|
|
| |
llvm-svn: 19124
|
| |
|
|
| |
llvm-svn: 19122
|
| |
|
|
| |
llvm-svn: 19121
|
| |
|
|
| |
llvm-svn: 19120
|
| |
|
|
|
|
|
|
|
| |
a function call at the core of the loop inline and removing unused
stack variables from an often called function. This doesn't improve things
much, the real saving will be by reducing the number of calls to this
function (100K+ when linking kimwitu++).
llvm-svn: 19119
|
| |
|
|
| |
llvm-svn: 19112
|
| |
|
|
|
|
|
| |
Include local FDHandle.h file now that FDHandle is local to this library
and not in lib/System/FileUtilities.
llvm-svn: 19108
|
| |
|
|
|
|
| |
FDHandle class (non-portable) moved here from lib/Support/FileUtilities
llvm-svn: 19107
|
| |
|
|
|
|
| |
Move non-portable FDHandle class to its only user: lib/Debugger
llvm-svn: 19106
|
| |
|
|
|
|
|
| |
Remove unix specific code (use of errno and read) from the reader.
Thanks to Jeff Cohen for pointing this out.
llvm-svn: 19081
|
| |
|
|
| |
llvm-svn: 19079
|
| |
|
|
| |
llvm-svn: 19077
|
| |
|
|
| |
llvm-svn: 19076
|
| |
|
|
| |
llvm-svn: 19075
|