aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorAbhina Sree <Abhina.Sreeskantharajan@ibm.com>2024-08-08 08:35:22 -0400
committerGitHub <noreply@github.com>2024-08-08 08:35:22 -0400
commit135fecd4441068667ef23f56098befd0c42f89f2 (patch)
treea1d7265fc12e84bab39a8e46bfa7dbc71fc3d172 /clang/lib/Frontend/CompilerInvocation.cpp
parent7e7a439705f4926a798785579aeb9bfff07049c7 (diff)
downloadllvm-135fecd4441068667ef23f56098befd0c42f89f2.zip
llvm-135fecd4441068667ef23f56098befd0c42f89f2.tar.gz
llvm-135fecd4441068667ef23f56098befd0c42f89f2.tar.bz2
[SystemZ][z/OS] __ptr32 support for z/OS (#101696)
Enabling __ptr32 keyword to support in Clang for z/OS. It is represented by addrspace(1) in LLVM IR. Unlike existing implementation, __ptr32 is not mangled into symbol names for z/OS.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r--clang/lib/Frontend/CompilerInvocation.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 225bd641..4dbb13f 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -3650,6 +3650,11 @@ void CompilerInvocationBase::GenerateLangArgs(const LangOptions &Opts,
GenerateArg(Consumer, OPT_ftrigraphs);
}
+ if (T.isOSzOS() && !Opts.ZOSExt)
+ GenerateArg(Consumer, OPT_fno_zos_extensions);
+ else if (Opts.ZOSExt)
+ GenerateArg(Consumer, OPT_fzos_extensions);
+
if (Opts.Blocks && !(Opts.OpenCL && Opts.OpenCLVersion == 200))
GenerateArg(Consumer, OPT_fblocks);
@@ -4051,6 +4056,9 @@ bool CompilerInvocation::ParseLangArgs(LangOptions &Opts, ArgList &Args,
Opts.Trigraphs =
Args.hasFlag(OPT_ftrigraphs, OPT_fno_trigraphs, Opts.Trigraphs);
+ Opts.ZOSExt =
+ Args.hasFlag(OPT_fzos_extensions, OPT_fno_zos_extensions, T.isOSzOS());
+
Opts.Blocks = Args.hasArg(OPT_fblocks) || (Opts.OpenCL
&& Opts.OpenCLVersion == 200);