Gordon Henriksen
8fa8929177
With this patch, the LowerGC transformation becomes the
...
ShadowStackCollector, which additionally has reduced overhead with
no sacrifice in portability.
Considering a function @fun with 8 loop-local roots,
ShadowStackCollector introduces the following overhead
(x86):
; shadowstack prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl $___gc_fun, 20(%esp)
movl $0, 24(%esp)
movl $0, 28(%esp)
movl $0, 32(%esp)
movl $0, 36(%esp)
movl $0, 40(%esp)
movl $0, 44(%esp)
movl $0, 48(%esp)
movl $0, 52(%esp)
movl %ecx, 16(%esp)
leal 16(%esp), %ecx
movl %ecx, (%eax)
; shadowstack loop overhead
(none)
; shadowstack epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; shadowstack metadata
.align 3
___gc_fun: # __gc_fun
.long 8
.space 4
In comparison to LowerGC:
; lowergc prologue
movl L_llvm_gc_root_chain$non_lazy_ptr, %eax
movl (%eax), %ecx
movl %ecx, 48(%esp)
movl $8, 52(%esp)
movl $0, 60(%esp)
movl $0, 56(%esp)
movl $0, 68(%esp)
movl $0, 64(%esp)
movl $0, 76(%esp)
movl $0, 72(%esp)
movl $0, 84(%esp)
movl $0, 80(%esp)
movl $0, 92(%esp)
movl $0, 88(%esp)
movl $0, 100(%esp)
movl $0, 96(%esp)
movl $0, 108(%esp)
movl $0, 104(%esp)
movl $0, 116(%esp)
movl $0, 112(%esp)
; lowergc loop overhead
leal 44(%esp), %eax
movl %eax, 56(%esp)
leal 40(%esp), %eax
movl %eax, 64(%esp)
leal 36(%esp), %eax
movl %eax, 72(%esp)
leal 32(%esp), %eax
movl %eax, 80(%esp)
leal 28(%esp), %eax
movl %eax, 88(%esp)
leal 24(%esp), %eax
movl %eax, 96(%esp)
leal 20(%esp), %eax
movl %eax, 104(%esp)
leal 16(%esp), %eax
movl %eax, 112(%esp)
; lowergc epilogue
movl 48(%esp), %edx
movl %edx, (%ecx)
; lowergc metadata
(none)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45670 91177308-0d34-0410-b5e6-96231b3b80d8
2008-01-07 01:30:53 +00:00
Chris Lattner
234d529e58
remove attribution from a variety of miscellaneous files.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45425 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 22:59:10 +00:00
Chris Lattner
57360d1f1c
remove attributions from the rest of the llvm makefiles.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45416 91177308-0d34-0410-b5e6-96231b3b80d8
2007-12-29 20:11:13 +00:00
Gordon Henriksen
326e24fff0
GarbageCollection.html is expanded to encompass the coming
...
capabilities. This is a major rewrite and is easier to read en toto
rather than patchwise.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42414 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-27 19:31:36 +00:00
Chris Lattner
95bb69acbc
Reenable libgc and libprofile is explicitly requested.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41851 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 17:12:32 +00:00
Chris Lattner
210329a025
remove an obsolete library.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41850 91177308-0d34-0410-b5e6-96231b3b80d8
2007-09-11 17:10:52 +00:00
Anton Korobeynikov
b08c6db115
Dror GCCLibraries: they are obsolete since 2.0 release. This also reduces number of licenses used in LLVM.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41257 91177308-0d34-0410-b5e6-96231b3b80d8
2007-08-21 22:40:44 +00:00
Chris Lattner
6e3d3bc9ee
crtend is only for llvm-gcc3, remove it.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34529 91177308-0d34-0410-b5e6-96231b3b80d8
2007-02-23 19:34:09 +00:00
Chris Lattner
5c4a96dfc5
the old trace values pass has been removed, remove its runtime library.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32999 91177308-0d34-0410-b5e6-96231b3b80d8
2007-01-07 18:13:48 +00:00
Reid Spencer
8b2e1419cf
Undo removal of the runtime libraries. While this may have been a bit
...
premature, these libraries will be going away for the 2.0 release. Other
arrangements for profiling, gc, etc. should be made in the next few months.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31807 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-17 03:32:33 +00:00
Reid Spencer
ac90d5e50b
In LLVM 2.0 we won't use the runtime libraries as llvm-gcc3 support will
...
be dropped. This patch pertains to removing the runtime directory from LLVM.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31793 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-16 23:17:27 +00:00
Reid Spencer
162e20934b
Remove unused variable.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31404 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-03 01:58:30 +00:00
Reid Spencer
3ed469ccd7
For PR786:
...
Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting
fall out by removing unused variables. Remaining warnings have to do with
unused functions (I didn't want to delete code without review) and unused
variables in generated code. Maintainers should clean up the remaining
issues when they see them. All changes pass DejaGnu tests and Olden.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31380 91177308-0d34-0410-b5e6-96231b3b80d8
2006-11-02 20:25:50 +00:00
John Criswell
fd3a9c7972
Describe and date modifications we made per LGPL requirements.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29569 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-08 14:47:54 +00:00
John Criswell
7fc20cafc3
Make information more complete.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29568 91177308-0d34-0410-b5e6-96231b3b80d8
2006-08-08 14:47:33 +00:00
John Criswell
b112af24dd
Reverted previous commit. Thanks, Chris.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29388 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-28 18:30:52 +00:00
John Criswell
5804c0d40c
Added in the LGPL text and copyright information. This needs to be
...
included in the distribution.
Also added the glibc LICENSES file, which should be included as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29386 91177308-0d34-0410-b5e6-96231b3b80d8
2006-07-28 18:16:00 +00:00
Reid Spencer
72f42bbc9b
For PR786:
...
Turn -pedantic and -Wno-long-long compile flags on by default. In a few
places, avoid the warnings by removing these options in the local makefile.
One notable exception: lib/Target/CBackend/Writer.cpp. These warnings are
left on as a reminder to developers to clean them up.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28614 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-01 01:55:21 +00:00
Reid Spencer
2362bad21f
Put an innocuous statement in this file to quelch warnings about compiling
...
an empty file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28612 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-01 01:49:08 +00:00
Reid Spencer
18c8b49e7d
Use archive libraries instead of object files for VMCore, BCReader,
...
BCWriter, and bzip2 libraries. Adjust the various makefiles to accommodate
these changes. This was done to speed up link times.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28610 91177308-0d34-0410-b5e6-96231b3b80d8
2006-06-01 01:30:27 +00:00
Reid Spencer
19b7e0e0ca
For PR786:
...
Minor tweaks in public headers and a few .cpp files so that LLVM can build
successfully with -pedantic and projects using LLVM with -pedantic don't
get warnings from LLVM. There's still more -pedantic warnings to fix.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28453 91177308-0d34-0410-b5e6-96231b3b80d8
2006-05-24 19:21:13 +00:00
Reid Spencer
30ea2fa933
Invert the tests on LLVMGCC_MAJVERS to check for value 4 instead of value
...
3. This ensures that if llvm-gcc isn't available and consequently the value
of LLVMGCC_MAJVERS is blank, that the old (include runtime) behavior will
persist.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27499 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-07 21:45:23 +00:00
Chris Lattner
8f56902592
add a newline at the end of the file
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27492 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-07 18:41:16 +00:00
Reid Spencer
93bc3cdd43
Avoid building the runtime libraries if llvm-gcc version 4 is detected.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27464 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-06 22:15:51 +00:00
Reid Spencer
0c5f7931d9
For PR722:
...
Change the check for llvm-gcc from using LLVMGCCDIR to LLVMGCC. This checks
for the actual tool rather than the directory in which the tool resides. In
the case of this bug, it is possible that the directory exists but that the
tools in that directory do not. This fix should avoid the makefile from
erroneously proceeding without the actual tools being available.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27361 91177308-0d34-0410-b5e6-96231b3b80d8
2006-04-02 14:34:26 +00:00
Evan Cheng
7abddda6cc
Optimizing to calloc() to malloc() + memset() can be bad on some platforms.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26732 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-13 21:22:43 +00:00
Chris Lattner
daac729f4d
Make the new and old front-ends more similar: now neither uses __main.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26629 91177308-0d34-0410-b5e6-96231b3b80d8
2006-03-09 06:16:28 +00:00
Chris Lattner
bc3814f5e0
fix make install/uninstall of libcrtend.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25796 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-30 02:03:56 +00:00
Chris Lattner
038c2a1292
Remove out of date comment
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25705 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-27 22:06:50 +00:00
Chris Lattner
3880f1afd6
Remove the only use of FAKE_SOURCES
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25704 91177308-0d34-0410-b5e6-96231b3b80d8
2006-01-27 22:06:23 +00:00
John Criswell
1981c2e8dc
Add the remove() function from the C library.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24498 91177308-0d34-0410-b5e6-96231b3b80d8
2005-11-28 15:49:15 +00:00
Chris Lattner
a1fa8f1d8a
This was never updated for the project makefile changes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23790 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-18 18:50:26 +00:00
Chris Lattner
ed069fcf88
This never got updated to reflect the project makefile changes
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23789 91177308-0d34-0410-b5e6-96231b3b80d8
2005-10-18 18:48:30 +00:00
Misha Brukman
fd93908ae8
Remove trailing whitespace
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21427 91177308-0d34-0410-b5e6-96231b3b80d8
2005-04-21 23:48:37 +00:00
Misha Brukman
b8190e6b30
Fix grammar
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20789 91177308-0d34-0410-b5e6-96231b3b80d8
2005-03-23 21:14:33 +00:00
Chris Lattner
05dd08fb0a
Hrm, who knows what 'uint' is, but it seems to work sometimes? Wierd.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19876 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-28 19:37:35 +00:00
Reid Spencer
41c56c03f7
Turn on LOADABLE_MODULE so that profile.so can be loaded dynamically by
...
the JIT.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19524 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-13 16:53:05 +00:00
Reid Spencer
1492709177
Re-enable libprofile now that llvm-ar is working better.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19523 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-13 16:51:19 +00:00
Chris Lattner
709b274244
Remove dead directories
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19262 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 22:55:16 +00:00
Chris Lattner
488370ca00
This lib is dead
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19261 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 22:53:52 +00:00
Chris Lattner
2500e10263
Remove a bunch of useless empty libraries
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19260 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 22:52:28 +00:00
Chris Lattner
7ff1ca4cd0
This is no longer needed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19259 91177308-0d34-0410-b5e6-96231b3b80d8
2005-01-02 22:50:00 +00:00
Reid Spencer
e676067be5
For PR432:
...
* Variable name change: cferuntime_libdir -> CFERuntimeLibDir
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19096 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-22 05:57:33 +00:00
Chris Lattner
8378294c68
Disable libprofile as llvm-ar bus errors on it, and I don't want to break
...
the nightly testers.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18960 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-15 08:15:48 +00:00
Reid Spencer
b8e7df3937
Use the new BYTECODE_DESTINATION to override the default bytecode install
...
destination for this library so that it goes to $(cferuntime_libdir) rather
than just $(libdir). Normal bytecode libraries should be installed in the
$(libdir), but these ones are "special" because they're part of the the
C/C++ front end.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18882 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-13 07:40:50 +00:00
Reid Spencer
8f4102d33f
Remove useless -L switch now that gccld -link-as-library bug is fixed.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18613 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-08 04:22:47 +00:00
Reid Spencer
8bcd0502a3
Make use of the LLVMGCCStdCXXLibDir variable to link objects
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18548 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-05 19:15:06 +00:00
Reid Spencer
98880b9d0a
Use the FAKE_SOURCES feature for proper distribution of contents
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18506 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-04 22:34:33 +00:00
Reid Spencer
010834654a
Standardize the makefiles with space around = to match the rest of LLVM.
...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18429 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 09:58:09 +00:00
Reid Spencer
8aa9a8ca98
Standardize the format of the runtime libraries makefiles.
...
* Don't have lines longer than 80 cols
* Blank line after the header
* Reduce spaces in var definitions.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18427 91177308-0d34-0410-b5e6-96231b3b80d8
2004-12-02 09:31:40 +00:00