Commit graph

88 commits

Author SHA1 Message Date
Martin
60d676e2a1 Drop support for LLVM < 3.5
This allows to clean up the code a little.
2015-10-30 22:24:05 +01:00
kai
9d3dd1f609 Add true value of "isOptimized" to Dwarf debug info. 2015-05-31 21:32:12 +02:00
kai
4db0123bb7 Implement FlagParser using llvm:🆑:generic_parser_base.
This approach is easier and requires less code. With some template foo
the BoolOrDefaultAdapter is not required.

This solutions applies to previous LLVM versions, too.
2015-04-25 21:47:30 +02:00
kai
66bf03b96b LLVM 3.7: DataLayoutPass is gone.
DataLayout is now non-optional at the module. Therefore
there is no need for a separate DataLayoutPass.
2015-03-06 17:13:00 +01:00
Kevin Brogan
d8f4a2758a Trigger a travis rebuild 2015-02-17 02:09:14 -08:00
unknown
e56ef8b86e copy paste error fix 2015-02-16 15:27:19 -08:00
unknown
674b614807 Update of PassManager interface to match the corresponding deprecation in LLVM's trunk for 3.7 2015-02-16 15:11:42 -08:00
kai
197c32e118 LLVM 3.7: Use new TargetMachine.getTargetIRAnalysis() analysis pass.
This replaces the TargetMachine.addAnalysisPasses() method.
2015-02-04 07:46:14 +01:00
kai
e3e10a0a86 LLVM 3.7: Add changes for TargetLibraryInfo and DataLayout.
The TargetLibraryInfo class is now a wrapper. The real implementation
is TargetLibraryInfoImpl.

The TargetMachine can be asked for the DataLayout (like in all other
supported versions except 3.6)
2015-01-30 08:08:14 +01:00
Kai Nacke
18118d724a Add support for LLVM 3.7
The branch for LLVM 3.7 was created this week.
LLVM trunk is now 3.7.
2015-01-18 21:45:13 +01:00
kai
bef163f559 Fix latest LLVM 3.6 changes 2014-09-19 06:49:34 +02:00
kai
f8a53ab3dc Merge branch 'merge-2.064' into merge-2.065
Conflicts:
	runtime/druntime
2014-03-12 18:27:43 +01:00
kai
6442d79b8b Finally enable the vectorizer (at least in LLVM 3.5).
It still requires verification if this works with LLVM 3.4. Problem was the changed
initialisation of passes in LLVM 3.4/3.5.
2014-03-12 17:12:25 +01:00
kai
9156601d76 Add code for the changed DataLayoutPass in LLVM 3.5 2014-03-10 06:54:59 +01:00
kai
2f2fa92df3 Fix includes for LLVM 3.5 2014-03-07 06:40:39 +01:00
Kai Nacke
fe39da53e3 Merge of 2.065.0-b3.
The new visitor class is used for IR generation. This removes some modifications from DMD source.
2014-02-10 08:47:25 +01:00
kai
cd9e468201 Enable command line option -disable-simplify-libcalls for LLVM 3.4+. 2014-02-04 18:07:46 +01:00
kai
aaaca39a4e Enable vectorizer with LLVM 3.4+.
The missing initialization code disables the vectorizer.
2014-02-04 07:18:32 +01:00
Kai Nacke
ea9c996dcd Fix new signature of verifyModule() in LLVM 3.5. 2014-01-19 12:36:42 +01:00
Kai Nacke
c14e065138 Fix the LLVM 3.5 build.
Some classes were moved into IR folder.
2014-01-13 17:08:43 +01:00
kai
e6529cfd3d [experimental] Add sanitizer options to LDC.
Add some of the sanitizer passes to LDC. This is not complete (linking must be
done using clang and the right `-fsanitize=` option) and may not be useful at
all.

If it proves to be usefull then a lot of other options (e.g. blacklist) must be
added.
2013-11-05 13:03:52 +01:00
kai
609b362410 Fix the LLVM 3.4 build.
The disable-simplify-libcalls is gone.
2013-06-21 23:44:42 +02:00
David Nadlinger
43e27d0dd1 Remove USE_METADATA.
It has been on by default for quite some time now.
2013-06-07 02:48:53 +02:00
David Nadlinger
c02b38fe9a Removed LLVM 3.0 compatibility code.
There might be still some pieces left here and there, and
there is certainly code that could be rewritten in a nicer
way with the 3.0 requirement out of the picture.
2013-05-31 20:48:38 +02:00
David Nadlinger
bb5b60e591 Make '-O' equivalent to '-O3'.
I have seen it used several times in benchmarks comparing it
to 'gdc -O3' and 'dmd -O -inline' now, so people apparently
expect it to yield the highest available optimization level.
2013-03-17 02:09:54 +01:00
David Nadlinger
0a96aea868 Sort includes according to style guidelines:
1. Main include corresponding to .cpp file, if any.
 2. DMD and LDC includes.
 3. LLVM includes.
 4. System includes.

