summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorarphaman <arphaman@gmail.com>2013-09-19 17:03:48 +0100
committerarphaman <arphaman@gmail.com>2013-09-19 17:03:48 +0100
commitc141d456b204552c6d6b1a2a74a3b04d9fc790a4 (patch)
treef227451d418633bad6506ec9b44e544a8444fd5a
parentfecfae1085a7bd566632d8afcfe34aa9a24dc423 (diff)
downloadflang-c141d456b204552c6d6b1a2a74a3b04d9fc790a4.tar.gz
added support for -ffree-form and -ffixed-form options
-rw-r--r--test/Parser/fixedForm.f956
-rw-r--r--test/Parser/freeForm.f6
-rw-r--r--tools/driver/Main.cpp15
3 files changed, 25 insertions, 2 deletions
diff --git a/test/Parser/fixedForm.f95 b/test/Parser/fixedForm.f95
new file mode 100644
index 0000000000..c643e7f53e
--- /dev/null
+++ b/test/Parser/fixedForm.f95
@@ -0,0 +1,6 @@
+C RUN: %flang -ffixed-form -fsyntax-only < %s
+
+ program test
+ int eg er ii, i
+ i = i i
+ end program
diff --git a/test/Parser/freeForm.f b/test/Parser/freeForm.f
new file mode 100644
index 0000000000..d6c99572da
--- /dev/null
+++ b/test/Parser/freeForm.f
@@ -0,0 +1,6 @@
+! RUN: %flang -ffree-form -fsyntax-only -verify < %s
+
+program test
+ integer ii, i
+ i = i i ! expected-error {{expected line break or ';' at end of statement}}
+end program
diff --git a/tools/driver/Main.cpp b/tools/driver/Main.cpp
index 39e0547999..744f3441f4 100644
--- a/tools/driver/Main.cpp
+++ b/tools/driver/Main.cpp
@@ -119,6 +119,12 @@ namespace {
cl::opt<bool>
DefaultInt8("fdefault-integer-8", cl::desc("set the kind of the default integer type to 8"), cl::init(false));
+ cl::opt<bool>
+ FreeForm("ffree-form", cl::desc("the source files are using free form layout"), cl::init(false));
+
+ cl::opt<bool>
+ FixedForm("ffixed-form", cl::desc("the source files are using fixed form layout"), cl::init(false));
+
} // end anonymous namespace
@@ -310,8 +316,13 @@ static bool ParseFile(const std::string &Filename,
Opts.DefaultDouble8 = DefaultDouble8;
Opts.DefaultInt8 = DefaultInt8;
Opts.ReturnComments = ReturnComments;
- llvm::StringRef Ext = llvm::sys::path::extension(Filename);
- if(Ext.equals_lower(".f")) {
+ if(!FreeForm && !FixedForm) {
+ llvm::StringRef Ext = llvm::sys::path::extension(Filename);
+ if(Ext.equals_lower(".f")) {
+ Opts.FixedForm = 1;
+ Opts.FreeForm = 0;
+ }
+ } else if(FixedForm) {
Opts.FixedForm = 1;
Opts.FreeForm = 0;
}