[PATCH] D43821: [SemaCXX] _Pragma("clang optimize off") not affecting lambda.
Carlos Alberto Enciso via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu Mar 8 02:15:41 PST 2018
CarlosAlbertoEnciso updated this revision to Diff 137550.
CarlosAlbertoEnciso added a comment.
Correct the issues raised by the reviews.
Repository:
rC Clang
https://reviews.llvm.org/D43821
Files:
lib/Sema/SemaLambda.cpp
test/CodeGenCXX/optnone-pragma-optimize-off.cpp
Index: test/CodeGenCXX/optnone-pragma-optimize-off.cpp
===================================================================
--- test/CodeGenCXX/optnone-pragma-optimize-off.cpp
+++ test/CodeGenCXX/optnone-pragma-optimize-off.cpp
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 %s -triple %itanium_abi_triple -O1 -disable-llvm-passes -emit-llvm -o - | FileCheck %s
+
+// Test the attributes for the lambda function contains 'optnone' as result of
+// the _Pragma("clang optimize off").
+
+_Pragma("clang optimize off")
+
+void foo(int p) {
+ auto lambda = [&p]() { ++p; };
+ lambda();
+ // CHECK: define {{.*}} @"_ZZ3fooiENK3$_0clEv"({{.*}}) #[[LAMBDA_ATR:[0-9]+]]
+}
+
+_Pragma("clang optimize on")
+
+// CHECK: attributes #[[LAMBDA_ATR]] = { {{.*}} optnone {{.*}} }
Index: lib/Sema/SemaLambda.cpp
===================================================================
--- lib/Sema/SemaLambda.cpp
+++ lib/Sema/SemaLambda.cpp
@@ -904,6 +904,10 @@
ParamInfo.getDeclSpec().isConstexprSpecified());
if (ExplicitParams)
CheckCXXDefaultArguments(Method);
+
+ // This represents the function body for the lambda function, check if we
+ // have to apply optnone due to a pragma.
+ AddRangeBasedOptnone(Method);
// Attributes on the lambda apply to the method.
ProcessDeclAttributes(CurScope, Method, ParamInfo);
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D43821.137550.patch
Type: text/x-patch
Size: 1343 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20180308/0ad3a743/attachment-0001.bin>
More information about the cfe-commits
mailing list