1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00
Commit Graph

60 Commits

Author SHA1 Message Date
Duncan Sands
bbd03677ee Add a new codegen pass that normalizes dwarf exception handling
code in preparation for code generation.  The main thing it does
is handle the case when eh.exception calls (and, in a future
patch, eh.selector calls) are far away from landing pads.  Right
now in practice you only find eh.exception calls close to landing
pads: either in a landing pad (the common case) or in a landing
pad successor, due to loop passes shifting them about.  However
future exception handling improvements will result in calls far
from landing pads:
(1) Inlining of rewinds.  Consider the following case:
In function @f:
...
  invoke @g to label %normal unwind label %unwinds
...
unwinds:
  %ex = call i8* @llvm.eh.exception()
...

In function @g:
...
  invoke @something to label %continue unwind label %handler
...
handler:
  %ex = call i8* @llvm.eh.exception()
... perform cleanups ...
  "rethrow exception"

Now inline @g into @f.  Currently this is turned into:
In function @f:
...
  invoke @something to label %continue unwind label %handler
...
handler:
  %ex = call i8* @llvm.eh.exception()
... perform cleanups ...
  invoke "rethrow exception" to label %normal unwind label %unwinds
unwinds:
  %ex = call i8* @llvm.eh.exception()
...

However we would like to simplify invoke of "rethrow exception" into
a branch to the %unwinds label.  Then %unwinds is no longer a landing
pad, and the eh.exception call there is then far away from any landing
pads.

(2) Using the unwind instruction for cleanups.
It would be nice to have codegen handle the following case:
  invoke @something to label %continue unwind label %run_cleanups
...
handler:
... perform cleanups ...
  unwind

This requires turning "unwind" into a library call, which
necessarily takes a pointer to the exception as an argument
(this patch also does this unwind lowering).  But that means
you are using eh.exception again far from a landing pad.

(3) Bugpoint simplifications.  When bugpoint is simplifying
exception handling code it often generates eh.exception calls
far from a landing pad, which then causes codegen to assert.
Bugpoint then latches on to this assertion and loses sight
of the original problem.

Note that it is currently rare for this pass to actually do
anything.  And in fact it normally shouldn't do anything at
all given the code coming out of llvm-gcc!  But it does fire
a few times in the testsuite.  As far as I can see this is
almost always due to the LoopStrengthReduce codegen pass
introducing pointless loop preheader blocks which are landing
pads and only contain a branch to another block.  This other
block contains an eh.exception call.  So probably by tweaking
LoopStrengthReduce a bit this can be avoided.

llvm-svn: 72276
2009-05-22 20:36:31 +00:00
Steve Naroff
8c2e02a690 Update VS project files.
llvm-svn: 63017
2009-01-26 18:08:55 +00:00
Steve Naroff
55dbd6e009 Handful of fixes to the VC project files.
llvm-svn: 62807
2009-01-22 23:05:37 +00:00
Steve Naroff
dafb062ef6 Update VC++ projects.
llvm-svn: 58798
2008-11-06 06:24:59 +00:00
Steve Naroff
822787593f Add file to VC++ project.
llvm-svn: 58060
2008-10-24 01:21:47 +00:00
Chris Lattner
fe3f961ac9 update win32 project file, patch provided by OvermindDL1 on llvmdev.
llvm-svn: 57386
2008-10-11 22:14:59 +00:00
Cedric Venet
68f5000738 Update VS projects.
Change some class to struct for coherency.

llvm-svn: 56389
2008-09-20 18:02:18 +00:00
Argyrios Kyrtzidis
54bffd05fd Update VC++ project files.
llvm-svn: 55985
2008-09-09 11:38:37 +00:00
Cedric Venet
d1b22a76d2 Updating VC++ project.
Adding one include file and correct one declaration from class to struct in order to make llvm compile on VC2005.

