1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-26 06:22:56 +02:00
Commit Graph

47221 Commits

Author SHA1 Message Date
Bill Wendling
94a47465af Waste time fixing something that should have been fixed before.
llvm-svn: 73236
2009-06-12 18:02:40 +00:00
Nick Lewycky
32fec8ff24 Keep callers of a weak function calling it, instead of the non-weak equivalent.
llvm-svn: 73235
2009-06-12 17:16:48 +00:00
Arnold Schwaighofer
780e3addf8 Fix Bug 4278: X86-64 with -tailcallopt calling convention
out of sync with regular cc.

The only difference between the tail call cc and the normal
cc was that one parameter register - R9 - was reserved for
calling functions through a function pointer. After time the
tail call cc has gotten out of sync with the regular cc. 

We can use R11 which is also caller saved but not used as
parameter register for potential function pointers and
remove the special tail call cc on x86-64.

llvm-svn: 73233
2009-06-12 16:26:57 +00:00
Nick Lewycky
effec6b472 Don't forget to match the calling convention when producing a thunk.
llvm-svn: 73231
2009-06-12 16:04:00 +00:00
Nick Lewycky
1e36649f95 Given two identical weak functions, produce one internal function and two weak
thunks.

llvm-svn: 73230
2009-06-12 15:56:56 +00:00
Duncan Sands
92153907f3 Tweak GenLibDeps.pl so it works on solaris.
Patch by Edward O'Callaghan.

llvm-svn: 73228
2009-06-12 14:23:42 +00:00
Nicolas Geoffray
72523163ad After obtaining the lock, look if the function has been codegen'd by
another thread.

llvm-svn: 73227
2009-06-12 14:11:08 +00:00
Nick Lewycky
cc239d7680 This test is wrong. If you have two weak functions F and G you can't make
either one call the other since either one can be replaced at link time, and
they need to be independent.

llvm-svn: 73225
2009-06-12 13:24:41 +00:00
Duncan Sands
f0b761540d Add clang support to the nightly test script.
Patch by Edward O'Callaghan.

llvm-svn: 73224
2009-06-12 13:02:52 +00:00
Duncan Sands
7d79ddff64 Credits for Edward O'Callaghan.
llvm-svn: 73223
2009-06-12 12:52:24 +00:00
Nick Lewycky
5b80791480 Add an "are types equivalent" operation that ignores the types that a pointer
points to while analyzing all other fields.

Use FoldingSetNodeID to produce a good hash. This dramatically decreases run
times.

Emit thunks. This means that it can look at all functions regardless of what
the linkage is or if the address is taken, but unfortunately some small
functions can be even shorter than the thunk because our backend doesn't yet
realize it can just turn these into jumps. This means that this pass will
pessimize code on average.

llvm-svn: 73222
2009-06-12 08:04:51 +00:00
Nick Lewycky
61f78a2674 Fix regular expression.
llvm-svn: 73221
2009-06-12 05:39:02 +00:00
Nick Lewycky
bbce41f698 Don't remove aggregate-typed module level constants before encoding functions
since functions may contain aggregate constants too.

llvm-svn: 73220
2009-06-12 05:20:12 +00:00
Nick Lewycky
127b1cc900 In an XFAIL line, treat "XFAIL: foo*bar" as a regular expression to be matched
against the target triple, instead of equivalent to "XFAIL: *".

llvm-svn: 73219
2009-06-12 05:18:32 +00:00
Oscar Fuentes
9f16ef410d CMake: New variable LLVM_LIBDIR_SUFFIX.
Patch by Ingmar Vanhassel!

llvm-svn: 73216
2009-06-12 02:49:53 +00:00
Misha Brukman
5f9665b84a Update script to tell the user where to get the CodeSourcery crosstool, if it's
not found.

llvm-svn: 73213
2009-06-12 02:04:47 +00:00
Misha Brukman
797945ae86 Added two scripts to aid with building Linux/x86 -> Linux/ARM crosstools, using
CodeSourcery's provided GCC-based crosstools, from which we use binutils.

llvm-svn: 73212
2009-06-12 01:55:57 +00:00
Nick Lewycky
e3b5c81cb8 XFAIL this on PPC Linux. This keeps showing up in the buildbot and isn't easy to fix, and I'd like it to stop masking
real failures.

