From 61e07861dd3a70c31f658bad8c4b911994e4933b Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Sat, 4 Dec 2010 01:50:45 +0000 Subject: [PATCH] Implement -cl-opt-disable git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@120876 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/clang/Driver/CC1Options.td | 7 +++++++ lib/Frontend/CompilerInvocation.cpp | 6 +++++- test/CodeGen/ext-vector-shuffle.c | 6 +++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/include/clang/Driver/CC1Options.td b/include/clang/Driver/CC1Options.td index 03a4dd97eb..27db9cf5bf 100644 --- a/include/clang/Driver/CC1Options.td +++ b/include/clang/Driver/CC1Options.td @@ -592,3 +592,10 @@ def dD : Flag<"-dD">, HelpText<"Print macro definitions in -E mode in addition to normal output">; def H : Flag<"-H">, HelpText<"Show header includes and nesting depth">; + +//===----------------------------------------------------------------------===// +// OpenCL Options +//===----------------------------------------------------------------------===// + +def cl_opt_disable : Flag<"-cl-opt-disable">, + HelpText<"OpenCL only. This option disables all optimizations. The default is optimizations are enabled.">; diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index b4e676b43e..8795b38a41 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -774,8 +774,12 @@ using namespace clang::driver::cc1options; static unsigned getOptimizationLevel(ArgList &Args, InputKind IK, Diagnostic &Diags) { + unsigned DefaultOpt = 0; + if (IK == IK_OpenCL && !Args.hasArg(OPT_cl_opt_disable)) + DefaultOpt = 2; // -Os implies -O2 - return Args.hasArg(OPT_Os) ? 2 : Args.getLastArgIntValue(OPT_O, 0, Diags); + return Args.hasArg(OPT_Os) ? 2 : + Args.getLastArgIntValue(OPT_O, DefaultOpt, Diags); } static void ParseAnalyzerArgs(AnalyzerOptions &Opts, ArgList &Args, diff --git a/test/CodeGen/ext-vector-shuffle.c b/test/CodeGen/ext-vector-shuffle.c index 1d147a3b3e..d26602ae8d 100644 --- a/test/CodeGen/ext-vector-shuffle.c +++ b/test/CodeGen/ext-vector-shuffle.c @@ -1,6 +1,6 @@ -// RUN: %clang_cc1 %s -x cl -emit-llvm -o - | not grep 'extractelement' -// RUN: %clang_cc1 %s -x cl -emit-llvm -o - | not grep 'insertelement' -// RUN: %clang_cc1 %s -x cl -emit-llvm -o - | grep 'shufflevector' +// RUN: %clang_cc1 %s -x cl -cl-opt-disable -emit-llvm -o - | not grep 'extractelement' +// RUN: %clang_cc1 %s -x cl -cl-opt-disable -emit-llvm -o - | not grep 'insertelement' +// RUN: %clang_cc1 %s -x cl -cl-opt-disable -emit-llvm -o - | grep 'shufflevector' typedef __attribute__(( ext_vector_type(2) )) float float2; typedef __attribute__(( ext_vector_type(4) )) float float4; -- 2.40.0