Commit Graph

60 Commits

Author SHA1 Message Date
Duncan Sands d6fb6501e3 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 0113928f94 Update VS project files.
llvm-svn: 63017
2009-01-26 18:08:55 +00:00
Steve Naroff 0681693277 Handful of fixes to the VC project files.
llvm-svn: 62807
2009-01-22 23:05:37 +00:00
Steve Naroff ef625263ef Update VC++ projects.
llvm-svn: 58798
2008-11-06 06:24:59 +00:00
Steve Naroff 886b5193a7 Add file to VC++ project.
llvm-svn: 58060
2008-10-24 01:21:47 +00:00
Chris Lattner f94e1bc53a update win32 project file, patch provided by OvermindDL1 on llvmdev.
llvm-svn: 57386
2008-10-11 22:14:59 +00:00
Cedric Venet b0f876d55d Update VS projects.
Change some class to struct for coherency.

llvm-svn: 56389
2008-09-20 18:02:18 +00:00
Argyrios Kyrtzidis 50ba6cc334 Update VC++ project files.
llvm-svn: 55985
2008-09-09 11:38:37 +00:00
Cedric Venet 0f7b5666a2 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 f37daa50da Update VC++ project.
llvm-svn: 54905
2008-08-17 19:57:31 +00:00
Cedric Venet 954553c4ce 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 41dc330d2f update VS project.
llvm-svn: 54580
2008-08-09 11:57:39 +00:00
Chris Lattner 1359c1d773 This replaces all $(SolutionDir) macros with $(ProjectDir)..\
Patch by Nicolas Capens!

llvm-svn: 53571
2008-07-14 18:46:16 +00:00
Cedric Venet bea0963a5c Remove deleted files from VC++ project.
llvm-svn: 53521
2008-07-13 11:12:36 +00:00
Cedric Venet 69cb7be3b1 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 4c32155a0f 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 2616a7e0f7 "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 4595a72c79 Update VC project files, patch by Cédric Venet!
llvm-svn: 52077
2008-06-07 19:33:54 +00:00
Devang Patel a403c15d40 Revert 51067 check-in for now.
llvm-svn: 51155
2008-05-15 18:46:28 +00:00
Chris Lattner bb3aef4ee3 Update the Win32 project files, patch by Razvan Aciu!
llvm-svn: 51067
2008-05-13 20:56:51 +00:00
Chuck Rose III f1dcb00266 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 fe2714fab3 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 7f2e31a36a Adding new files to win32 build
llvm-svn: 45545
2008-01-03 19:53:03 +00:00
Chris Lattner 9a6774064b Fix PR1888, patch by Wilhansen Li.
llvm-svn: 45501
2008-01-02 21:30:58 +00:00
Chuck Rose III 900a13e82c Add StringPool + new CodeGen files to win32 build
llvm-svn: 44805
2007-12-10 19:31:09 +00:00
Chuck Rose III c214d1605f Adding MachineLoopInfo.h,.cpp and MachineLICP.cpp to VStudio build
llvm-svn: 44690
2007-12-08 00:53:13 +00:00
Chuck Rose III 07b57d2626 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 28af9f7d00 Updated VC++ build system
llvm-svn: 44004
2007-11-12 01:24:50 +00:00
Chuck Rose III 0e7937654c Adding some recently added files to the VStudio projects
llvm-svn: 43919
2007-11-09 00:48:27 +00:00
Hartmut Kaiser b1d7cb2938 Updated VC++ build system
llvm-svn: 43837
2007-11-07 19:34:09 +00:00
Hartmut Kaiser 7d888fa180 Updated VC++ build system
llvm-svn: 43631
2007-11-02 01:44:08 +00:00
Hartmut Kaiser f557d896cb Updated VC++ build system
llvm-svn: 43479
2007-10-29 21:56:15 +00:00
Hartmut Kaiser 04bd66bd43 Updated VC++ build system.
llvm-svn: 42835
2007-10-10 19:50:09 +00:00
Chuck Rose III 8e9869716c 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 b622c11f77 Unbreak VC++ build.
llvm-svn: 34917
2007-03-05 00:00:42 +00:00
Jeff Cohen 9431075206 Unbreak VC++ build.
llvm-svn: 33242
2007-01-15 20:27:18 +00:00
Jeff Cohen 7d6f3db3e2 Unbreak VC++ build.
llvm-svn: 31464
2006-11-05 19:31:28 +00:00
Jeff Cohen 488a40028e Keep Visual Studio happy.
llvm-svn: 28067
2006-05-03 00:28:50 +00:00
Jeff Cohen 7a2a972ba9 Keep Visual Studio informed.
llvm-svn: 27951
2006-04-23 04:37:08 +00:00
Jeff Cohen f80d2289e9 Get Visual Studio happy again.
llvm-svn: 27031
2006-03-24 02:18:52 +00:00
Jeff Cohen 1d920b8e50 Add _CRT_SECURE_NO_DEPRECATE preprocessor symbol to make VS2005 happy.
llvm-svn: 25801
2006-01-30 04:07:08 +00:00
Jeff Cohen cfdaf617a5 Add new files to Visual Studio.
llvm-svn: 25574
2006-01-24 04:40:54 +00:00
Jeff Cohen 5d129e7389 Visual Studio still has issues at being left out.
llvm-svn: 25507
2006-01-22 20:37:25 +00:00
Jeff Cohen 37c56fc58f Teach Visual Studio about new file.
llvm-svn: 25097
2006-01-04 17:19:48 +00:00
Jeff Cohen 23d7a0b641 Add new files to Visual Studio.
llvm-svn: 24929
2005-12-22 01:50:11 +00:00
Jeff Cohen 9504149c1b Turn on string pooling for smaller binaries.
llvm-svn: 24749
2005-12-17 00:14:47 +00:00
Jeff Cohen 2448381eb6 Keep Visual Studio up to date.
llvm-svn: 23964
2005-10-24 15:21:58 +00:00
Jeff Cohen 23b1d28e69 Fix VC++ build errors.
llvm-svn: 23431
2005-09-25 19:04:43 +00:00
Jeff Cohen e19ca3ab0c Fix more Visual Studio build problems.
llvm-svn: 23308
2005-09-10 02:33:17 +00:00
Jeff Cohen 8d9d9d7af0 Add ElfWriter stuff to Visual Studio
llvm-svn: 22304
2005-06-28 02:43:03 +00:00