llvm-svn: 73211
2009-06-11 23:43:02 +00:00
Eli Friedman
74e9f6c070 Misc x86 README updates: remove a couple of already-fixed issues,
add a few suggestions from looking at some assembly code.

llvm-svn: 73210
2009-06-11 23:07:04 +00:00
Bruno Cardoso Lopes
2b429fb48f Use forward declarations and move TargetELFWriterInfo impl to a new file.
llvm-svn: 73209
2009-06-11 22:13:00 +00:00
Dale Johannesen
60e261db11 Test for rev 73205 (PR 4349)
llvm-svn: 73206
2009-06-11 20:48:09 +00:00
Bill Wendling
dea5417ce0 Alphabetize.
llvm-svn: 73203
2009-06-11 20:13:35 +00:00
Bill Wendling
038b8dd7b5 Remove unused parameter warnings.
llvm-svn: 73202
2009-06-11 20:10:02 +00:00
Bruno Cardoso Lopes
9b68e8653f Support for ELF Visibility
Emission for globals, using the correct data sections
Function alignment can be computed for each target using TargetELFWriterInfo
Some small fixes

llvm-svn: 73201
2009-06-11 19:16:03 +00:00
Chris Lattner
e0360f8ae8 Fix 4366: store to null in non-default addr space should not be
turned into unreachable.

llvm-svn: 73195
2009-06-11 17:54:56 +00:00
Sanjiv Gupta
4d678059ba Generate libcalls for floating point arithmetic and casting operations.
llvm-svn: 73194
2009-06-11 16:50:48 +00:00
Duncan Sands
9b5e3effef Cosmetic changes to parameter attribute verification.
llvm-svn: 73188
2009-06-11 08:11:03 +00:00
Duncan Sands
c12241a948 Avoid leaking memory in an error path. Noticed
by cppcheck.

llvm-svn: 73187
2009-06-11 08:09:49 +00:00
Sanjiv Gupta
1f8f8ce400 More formatting.
llvm-svn: 73185
2009-06-11 06:55:48 +00:00
Sanjiv Gupta
04cb690c99 Fixed source comments. No functionality change.
llvm-svn: 73184
2009-06-11 06:49:55 +00:00
Oscar Fuentes
fd06248a88 CMake: Documented how to cross-compile with CMake.
llvm-svn: 73181
2009-06-11 04:45:08 +00:00
Oscar Fuentes
cfe2266e89 CMake: Fixed parallel build problem related to native tblgen when
cross-compiling.

llvm-svn: 73180
2009-06-11 04:16:10 +00:00
Oscar Fuentes
c2d42ced17 CMake: Updated list of files on lib/CodeGen/CMakeLists.txt.
llvm-svn: 73174
2009-06-10 22:53:59 +00:00
Jay Foad
5affd7b2c9 Implement and use new method Function::hasAddressTaken().
llvm-svn: 73164
2009-06-10 08:41:11 +00:00
Sanjiv Gupta
02c9163ae2 Remove warnings: no newline at end of file.
llvm-svn: 73156
2009-06-10 03:42:13 +00:00
Anton Korobeynikov
1447d902e3 Silence a warning
llvm-svn: 73152
2009-06-09 23:00:39 +00:00
Misha Brukman
789c11dcc0 Reversed order of args in EXPECT_EQ() macros to be in the correct order:
EXPECT_EQ(expected, actual) .  This will make error messages understandable as
it uses terms such as "expected" and "actual" based on the order of arguments.

llvm-svn: 73150
2009-06-09 21:48:57 +00:00
Jay Foad
209162fd09 Remove an unused function SafeToDestroyConstant(). Rename an almost
identical function ConstantIsDead() to SafeToDestroyConstant(), to
emphasise the connection with Constant::destroyConstant().

