summaryrefslogtreecommitdiffstats
path: root/lib/Frontend
diff options
context:
space:
mode:
authored <ed@FreeBSD.org>2009-06-03 13:29:08 +0000
committered <ed@FreeBSD.org>2009-06-03 13:29:08 +0000
commit48ecc7affef226b2bac1e08bdfdc059306a1734c (patch)
tree4075b1f9165f6c8d2b9a7e98b89a1348669f78fe /lib/Frontend
parentf27e5a09a0d815b8a4814152954ff87dadfdefc0 (diff)
downloadFreeBSD-src-48ecc7affef226b2bac1e08bdfdc059306a1734c.zip
FreeBSD-src-48ecc7affef226b2bac1e08bdfdc059306a1734c.tar.gz
Import Clang, at r72770.
Diffstat (limited to 'lib/Frontend')
-rw-r--r--lib/Frontend/Backend.cpp21
-rw-r--r--lib/Frontend/PCHWriter.cpp1
2 files changed, 19 insertions, 3 deletions
diff --git a/lib/Frontend/Backend.cpp b/lib/Frontend/Backend.cpp
index 44aa3a8..697ba94 100644
--- a/lib/Frontend/Backend.cpp
+++ b/lib/Frontend/Backend.cpp
@@ -294,10 +294,16 @@ void BackendConsumer::CreatePasses() {
PM->add(createPruneEHPass()); // Remove dead EH info
PM->add(createFunctionAttrsPass()); // Set readonly/readnone attrs
}
- if (CompileOpts.InlineFunctions)
+ switch (CompileOpts.Inlining) {
+ case CompileOptions::NoInlining:
+ break;
+ case CompileOptions::NormalInlining:
PM->add(createFunctionInliningPass()); // Inline small functions
- else
+ break;
+ case CompileOptions::OnlyAlwaysInlining:
PM->add(createAlwaysInlinerPass()); // Respect always_inline
+ break;
+ }
if (CompileOpts.OptimizationLevel > 2)
PM->add(createArgumentPromotionPass()); // Scalarize uninlined fn args
if (CompileOpts.SimplifyLibCalls)
@@ -341,7 +347,16 @@ void BackendConsumer::CreatePasses() {
if (CompileOpts.OptimizationLevel > 1 && CompileOpts.UnitAtATime)
PM->add(createConstantMergePass()); // Merge dup global constants
} else {
- PM->add(createAlwaysInlinerPass());
+ switch (CompileOpts.Inlining) {
+ case CompileOptions::NoInlining:
+ break;
+ case CompileOptions::NormalInlining:
+ PM->add(createFunctionInliningPass()); // Inline small functions
+ break;
+ case CompileOptions::OnlyAlwaysInlining:
+ PM->add(createAlwaysInlinerPass()); // Respect always_inline
+ break;
+ }
}
}
diff --git a/lib/Frontend/PCHWriter.cpp b/lib/Frontend/PCHWriter.cpp
index 9f9b3b4..80e863b 100644
--- a/lib/Frontend/PCHWriter.cpp
+++ b/lib/Frontend/PCHWriter.cpp
@@ -347,6 +347,7 @@ void PCHWriter::WriteBlockInfoBlock() {
// PCH Top-Level Block.
BLOCK(PCH_BLOCK);
+ RECORD(ORIGINAL_FILE_NAME);
RECORD(TYPE_OFFSET);
RECORD(DECL_OFFSET);
RECORD(LANGUAGE_OPTIONS);
OpenPOWER on IntegriCloud