Also updated a few include guards to match the default format.
2013-02-07 21:20:55 +01:00
kai
a11459bc31 "The Great Renaming" continues.
More changes to match the renamed files of LLVM 3.3.
2013-01-06 17:17:30 +01:00
kai
272e7b7a55 Follow "The Great Renaming" in LLVM 3.3
This time VMCore was renamed to IR. Several top level include
files were moved to new subfolder IR.
2013-01-03 08:52:23 +01:00
David Nadlinger
7be9c5c5c7 dgc2stack: LLVM 3.2 compatibility. 2012-12-20 23:52:25 +01:00
David Nadlinger
9458911839 Added LLVM-style license headers to all our files. 2012-12-16 17:19:14 +01:00
David Nadlinger
2d02270434 Re-enabled codegen optimization on LLVM 3.2.
The bug (PR14376) has been fixed in both master and the release branch.
2012-11-24 14:07:17 +01:00
kai
45848d19fc Remove unused include. This fixes yet another MSVC-related compile problem.
Root cause is the `root.h` defines `strtof` which is used in `llvm/Target/TargetLibraryInfo.h` as an enumeration identifier.
2012-11-18 17:52:10 +01:00
David Nadlinger
c558f9caab Added -disable-simplify-libcalls.
-disable-simplify-drtcalls was only intended to disable our
custom druntime call simplication pass for debugging purposes.

The new flag controls C runtime library calls optimizations as
performed by the LLVM pass, just as the corresponding LLVM tool
flags do.
2012-11-06 23:53:59 +01:00
David Nadlinger
03ef134aad StripExternals only makes sense with GlobalDCE for cleanup afterwards. 2012-11-06 23:48:19 +01:00
David Nadlinger
fbd62f0532 It makes no sense to not inline alwaysinline functions. 2012-11-06 23:47:12 +01:00
David Nadlinger
0647cfb50c Re-enable inlining by default for -O2 and above.
This fixes a bug introduced in 2f78dc686.

Thanks to Jernej (jerro) for the fix!
2012-11-06 19:40:18 +01:00
David Nadlinger
f95371aeb5 Amend -verify-each description to PassManagerBuilder changes.
We can't verify after each pass anymore with PassManagerBuilder, but
-verify-each is a hidden flag mainly useful for debugging our own
passes anyway.
2012-11-04 00:56:36 +01:00
David Nadlinger
dbe5e97d85 Clean up optimizer command line switch descriptions. 2012-11-04 00:56:36 +01:00
David Nadlinger
2f78dc686d Use llvm::PassManagerBuilder for optimization scheduling.
This commit is based on Kai's pull request #157.
2012-11-04 00:56:36 +01:00
kai
a7c7b514c0 Add changes for LLVM 3.2
- The Attributes class was changed again
- TargetData was renamed to DataLayout

Compiles again with LLVm 3.0, 3.1 and trunk(3.2).
2012-10-13 18:54:42 +02:00
kai
ebf5d8b92e Add missing return statement.
This fixes #159.
2012-09-11 18:05:13 +02:00
kai
0a53cb2ac0 Add -vectorize to the optimizer. This is available starting with LLVM 3.1. 2012-09-08 13:36:31 +02:00
kai
e6a07ffdfe Several changes to optimizer related code.
- New functions codeGenOptLevel() and verifyModule() to remove code duplication
- Hidden option no-verify renamed to disable-verify and moved to optimizer (like opt tool)
- Removed global.params.noVerify
2012-08-16 23:26:52 +02:00
kai
34d595de26 Enable FunctionAttrsPass again.
This pass requires an alias analysis, which is also added.
2012-08-11 19:17:18 +02:00
Alexey Prokhin
8c5cf40bb5 Fixed compilation of ldc1 2012-04-22 12:26:25 +04:00
Alexey Prokhin
bca73ec8b9 Merged dmd 2.059beta 2012-04-05 15:30:00 +04:00
Alexey Prokhin
629f13929e WIP: port to llvm 3.0 2011-10-25 15:43:39 +04:00
David Nadlinger
3e28eecfea Quick workaround for a LLVM 2.9 crash with higher optimization levels.
createFunctionAttrsPass() is a LLVM pass and the crash is deep in LLVM code, maybe something is wrong with the pass manager state.
2011-04-20 20:44:49 +02:00
Kelly Wilson
72ea043124 Recommit klickverbot's patch for LLVM-2.9. 2011-04-20 09:28:37 -06:00
Kelly Wilson
7c81278b9c Backed out changeset 5253bfbb3890 2011-04-20 00:28:23 -06:00