Commit Graph

221 Commits

Author SHA1 Message Date
Duncan Sands
b0f1e1780c 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@72276 91177308-0d34-0410-b5e6-96231b3b80d8
2009-05-22 20:36:31 +00:00
Steve Naroff
34ca888cd6 Update hand-crafted VC++ build.
- Add PACKAGE_STRING definition to Windows config.h.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63539 91177308-0d34-0410-b5e6-96231b3b80d8
2009-02-02 19:22:02 +00:00
Duncan Sands
e02f724880 Fix PR3415 (infinite loop in EscapeAnalysis) by
deleting the escape analysis pass.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63197 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-28 11:33:59 +00:00
Steve Naroff
609eef258f More updates to VC proj...
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63050 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-26 22:03:42 +00:00
Steve Naroff
544526885b Update VS project files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@63017 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-26 18:08:55 +00:00
Steve Naroff
d94aa403b7 Handful of fixes to the VC project files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62807 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-22 23:05:37 +00:00
Duncan Sands
9e89ba31f1 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'.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61525 91177308-0d34-0410-b5e6-96231b3b80d8
2008-12-31 16:14:43 +00:00
Steve Naroff
eee0852878 Add files to VC++ projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@59262 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-13 21:18:54 +00:00
Steve Naroff
cf1f23f6e3 Update VC++ project file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58997 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-10 20:03:21 +00:00
Ted Kremenek
2869337b51 remove unavailable clang project
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58879 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-08 01:02:44 +00:00
Steve Naroff
e11eb620ef Update VC++ projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58798 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-06 06:24:59 +00:00
Steve Naroff
3716450345 Add post-build event for clangDriver (to copy clang.exe into "dstroot").
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58783 91177308-0d34-0410-b5e6-96231b3b80d8
2008-11-06 00:11:31 +00:00
Steve Naroff
1125406a30 Add a file to VC++ proj.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58089 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-24 10:38:57 +00:00
Steve Naroff
b1e5edc27e Add file to VC++ project.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58060 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-24 01:21:47 +00:00
Steve Naroff
93fbe75a94 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@58048 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-23 23:28:23 +00:00
Argyrios Kyrtzidis
bb9d18c7d5 Unbreak LLVM on the MSVC compiler:
-Bring in int64_t for TableGen/Record.h and TableGen/TGLexer.h
-Define strtoull

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57970 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-22 09:54:13 +00:00
Chris Lattner
1b8f4bb4a1 update win32 project file, patch provided by OvermindDL1 on llvmdev.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57386 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-11 22:14:59 +00:00
Steve Naroff
8256d75f84 Update VC++ project file
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@57091 91177308-0d34-0410-b5e6-96231b3b80d8
2008-10-05 01:04:07 +00:00
Steve Naroff
7c3a913944 Add Attributes.cpp to the vcproj.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56561 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-24 17:23:28 +00:00
Cedric Venet
8e4018e2de Update VS projects.
Change some class to struct for coherency.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56389 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-20 18:02:18 +00:00
Duncan Sands
acdb2eeb45 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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56342 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-19 08:23:44 +00:00
Argyrios Kyrtzidis
076055ccd3 Update VC++ project files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55985 91177308-0d34-0410-b5e6-96231b3b80d8
2008-09-09 11:38:37 +00:00
Cedric Venet
d85f51abd4 Use additionnal include directory instead of ../ in #include.
Suggested by aKor.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55282 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-24 12:30:46 +00:00
Cedric Venet
a3f343f4cd Updating VC++ project.
Adding one include file and correct one declaration from class to struct in order to make llvm compile on VC2005.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55279 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-24 11:56:40 +00:00
Gordon Henriksen
b20d685c6f Update VC++ project.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54905 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17 19:57:31 +00:00
Cedric Venet
94fb5f2a70 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/

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54898 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-17 18:24:26 +00:00
Cedric Venet
1c5afa3767 update VS project.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54580 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-09 11:57:39 +00:00
Ted Kremenek
35a8a03165 Add libDriver.vcproj to solution file.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@54424 91177308-0d34-0410-b5e6-96231b3b80d8
2008-08-06 20:57:07 +00:00
Cedric Venet
b8c44d3aac Updated VC++ projects
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53809 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-20 12:04:49 +00:00
Chris Lattner
d28516e3b1 This replaces all $(SolutionDir) macros with $(ProjectDir)..\
Patch by Nicolas Capens!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53571 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-14 18:46:16 +00:00
Cedric Venet
9322fe02dd Remove deleted files from VC++ project.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53521 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-13 11:12:36 +00:00
Chuck Rose III
d3f506a53a 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53047 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-02 21:02:51 +00:00
Chuck Rose III
c2bf1870a7 Adding some missing files to VStudio project files. Switching to use generated llvmAsmParser.cpp/.h
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52935 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 22:37:57 +00:00
Cedric Venet
fe4f3d6a90 Add loopVR files.
Users of VS need to manually force rebuild the X86 projet to use the last version of tablegen.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52894 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-30 10:31:41 +00:00
Cedric Venet
5e950627f9 Add an include file needed for VS.
Add two new file to codegen project (VS).
This unbreak the build for VS.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52831 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-27 18:00:09 +00:00
Ted Kremenek
8e7de8fc58 Update VS project files. The clang executable now depends on the LLVM Analysis library.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52789 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-26 17:53:12 +00:00
Ted Kremenek
6fa1c051dc Updated VS build system. Patch provided by Cedric Venet:
http://lists.cs.uiuc.edu/pipermail/llvmdev/2008-June/015446.html



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52564 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-20 22:19:12 +00:00
Chris Lattner
f6af087cb9 "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!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52530 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-20 05:35:58 +00:00
Chris Lattner
e562a2f499 Update VC project files, patch by Cédric Venet!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52077 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-07 19:33:54 +00:00
Steve Naroff
370a25c16a update vc configure project for renaming of
hash_map/hash_set/iterator to have a .h suffix.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51867 91177308-0d34-0410-b5e6-96231b3b80d8
2008-06-02 16:37:36 +00:00
Chris Lattner
cad93bd1c3 Fix win32 when no bison is around, PR2331, patch by 'hume'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51539 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-24 05:11:48 +00:00
Chris Lattner
71472ba025 "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'



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51323 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-20 17:27:57 +00:00
Ted Kremenek
83296ca341 Update VS project files (VS 2005) so that VS builds with TOT LLVM/clang.
Patch by Dmitri Makarov!


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51237 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-19 02:49:39 +00:00
Steve Naroff
20a3ca6155 Reverting r51100...I need to use VC++ 2005.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51159 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-15 20:09:48 +00:00
Devang Patel
0c87f2d824 Revert 51067 check-in for now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51155 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-15 18:46:28 +00:00
Argyrios Kyrtzidis
4663c942bc Upgrading clang VC++ solution to VC++ express 2008.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51100 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-14 09:58:45 +00:00
Argyrios Kyrtzidis
ca8f32599b Adding missing files to Transforms and VMCore VC++ projects.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51098 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-14 09:39:32 +00:00
Chris Lattner
9b43ac042e Update the Win32 project files, patch by Razvan Aciu!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@51067 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-13 20:56:51 +00:00
Steve Naroff
bec41b8db3 Update a couple VC++ project files.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50780 91177308-0d34-0410-b5e6-96231b3b80d8
2008-05-06 23:14:34 +00:00
Chuck Rose III
cc51c31953 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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@49743 91177308-0d34-0410-b5e6-96231b3b80d8
2008-04-15 21:27:11 +00:00