Commit Graph

221 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
36c3f0b6d8 Update hand-crafted VC++ build.
- Add PACKAGE_STRING definition to Windows config.h.

llvm-svn: 63539
2009-02-02 19:22:02 +00:00
Duncan Sands
3350448d05 Fix PR3415 (infinite loop in EscapeAnalysis) by
deleting the escape analysis pass.

llvm-svn: 63197
2009-01-28 11:33:59 +00:00
Steve Naroff
14a9217ee0 More updates to VC proj...
llvm-svn: 63050
2009-01-26 22:03:42 +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
Duncan Sands
36db5853cb Rename AddReadAttrs to FunctionAttrs, and teach it how
to work out (in a very simplistic way) which function
arguments (pointer arguments only) are only dereferenced
and so do not escape.  Mark such arguments 'nocapture'.

llvm-svn: 61525
2008-12-31 16:14:43 +00:00
Steve Naroff
f6cc95eff5 Add files to VC++ projects.
llvm-svn: 59262
2008-11-13 21:18:54 +00:00
Steve Naroff
db3a831e70 Update VC++ project file.
llvm-svn: 58997
2008-11-10 20:03:21 +00:00
Ted Kremenek
efa4d91c37 remove unavailable clang project
llvm-svn: 58879
2008-11-08 01:02:44 +00:00
Steve Naroff
dafb062ef6 Update VC++ projects.
llvm-svn: 58798
2008-11-06 06:24:59 +00:00
Steve Naroff
7d317e0593 Add post-build event for clangDriver (to copy clang.exe into "dstroot").
llvm-svn: 58783
2008-11-06 00:11:31 +00:00
Steve Naroff
c20185c7ef Add a file to VC++ proj.
llvm-svn: 58089
2008-10-24 10:38:57 +00:00
Steve Naroff
822787593f Add file to VC++ project.
llvm-svn: 58060
2008-10-24 01:21:47 +00:00
Steve Naroff
ea17111230 Changes to make the Windows build work...
- Add a file to the VC++ project.
- Make sure the clang driver links against the Transforms library.
- Incorporate changes from patch by Dan Gohman.

llvm-svn: 58048
2008-10-23 23:28:23 +00:00
Argyrios Kyrtzidis
f1de51fd9f Unbreak LLVM on the MSVC compiler:
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull

llvm-svn: 57970
2008-10-22 09:54:13 +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
Steve Naroff
8b4586b1c4 Update VC++ project file
llvm-svn: 57091
2008-10-05 01:04:07 +00:00
Steve Naroff
4f09e42390 Add Attributes.cpp to the vcproj.
llvm-svn: 56561
2008-09-24 17:23:28 +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
Duncan Sands
b2b5ddfaf6 Remove the MarkModRef pass (use AddReadAttrs instead).
Unfortunately this means removing one regression test
of GlobalsModRef because I couldn't work out how to
perform it without MarkModRef.

llvm-svn: 56342
2008-09-19 08:23:44 +00:00
Argyrios Kyrtzidis
54bffd05fd Update VC++ project files.
llvm-svn: 55985
2008-09-09 11:38:37 +00:00
Cedric Venet
6c99b53fda Use additionnal include directory instead of ../ in #include.
Suggested by aKor.

llvm-svn: 55282
2008-08-24 12:30:46 +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
Ted Kremenek
58049cc4a9 Add libDriver.vcproj to solution file.
llvm-svn: 54424
2008-08-06 20:57:07 +00:00
Cedric Venet
c7ec8ee730 Updated VC++ projects
llvm-svn: 53809
2008-07-20 12:04:49 +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
Chuck Rose III
8e0b9566a3 VStudio x64 build fixes. Looks like the x64 projects got out of date and this brings them up to code. I've built the project with these new vcproj files for win32 and x64 both debug and release.
llvm-svn: 53047
2008-07-02 21:02:51 +00:00
Chuck Rose III
2b35617259 Adding some missing files to VStudio project files. Switching to use generated llvmAsmParser.cpp/.h
llvm-svn: 52935
2008-06-30 22:37:57 +00:00
Cedric Venet
4036419ff8 Add loopVR files.
Users of VS need to manually force rebuild the X86 projet to use the last version of tablegen.

llvm-svn: 52894
2008-06-30 10:31:41 +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
40428304c5 Update VS project files. The clang executable now depends on the LLVM Analysis library.
llvm-svn: 52789
2008-06-26 17:53:12 +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
Steve Naroff
e79dd8c21a update vc configure project for renaming of
hash_map/hash_set/iterator to have a .h suffix.

llvm-svn: 51867
2008-06-02 16:37:36 +00:00
Chris Lattner
bfab90ca12 Fix win32 when no bison is around, PR2331, patch by 'hume'.
llvm-svn: 51539
2008-05-24 05:11:48 +00:00
Chris Lattner
02cace1d88 "The two generated files in the AsmParser.vcproj are pointing to the
wrong directory, this is the patch to fix it (also attached)."

Patch by 'OvermindDL1'

llvm-svn: 51323
2008-05-20 17:27:57 +00:00
Ted Kremenek
ec40faf7c5 Update VS project files (VS 2005) so that VS builds with TOT LLVM/clang.
Patch by Dmitri Makarov!

llvm-svn: 51237
2008-05-19 02:49:39 +00:00
Steve Naroff
1a31342bae Reverting r51100...I need to use VC++ 2005.
llvm-svn: 51159
2008-05-15 20:09:48 +00:00
Devang Patel
58e01a3a2e Revert 51067 check-in for now.
llvm-svn: 51155
2008-05-15 18:46:28 +00:00
Argyrios Kyrtzidis
6f06fcf8ef Upgrading clang VC++ solution to VC++ express 2008.
llvm-svn: 51100
2008-05-14 09:58:45 +00:00
Argyrios Kyrtzidis
853c42ba5d Adding missing files to Transforms and VMCore VC++ projects.
llvm-svn: 51098
2008-05-14 09:39:32 +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
Steve Naroff
30440f5a20 Update a couple VC++ project files.
llvm-svn: 50780
2008-05-06 23:14:34 +00:00
Chuck Rose III
fbfb612c4e VisualStudio project files updated. #include <algorithm> added to make VisualStudio happy. Also had to undefine setjmp because of #include <csetjmp> turning setjmp into _setjmp in VisualStudio.
llvm-svn: 49743
2008-04-15 21:27:11 +00:00