r270838 - [OPENMP] Add option '-fopenmp-version=[31|40|45]' allowing choosing

Daniel Sanders via cfe-commits cfe-commits at lists.llvm.org
Fri May 27 01:46:02 PDT 2016


Thanks. r270962 seems to have fixed the buildbot.

> -----Original Message-----
> From: Daniel Sanders
> Sent: 26 May 2016 16:24
> To: 'Alexey Bataev'; cfe-commits at lists.llvm.org
> Subject: RE: r270838 - [OPENMP] Add option '-fopenmp-version=[31|40|45]'
> allowing choosing
> 
> Hi,
> 
> I think this commit may have caused the failure in
> http://lab.llvm.org:8011/builders/clang-cmake-mips/builds/13743. Could you
> check? Buildbot will have supressed the usual email because the previous
> build failed (for a different reason).
> 
> > -----Original Message-----
> > From: cfe-commits [mailto:cfe-commits-bounces at lists.llvm.org] On Behalf
> > Of Alexey Bataev via cfe-commits
> > Sent: 26 May 2016 12:10
> > To: cfe-commits at lists.llvm.org
> > Subject: r270838 - [OPENMP] Add option '-fopenmp-version=[31|40|45]'
> > allowing choosing
> >
> > Author: abataev
> > Date: Thu May 26 06:10:11 2016
> > New Revision: 270838
> >
> > URL: http://llvm.org/viewvc/llvm-project?rev=270838&view=rev
> > Log:
> > [OPENMP] Add option '-fopenmp-version=[31|40|45]' allowing choosing
> > OpenMP version.
> >
> > If '-fopenmp' option is provided '-fopenmp-version=' allows to control,
> > which version of OpenMP must be supported. Currently it affects only the
> > value of _OPENMP define.
> >
> > Modified:
> >     cfe/trunk/include/clang/Basic/LangOptions.def
> >     cfe/trunk/include/clang/Driver/Options.td
> >     cfe/trunk/lib/Driver/Tools.cpp
> >     cfe/trunk/lib/Frontend/CompilerInvocation.cpp
> >     cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> >     cfe/trunk/test/OpenMP/driver.c
> >     cfe/trunk/test/OpenMP/predefined_macro.c
> >
> > Modified: cfe/trunk/include/clang/Basic/LangOptions.def
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/include/clang/Basic/LangOptions.def?rev=270838&r1=270
> > 837&r2=270838&view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/include/clang/Basic/LangOptions.def (original)
> > +++ cfe/trunk/include/clang/Basic/LangOptions.def Thu May 26 06:10:11
> > 2016
> > @@ -182,7 +182,7 @@ LANGOPT(NativeHalfType    , 1, 0, "Nativ
> >  LANGOPT(NativeHalfArgsAndReturns, 1, 0, "Native half args and returns")
> >  LANGOPT(HalfArgsAndReturns, 1, 0, "half args and returns")
> >  LANGOPT(CUDA              , 1, 0, "CUDA")
> > -LANGOPT(OpenMP            , 1, 0, "OpenMP support")
> > +LANGOPT(OpenMP            , 32, 0, "OpenMP support and version of
> OpenMP
> > (31, 40 or 45)")
> >  LANGOPT(OpenMPUseTLS      , 1, 0, "Use TLS for threadprivates or runtime
> > calls")
> >  LANGOPT(OpenMPIsDevice    , 1, 0, "Generate code only for OpenMP
> target
> > device")
> >
> >
> > Modified: cfe/trunk/include/clang/Driver/Options.td
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/include/clang/Driver/Options.td?rev=270838&r1=270837&
> > r2=270838&view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/include/clang/Driver/Options.td (original)
> > +++ cfe/trunk/include/clang/Driver/Options.td Thu May 26 06:10:11 2016
> > @@ -1004,6 +1004,7 @@ def fobjc_sender_dependent_dispatch : Fl
> >  def fomit_frame_pointer : Flag<["-"], "fomit-frame-pointer">,
> > Group<f_Group>;
> >  def fopenmp : Flag<["-"], "fopenmp">, Group<f_Group>,
> Flags<[CC1Option,
> > NoArgumentUnused]>;
> >  def fno_openmp : Flag<["-"], "fno-openmp">, Group<f_Group>,
> > Flags<[NoArgumentUnused]>;
> > +def fopenmp_version_EQ : Joined<["-"], "fopenmp-version=">,
> > Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>;
> >  def fopenmp_EQ : Joined<["-"], "fopenmp=">, Group<f_Group>;
> >  def fopenmp_use_tls : Flag<["-"], "fopenmp-use-tls">, Group<f_Group>,
> > Flags<[NoArgumentUnused]>;
> >  def fnoopenmp_use_tls : Flag<["-"], "fnoopenmp-use-tls">,
> > Group<f_Group>, Flags<[CC1Option, NoArgumentUnused]>;
> >
> > Modified: cfe/trunk/lib/Driver/Tools.cpp
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/lib/Driver/Tools.cpp?rev=270838&r1=270837&r2=270838&
> > view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/lib/Driver/Tools.cpp (original)
> > +++ cfe/trunk/lib/Driver/Tools.cpp Thu May 26 06:10:11 2016
> > @@ -4862,7 +4862,8 @@ void Clang::ConstructJob(Compilation &C,
> >
> >    // Forward flags for OpenMP
> >    if (Args.hasFlag(options::OPT_fopenmp, options::OPT_fopenmp_EQ,
> > -                   options::OPT_fno_openmp, false))
> > +                   options::OPT_fno_openmp, false)) {
> > +    Args.AddAllArgs(CmdArgs, options::OPT_fopenmp_version_EQ);
> >      switch (getOpenMPRuntime(getToolChain(), Args)) {
> >      case OMPRT_OMP:
> >      case OMPRT_IOMP5:
> > @@ -4885,6 +4886,7 @@ void Clang::ConstructJob(Compilation &C,
> >        // semantic analysis, etc.
> >        break;
> >      }
> > +  }
> >
> >    const SanitizerArgs &Sanitize = getToolChain().getSanitizerArgs();
> >    Sanitize.addArgs(getToolChain(), Args, CmdArgs, InputType);
> >
> > Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=270838&r1=270
> > 837&r2=270838&view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original)
> > +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Thu May 26 06:10:11
> > 2016
> > @@ -1960,18 +1960,23 @@ static void ParseLangArgs(LangOptions &O
> >    Opts.OpenMPIsDevice =
> >        Opts.OpenMP && Args.hasArg(options::OPT_fopenmp_is_device);
> >
> > -  // Provide diagnostic when a given target is not expected to be an
> OpenMP
> > -  // device or host.
> > -  if (Opts.OpenMP && !Opts.OpenMPIsDevice) {
> > -    switch (T.getArch()) {
> > -    default:
> > -      break;
> > -    // Add unsupported host targets here:
> > -    case llvm::Triple::nvptx:
> > -    case llvm::Triple::nvptx64:
> > -      Diags.Report(clang::diag::err_drv_omp_host_target_not_supported)
> > -          << TargetOpts.Triple;
> > -      break;
> > +  if (Opts.OpenMP) {
> > +    if (int Version = getLastArgIntValue(Args, OPT_fopenmp_version_EQ,
> > +                                         Opts.OpenMP, Diags))
> > +      Opts.OpenMP = Version;
> > +    // Provide diagnostic when a given target is not expected to be an
> > OpenMP
> > +    // device or host.
> > +    if (!Opts.OpenMPIsDevice) {
> > +      switch (T.getArch()) {
> > +      default:
> > +        break;
> > +      // Add unsupported host targets here:
> > +      case llvm::Triple::nvptx:
> > +      case llvm::Triple::nvptx64:
> > +        Diags.Report(clang::diag::err_drv_omp_host_target_not_supported)
> > +            << TargetOpts.Triple;
> > +        break;
> > +      }
> >      }
> >    }
> >
> >
> > Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=270838&r1=27083
> > 7&r2=270838&view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original)
> > +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Thu May 26 06:10:11 2016
> > @@ -928,7 +928,18 @@ static void InitializePredefinedMacros(c
> >      //   macro name is defined to have the decimal value yyyymm where
> >      //   yyyy and mm are the year and the month designations of the
> >      //   version of the OpenMP API that the implementation support.
> > -    Builder.defineMacro("_OPENMP", "201511");
> > +    switch (LangOpts.OpenMP) {
> > +    case 40:
> > +      Builder.defineMacro("_OPENMP", "201307");
> > +      break;
> > +    case 45:
> > +      Builder.defineMacro("_OPENMP", "201511");
> > +      break;
> > +    default:
> > +      // Default version is OpenMP 3.1
> > +      Builder.defineMacro("_OPENMP", "201107");
> > +      break;
> > +    }
> >    }
> >
> >    // CUDA device path compilaton
> >
> > Modified: cfe/trunk/test/OpenMP/driver.c
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/test/OpenMP/driver.c?rev=270838&r1=270837&r2=27083
> > 8&view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/test/OpenMP/driver.c (original)
> > +++ cfe/trunk/test/OpenMP/driver.c Thu May 26 06:10:11 2016
> > @@ -8,3 +8,22 @@
> >  // CHECK-NO-TLS: -cc1
> >  // CHECK-NO-TLS-SAME: -fnoopenmp-use-tls
> >  //
> > +// RUN: %clang %s -c -E -dM -fopenmp | FileCheck --check-prefix=CHECK-
> > DEFAULT-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=1 | FileCheck --
> > check-prefix=CHECK-DEFAULT-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=0 | FileCheck --
> > check-prefix=CHECK-DEFAULT-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=100 | FileCheck
> -
> > -check-prefix=CHECK-DEFAULT-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=31 | FileCheck -
> -
> > check-prefix=CHECK-DEFAULT-VERSION %s
> > +// CHECK-DEFAULT-VERSION: #define _OPENMP 201107
> > +
> > +// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=40 | FileCheck -
> -
> > check-prefix=CHECK-40-VERSION %s
> > +// CHECK-40-VERSION: #define _OPENMP 201307
> > +
> > +// RUN: %clang %s -c -E -dM -fopenmp -fopenmp-version=45 | FileCheck -
> -
> > check-prefix=CHECK-45-VERSION %s
> > +// CHECK-45-VERSION: #define _OPENMP 201511
> > +
> > +// RUN: %clang %s -c -E -dM -fopenmp-version=1 | FileCheck --check-
> > prefix=CHECK-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp-version=31 | FileCheck --check-
> > prefix=CHECK-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp-version=40 | FileCheck --check-
> > prefix=CHECK-VERSION %s
> > +// RUN: %clang %s -c -E -dM -fopenmp-version=45 | FileCheck --check-
> > prefix=CHECK-VERSION %s
> > +// CHECK-VERSION-NOT: #define _OPENMP
> > +
> >
> > Modified: cfe/trunk/test/OpenMP/predefined_macro.c
> > URL: http://llvm.org/viewvc/llvm-
> >
> project/cfe/trunk/test/OpenMP/predefined_macro.c?rev=270838&r1=2708
> > 37&r2=270838&view=diff
> >
> ==========================================================
> > ====================
> > --- cfe/trunk/test/OpenMP/predefined_macro.c (original)
> > +++ cfe/trunk/test/OpenMP/predefined_macro.c Thu May 26 06:10:11
> 2016
> > @@ -5,7 +5,7 @@
> >  // -fopenmp option is specified
> >  #ifndef _OPENMP
> >  #error "No _OPENMP macro is defined with -fopenmp option"
> > -#elsif _OPENMP != 201511
> > +#elsif _OPENMP != 201107
> >  #error "_OPENMP has incorrect value"
> >  #endif //_OPENMP
> >  #else
> >
> >
> > _______________________________________________
> > cfe-commits mailing list
> > cfe-commits at lists.llvm.org
> > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


More information about the cfe-commits mailing list