llvm-svn: 73149
2009-06-09 21:37:11 +00:00
Daniel Dunbar
06ef64d379 Remove empty test (my DejaGNU doesn't like this)
llvm-svn: 73148
2009-06-09 21:24:39 +00:00
Rafael Espindola
65d1c4f548 Bug fix:
string::find returns string::npos if the substring is not found.

llvm-svn: 73145
2009-06-09 21:14:25 +00:00
Bill Wendling
23d6f0b5c7 Simplified logic of this if-then statement to reduce nesting. No functionality
change.

llvm-svn: 73143
2009-06-09 20:08:51 +00:00
Owen Anderson
996a7f7f37 Add the beginnings of an implementatation of lazy liveness analysis, based on "Fast Liveness Checking for SSA-form Programs" by Boissinot, et al.
This is still very early, hasn't been tested, and is not yet well documented.  More to come soon.

llvm-svn: 73141
2009-06-09 19:30:45 +00:00
Bill Wendling
c34ea869f5 Remove empty file.
llvm-svn: 73140
2009-06-09 18:55:39 +00:00
Bill Wendling
028755480c I'm going to assume that this was meant to be an assignment instead of a
computation that isn't used. Please correct this if it's wrong!

llvm-svn: 73139
2009-06-09 18:49:42 +00:00
David Greene
a51f014e59 Revert 73074 and 73099 because Windows doesn't have POSIX
regular expressions.  We will add an OpenBSD implementation
and re-apply ASAP.

llvm-svn: 73138
2009-06-09 18:31:17 +00:00
Dan Gohman
389d27ecdd Use expandCodeFor instead of expand when the result will be
immediately casted. At present, this is just a minor code
simplification. In the future, the expansion code may be able
to make better choices if it knows what the desired result
type will be.

llvm-svn: 73137
2009-06-09 17:18:38 +00:00
Sanjiv Gupta
2121a84223 PIC16 emits auto variables as globals. When optimizer removes a function entierly by estimating its side effects on globals, those globals(autos) without a function were not being printed by the Asm printer.
llvm-svn: 73135
2009-06-09 15:31:19 +00:00
David Greene
3f7cc686d9 Change IndexedModeAction representation.
This changes the IndexedModeAction representation to remove the
limitation on the number of value types in MVT.  This limitation
prevents us from specifying AVX types.

Prior to this change IndexedModActions was represented as follows...

uint64_t IndexedModeActions[2][ISD::LAST_INDEXED_MODE];

the first dimension was used to represent loads, then stores.  This
imposed a limitation of 32 on the number of value types that could be
handled with this method.  The value type was used to shift the two bits
into and out of the approprate bits in the uint64_t.

With this change the array is now represented as ...

uint8_t IndexedModeActions[MVT::LAST_VALUETYPE][2][ISD::LAST_INDEXED_MODE];

Takes more space but removes the limitation on MVT::LAST_VALUETYPE.  The
first dimension is now the value_type for the reference.  The second
dimension is the load [0] vs. store[1].  The third dimension represents
the various modes for load store.  Accesses are now direct, no shifting
or masking.

There are other limitations that need to be removed, so that
MVT::LAST_VALUETYPE can be greater than 32.  This is merely the first
step towards that goal.

llvm-svn: 73104
2009-06-09 00:19:10 +00:00
David Greene
00c5ffe4d4 Oops, didn't mean to commit 73102 yet. Revert it.
llvm-svn: 73103
2009-06-08 23:54:42 +00:00
David Greene
901b8d38f4 Change IndexedModeAction representation.
This changes the IndexedModeAction representation to remove the
limitation on the number of value types in MVT.  This limitation
prevents us from specifying AVX types.

Prior to this change IndexedModActions was represented as follows...

uint64_t IndexedModeActions[2][ISD::LAST_INDEXED_MODE];

the first dimension was used to represent loads, then stores.  This
imposed a limitation of 32 on the number of value types that could be
handled with this method.  The value type was used to shift the two bits
into and out of the approprate bits in the uint64_t.

With this change the array is now represented as ...

uint8_t IndexedModeActions[MVT::LAST_VALUETYPE][2][ISD::LAST_INDEXED_MODE];

Takes more space but removes the limitation on MVT::LAST_VALUETYPE.  The
first dimension is now the value_type for the reference.  The second
dimension is the load [0] vs. store[1].  The third dimension represents
the various modes for load store.  Accesses are now direct, no shifting
or masking.

There are other limitations that need to be removed, so that
MVT::LAST_VALUETYPE can be greater than 32.  This is merely the first
step towards that goal.

llvm-svn: 73102
2009-06-08 23:53:19 +00:00