This revision was automatically updated to reflect the committed changes.
Closed by commit rG5fc4828aa6c6: [clang] Don't generate warn-stack-size 
when the warning is ignored (authored by kongyi).
Herald added a project: clang.
Herald added a subscriber: cfe-commits.

Changed prior to commit:
  https://reviews.llvm.org/D108686?vs=368560&id=368564#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D108686/new/

https://reviews.llvm.org/D108686

Files:
  clang/lib/CodeGen/CodeGenFunction.cpp
  clang/test/Misc/backend-stack-frame-diagnostics-attributes.cpp


Index: clang/test/Misc/backend-stack-frame-diagnostics-attributes.cpp
===================================================================
--- /dev/null
+++ clang/test/Misc/backend-stack-frame-diagnostics-attributes.cpp
@@ -0,0 +1,24 @@
+// Test the warn-stack-size function attribute is not generated when 
-Wframe-larger-than is ignored
+// through pragma.
+
+// RUN: %clang_cc1 -fwarn-stack-size=70 -emit-llvm -o - %s | FileCheck %s
+// CHECK: "warn-stack-size"="70"
+
+// RUN: %clang_cc1 -DIGNORED -fwarn-stack-size=70 -emit-llvm -o - %s | 
FileCheck %s --check-prefix=IGNORED
+// IGNORED-NOT: "warn-stack-size"="70"
+
+extern void doIt(char *);
+
+#ifdef IGNORED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wframe-larger-than"
+#endif
+
+void frameSizeAttr() {
+  char buffer[80];
+  doIt(buffer);
+}
+
+#ifdef IGNORED
+#pragma GCC diagnostic pop
+#endif
Index: clang/lib/CodeGen/CodeGenFunction.cpp
===================================================================
--- clang/lib/CodeGen/CodeGenFunction.cpp
+++ clang/lib/CodeGen/CodeGenFunction.cpp
@@ -1049,7 +1049,8 @@
     Fn->addFnAttr("packed-stack");
   }
 
-  if (CGM.getCodeGenOpts().WarnStackSize != UINT_MAX)
+  if (CGM.getCodeGenOpts().WarnStackSize != UINT_MAX &&
+      !CGM.getDiags().isIgnored(diag::warn_fe_backend_frame_larger_than, Loc))
     Fn->addFnAttr("warn-stack-size",
                   std::to_string(CGM.getCodeGenOpts().WarnStackSize));
 


Index: clang/test/Misc/backend-stack-frame-diagnostics-attributes.cpp
===================================================================
--- /dev/null
+++ clang/test/Misc/backend-stack-frame-diagnostics-attributes.cpp
@@ -0,0 +1,24 @@
+// Test the warn-stack-size function attribute is not generated when -Wframe-larger-than is ignored
+// through pragma.
+
+// RUN: %clang_cc1 -fwarn-stack-size=70 -emit-llvm -o - %s | FileCheck %s
+// CHECK: "warn-stack-size"="70"
+
+// RUN: %clang_cc1 -DIGNORED -fwarn-stack-size=70 -emit-llvm -o - %s | FileCheck %s --check-prefix=IGNORED
+// IGNORED-NOT: "warn-stack-size"="70"
+
+extern void doIt(char *);
+
+#ifdef IGNORED
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wframe-larger-than"
+#endif
+
+void frameSizeAttr() {
+  char buffer[80];
+  doIt(buffer);
+}
+
+#ifdef IGNORED
+#pragma GCC diagnostic pop
+#endif
Index: clang/lib/CodeGen/CodeGenFunction.cpp
===================================================================
--- clang/lib/CodeGen/CodeGenFunction.cpp
+++ clang/lib/CodeGen/CodeGenFunction.cpp
@@ -1049,7 +1049,8 @@
     Fn->addFnAttr("packed-stack");
   }
 
-  if (CGM.getCodeGenOpts().WarnStackSize != UINT_MAX)
+  if (CGM.getCodeGenOpts().WarnStackSize != UINT_MAX &&
+      !CGM.getDiags().isIgnored(diag::warn_fe_backend_frame_larger_than, Loc))
     Fn->addFnAttr("warn-stack-size",
                   std::to_string(CGM.getCodeGenOpts().WarnStackSize));
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to