llvm-svn: 55279
2008-08-24 11:56:40 +00:00
Gordon Henriksen
530bfd5aa7 Update VC++ project.
llvm-svn: 54905
2008-08-17 19:57:31 +00:00
Cedric Venet
e1e9213f95 Make it compile on VC2005:
- update VC projects.
- Add an overload to llvm::Stream for <<, since std::hex and std::dec have type std::ios_base& (*)(std::ios_base&) in VC++. (templating the function don't work, due to ambiguities)
- add ../ on several include in X86/AsmPrinter/

llvm-svn: 54898
2008-08-17 18:24:26 +00:00
Cedric Venet
15817f1acc update VS project.
llvm-svn: 54580
2008-08-09 11:57:39 +00:00
Chris Lattner
c82df0d2e7 This replaces all $(SolutionDir) macros with $(ProjectDir)..\
Patch by Nicolas Capens!

llvm-svn: 53571
2008-07-14 18:46:16 +00:00
Cedric Venet
6f9cf0e8a6 Remove deleted files from VC++ project.
llvm-svn: 53521
2008-07-13 11:12:36 +00:00
Cedric Venet
3d67bd33b2 Add an include file needed for VS.
Add two new file to codegen project (VS).
This unbreak the build for VS.

llvm-svn: 52831
2008-06-27 18:00:09 +00:00
Ted Kremenek
5a3b26f49c Updated VS build system. Patch provided by Cedric Venet:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-June/015446.html

llvm-svn: 52564
2008-06-20 22:19:12 +00:00
Chris Lattner
6d4c9bd816 "Just a small update for the project files for adding a missing preprocessor
definition for VS2005 (without SP1). It suppress the (bogus) M$ deprecated
warning."

Patch by Cédric Venet!

llvm-svn: 52530
2008-06-20 05:35:58 +00:00
Chris Lattner
1baeae61b2 Update VC project files, patch by Cédric Venet!
llvm-svn: 52077
2008-06-07 19:33:54 +00:00
Devang Patel
58e01a3a2e Revert 51067 check-in for now.
llvm-svn: 51155
2008-05-15 18:46:28 +00:00
Chris Lattner
6f30057094 Update the Win32 project files, patch by Razvan Aciu!
llvm-svn: 51067
2008-05-13 20:56:51 +00:00
Chuck Rose III
76d6e4baff Updating win32 VStudio project files with new file references and removing dead references.
llvm-svn: 48849
2008-03-27 00:02:53 +00:00
Chuck Rose III
7dfc302a45 Add files to windows project files. Also include <algorithm> explicitly so that vstudio build works
llvm-svn: 46013
2008-01-15 21:43:17 +00:00
Chuck Rose III
b3986cc208 Adding new files to win32 build
llvm-svn: 45545
2008-01-03 19:53:03 +00:00
Chris Lattner
8afe60d634 Fix PR1888, patch by Wilhansen Li.
llvm-svn: 45501
2008-01-02 21:30:58 +00:00
Chuck Rose III
25ba152734 Add StringPool + new CodeGen files to win32 build
llvm-svn: 44805
2007-12-10 19:31:09 +00:00
Chuck Rose III
5f4fcd1d08 Adding MachineLoopInfo.h,.cpp and MachineLICP.cpp to VStudio build
llvm-svn: 44690
2007-12-08 00:53:13 +00:00
Chuck Rose III
b1944d8afb This change does a couple of things. First it gets the Visual Studio builds working.
I added the lexing files to the VStudio projects and removed the .l files from the 
VStudio projects.  There was a problem with use of strtoll in TGLexer.cpp and Chris
suggested switching to strtol, so that's included here.

Additionally, this checkin adds minimal x64 builds to the VStudio builds.  Build issues
related to x64 in the windows specific files for DynamicLibrary.inc and Singals.inc
are worked around, but not ultimately solved.  Binaries used to be stored in

...\win32\{Debug|Release}

but are now kept in

...\win32\bin\{win32|x64}\{Debug|Release}

intermediate files will continue to be stored in the individual project directories under 
win32.  

Some names will likely change in the future to reflect that the vstudio projects
are no longer 32-bit only, but I wanted to get things up and running today so kept away
from bigger restructuring.

llvm-svn: 44260
2007-11-21 00:37:56 +00:00
Hartmut Kaiser
24c8aec468 Updated VC++ build system
llvm-svn: 44004
2007-11-12 01:24:50 +00:00
Chuck Rose III
7ee95091de Adding some recently added files to the VStudio projects
llvm-svn: 43919
2007-11-09 00:48:27 +00:00
Hartmut Kaiser
a1075f624e Updated VC++ build system
llvm-svn: 43837
2007-11-07 19:34:09 +00:00
Hartmut Kaiser
4e79687c4c Updated VC++ build system
llvm-svn: 43631
2007-11-02 01:44:08 +00:00
Hartmut Kaiser
5ff0631910 Updated VC++ build system
llvm-svn: 43479
2007-10-29 21:56:15 +00:00
Hartmut Kaiser
9c2a4a541b Updated VC++ build system.
llvm-svn: 42835
2007-10-10 19:50:09 +00:00
Chuck Rose III
626679379c Updates to the VStudio project files:
1. Switch from VStudio 2k3 to VStudio 2k5

2. All pdb files now will be placed as $(OutputDir)/$(ProjectName).pdb.  This puts them alongside the 
binaries with the same base name as the binary.  If you need to copy the results of your llvm build 
into another project's tree, this will simplify that process.

3. Recent files added to the tree were added to the proejects within the VStudio project

4. Project build dependency order fixed so that the build can take place in one pass.  A generated
file was not being built at the correct time, causing a build error in about half the projects until
the build was run a second time.

Note you will need flex and bison installed an in your path in order to build properly.

llvm-svn: 40557
2007-07-27 18:20:11 +00:00
Jeff Cohen
98c99a3a02 Unbreak VC++ build.
llvm-svn: 34917
2007-03-05 00:00:42 +00:00
Jeff Cohen
c4ab4ae3e1 Unbreak VC++ build.
llvm-svn: 33242
2007-01-15 20:27:18 +00:00
Jeff Cohen
e1003da1a2 Unbreak VC++ build.
llvm-svn: 31464
2006-11-05 19:31:28 +00:00
Jeff Cohen
657c456ca6 Keep Visual Studio happy.
llvm-svn: 28067
2006-05-03 00:28:50 +00:00
Jeff Cohen
6ae5da42b9 Keep Visual Studio informed.
llvm-svn: 27951
2006-04-23 04:37:08 +00:00
Jeff Cohen
a05322ff6d Get Visual Studio happy again.
llvm-svn: 27031
2006-03-24 02:18:52 +00:00
Jeff Cohen
adacd55e5d Add _CRT_SECURE_NO_DEPRECATE preprocessor symbol to make VS2005 happy.
llvm-svn: 25801
2006-01-30 04:07:08 +00:00
Jeff Cohen
5de47de7ab Add new files to Visual Studio.
llvm-svn: 25574
2006-01-24 04:40:54 +00:00
Jeff Cohen
536e814c7c Visual Studio still has issues at being left out.
llvm-svn: 25507
2006-01-22 20:37:25 +00:00
Jeff Cohen
5cc9ac7bc7 Teach Visual Studio about new file.
llvm-svn: 25097
2006-01-04 17:19:48 +00:00
Jeff Cohen
ac0286cbe6 Add new files to Visual Studio.
llvm-svn: 24929
2005-12-22 01:50:11 +00:00
Jeff Cohen
f9fecfca82 Turn on string pooling for smaller binaries.
llvm-svn: 24749
2005-12-17 00:14:47 +00:00
Jeff Cohen
ee7352b466 Keep Visual Studio up to date.
llvm-svn: 23964
2005-10-24 15:21:58 +00:00
Jeff Cohen
a5c4ff5a96 Fix VC++ build errors.
llvm-svn: 23431
2005-09-25 19:04:43 +00:00
Jeff Cohen
ce2b74a2b5 Fix more Visual Studio build problems.
llvm-svn: 23308
2005-09-10 02:33:17 +00:00
Jeff Cohen
d8982d4282 Add ElfWriter stuff to Visual Studio
llvm-svn: 22304
2005-06-28 02:43:03 +00:00