r374909 - CFI: wrong type passed to llvm.type.test with multiple inheritance devirtualization.

2019-10-15 Thread Dmitry Mikulin via cfe-commits
Author: dmikulin
Date: Tue Oct 15 09:32:50 2019
New Revision: 374909

URL: http://llvm.org/viewvc/llvm-project?rev=374909&view=rev
Log:
CFI: wrong type passed to llvm.type.test with multiple inheritance 
devirtualization.

Differential Revision: https://reviews.llvm.org/D67985

Added:
cfe/trunk/test/CodeGenCXX/cfi-multiple-inheritance.cpp
Modified:
cfe/trunk/lib/CodeGen/CGExprCXX.cpp

Modified: cfe/trunk/lib/CodeGen/CGExprCXX.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExprCXX.cpp?rev=374909&r1=374908&r2=374909&view=diff
==
--- cfe/trunk/lib/CodeGen/CGExprCXX.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExprCXX.cpp Tue Oct 15 09:32:50 2019
@@ -382,7 +382,7 @@ RValue CodeGenFunction::EmitCXXMemberOrO
   const CXXRecordDecl *RD;
   std::tie(VTable, RD) =
   CGM.getCXXABI().LoadVTablePtr(*this, This.getAddress(),
-MD->getParent());
+CalleeDecl->getParent());
   EmitVTablePtrCheckForCall(RD, VTable, CFITCK_NVCall, CE->getBeginLoc());
 }
 

Added: cfe/trunk/test/CodeGenCXX/cfi-multiple-inheritance.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/cfi-multiple-inheritance.cpp?rev=374909&view=auto
==
--- cfe/trunk/test/CodeGenCXX/cfi-multiple-inheritance.cpp (added)
+++ cfe/trunk/test/CodeGenCXX/cfi-multiple-inheritance.cpp Tue Oct 15 09:32:50 
2019
@@ -0,0 +1,31 @@
+// Test that correct vtable ptr and type metadata are passed to llvm.type.test
+// Related to Bugzilla 43390.
+
+// RUN: %clang_cc1 -triple x86_64-unknown-linux -fvisibility hidden -std=c++11 
-fsanitize=cfi-nvcall -emit-llvm -o - %s | FileCheck %s
+
+class A1 {
+public:
+virtual int f1() = 0;
+};
+
+class A2 {
+public:
+virtual int f2() = 0;
+};
+
+
+class B : public A1, public A2 {
+public:
+int f2() final { return 1; }
+int f1() final { return 2; }
+};
+
+// CHECK-LABEL: define hidden i32 @_Z3foov
+int foo() {
+B b;
+return static_cast(&b)->f2();
+// CHECK: [[P:%[^ ]*]] = bitcast %class.B* %b to i8**
+// CHECK: [[V:%[^ ]*]] = load i8*, i8** [[P]], align 8
+// CHECK: call i1 @llvm.type.test(i8* [[V]], metadata !"_ZTS1B")
+// CHECK: call i1 @llvm.type.test(i8* [[V]], metadata !"all-vtables")
+}


___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits


r374934 - Added support for "#pragma clang section relro="

2019-10-15 Thread Dmitry Mikulin via cfe-commits
Author: dmikulin
Date: Tue Oct 15 11:31:10 2019
New Revision: 374934

URL: http://llvm.org/viewvc/llvm-project?rev=374934&view=rev
Log:
Added support for "#pragma clang section relro="

Differential Revision: https://reviews.llvm.org/D68806

Modified:
cfe/trunk/docs/LanguageExtensions.rst
cfe/trunk/include/clang/Basic/Attr.td
cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
cfe/trunk/include/clang/Sema/Sema.h
cfe/trunk/lib/CodeGen/CGDecl.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/Parse/ParsePragma.cpp
cfe/trunk/lib/Sema/SemaAttr.cpp
cfe/trunk/lib/Sema/SemaDecl.cpp
cfe/trunk/test/CodeGenCXX/clang-sections.cpp
cfe/trunk/test/Sema/pragma-clang-section.c

Modified: cfe/trunk/docs/LanguageExtensions.rst
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/docs/LanguageExtensions.rst?rev=374934&r1=374933&r2=374934&view=diff
==
--- cfe/trunk/docs/LanguageExtensions.rst (original)
+++ cfe/trunk/docs/LanguageExtensions.rst Tue Oct 15 11:31:10 2019
@@ -3445,14 +3445,14 @@ The section names can be specified as:
 
 .. code-block:: c++
 
-  #pragma clang section bss="myBSS" data="myData" rodata="myRodata" 
text="myText"
+  #pragma clang section bss="myBSS" data="myData" rodata="myRodata" 
relro="myRelro" text="myText"
 
 The section names can be reverted back to default name by supplying an empty
 string to the section kind, for example:
 
 .. code-block:: c++
 
-  #pragma clang section bss="" data="" text="" rodata=""
+  #pragma clang section bss="" data="" text="" rodata="" relro=""
 
 The ``#pragma clang section`` directive obeys the following rules:
 

Modified: cfe/trunk/include/clang/Basic/Attr.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=374934&r1=374933&r2=374934&view=diff
==
--- cfe/trunk/include/clang/Basic/Attr.td (original)
+++ cfe/trunk/include/clang/Basic/Attr.td Tue Oct 15 11:31:10 2019
@@ -2020,6 +2020,14 @@ def PragmaClangRodataSection : Inheritab
   let Documentation = [Undocumented];
 }
 
+def PragmaClangRelroSection : InheritableAttr {
+  // This attribute has no spellings as it is only ever created implicitly.
+  let Spellings = [];
+  let Args = [StringArgument<"Name">];
+  let Subjects = SubjectList<[GlobalVar], ErrorDiag>;
+  let Documentation = [Undocumented];
+}
+
 def PragmaClangTextSection : InheritableAttr {
   // This attribute has no spellings as it is only ever created implicitly.
   let Spellings = [];

Modified: cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td?rev=374934&r1=374933&r2=374934&view=diff
==
--- cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td (original)
+++ cfe/trunk/include/clang/Basic/DiagnosticParseKinds.td Tue Oct 15 11:31:10 
2019
@@ -976,9 +976,9 @@ def err_pragma_misplaced_in_decl : Error
 
 // '#pragma clang section' related errors
 def err_pragma_expected_clang_section_name : Error<
-  "expected one of [bss|data|rodata|text] section kind in '#pragma %0'">;
+  "expected one of [bss|data|rodata|text|relro] section kind in '#pragma %0'">;
 def err_pragma_clang_section_expected_equal : Error<
-  "expected '=' following '#pragma clang section 
%select{invalid|bss|data|rodata|text}0'">;
+  "expected '=' following '#pragma clang section 
%select{invalid|bss|data|rodata|text|relro}0'">;
 def warn_pragma_expected_section_name : Warning<
   "expected a string literal for the section name in '#pragma %0' - ignored">,
   InGroup;

Modified: cfe/trunk/include/clang/Sema/Sema.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=374934&r1=374933&r2=374934&view=diff
==
--- cfe/trunk/include/clang/Sema/Sema.h (original)
+++ cfe/trunk/include/clang/Sema/Sema.h Tue Oct 15 11:31:10 2019
@@ -418,7 +418,8 @@ public:
 PCSK_BSS  = 1,
 PCSK_Data = 2,
 PCSK_Rodata   = 3,
-PCSK_Text = 4
+PCSK_Text = 4,
+PCSK_Relro= 5
};
 
   enum PragmaClangSectionAction {
@@ -439,6 +440,7 @@ public:
PragmaClangSection PragmaClangBSSSection;
PragmaClangSection PragmaClangDataSection;
PragmaClangSection PragmaClangRodataSection;
+   PragmaClangSection PragmaClangRelroSection;
PragmaClangSection PragmaClangTextSection;
 
   enum PragmaMsStackAction {

Modified: cfe/trunk/lib/CodeGen/CGDecl.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDecl.cpp?rev=374934&r1=374933&r2=374934&view=diff
==
--- cfe/trunk/lib/CodeGen/CGDecl.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDecl.cpp Tue Oct 15 11:31:10

r375022 - Tag CFI-generated data structures with "#pragma clang section" attributes.

2019-10-16 Thread Dmitry Mikulin via cfe-commits
Author: dmikulin
Date: Wed Oct 16 10:51:40 2019
New Revision: 375022

URL: http://llvm.org/viewvc/llvm-project?rev=375022&view=rev
Log:
Tag CFI-generated data structures with "#pragma clang section" attributes.

Differential Revision: https://reviews.llvm.org/D68808

Added:
cfe/trunk/test/CodeGen/cfi-pragma-section.c
Modified:
cfe/trunk/lib/CodeGen/CGExpr.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/Sema/SemaDecl.cpp

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=375022&r1=375021&r2=375022&view=diff
==
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Wed Oct 16 10:51:40 2019
@@ -2821,6 +2821,7 @@ llvm::Constant *CodeGenFunction::EmitChe
   CGM.getModule(), Descriptor->getType(),
   /*isConstant=*/true, llvm::GlobalVariable::PrivateLinkage, Descriptor);
   GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
+  CGM.setPragmaSectionAttributes(CurFuncDecl, GV);
   CGM.getSanitizerMetadata()->disableSanitizerForGlobal(GV);
 
   // Remember the descriptor for this type.
@@ -2900,6 +2901,7 @@ llvm::Constant *CodeGenFunction::EmitChe
 }
 
 auto FilenameGV = CGM.GetAddrOfConstantCString(FilenameString, ".src");
+CGM.setPragmaSectionAttributes(CurFuncDecl, 
cast(FilenameGV.getPointer()));
 CGM.getSanitizerMetadata()->disableSanitizerForGlobal(
   cast(FilenameGV.getPointer()));
 Filename = FilenameGV.getPointer();
@@ -3073,6 +3075,7 @@ void CodeGenFunction::EmitCheck(
   new llvm::GlobalVariable(CGM.getModule(), Info->getType(), false,
llvm::GlobalVariable::PrivateLinkage, Info);
   InfoPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
+  CGM.setPragmaSectionAttributes(CurFuncDecl, InfoPtr);
   CGM.getSanitizerMetadata()->disableSanitizerForGlobal(InfoPtr);
   Args.push_back(Builder.CreateBitCast(InfoPtr, Int8PtrTy));
   ArgTypes.push_back(Int8PtrTy);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=375022&r1=375021&r2=375022&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Oct 16 10:51:40 2019
@@ -1699,11 +1699,8 @@ bool CodeGenModule::GetCPUAndFeaturesAtt
   return AddedAttr;
 }
 
-void CodeGenModule::setNonAliasAttributes(GlobalDecl GD,
-  llvm::GlobalObject *GO) {
-  const Decl *D = GD.getDecl();
-  SetCommonAttributes(GD, GO);
-
+void CodeGenModule::setPragmaSectionAttributes(const Decl *D,
+  llvm::GlobalObject *GO) {
   if (D) {
 if (auto *GV = dyn_cast(GO)) {
   if (auto *SA = D->getAttr())
@@ -1721,6 +1718,26 @@ void CodeGenModule::setNonAliasAttribute
 if (!D->getAttr())
   F->addFnAttr("implicit-section-name", SA->getName());
 
+  if (auto *SA = D->getAttr())
+F->addFnAttr("bss-section", SA->getName());
+  if (auto *SA = D->getAttr())
+F->addFnAttr("data-section", SA->getName());
+  if (auto *SA = D->getAttr())
+F->addFnAttr("rodata-section", SA->getName());
+  if (auto *SA = D->getAttr())
+F->addFnAttr("relro-section", SA->getName());
+}
+  }
+}
+
+void CodeGenModule::setNonAliasAttributes(GlobalDecl GD,
+  llvm::GlobalObject *GO) {
+  const Decl *D = GD.getDecl();
+  SetCommonAttributes(GD, GO);
+  setPragmaSectionAttributes(D, GO);
+
+  if (D) {
+if (auto *F = dyn_cast(GO)) {
   llvm::AttrBuilder Attrs;
   if (GetCPUAndFeaturesAttributes(GD, Attrs)) {
 // We know that GetCPUAndFeaturesAttributes will always have the

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=375022&r1=375021&r2=375022&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Oct 16 10:51:40 2019
@@ -1347,6 +1347,11 @@ public:
   /// \param QT is the clang QualType of the null pointer.
   llvm::Constant *getNullPointer(llvm::PointerType *T, QualType QT);
 
+  /// Set section attributes requested by "#pragma clang section"
+  ///  \param D is the declaration to read semantic attributes from.
+  ///  \param GO is the global object to set section attributes.
+  void setPragmaSectionAttributes(const Decl *D, llvm::GlobalObject *GO);
+
 private:
   llvm::Constant *GetOrCreateLLVMFunction(
   StringRef MangledName, llvm::Type *Ty, GlobalDecl D, bool ForVTable,

Modified: cfe/trunk/lib/Sema/Sema

r375069 - Revert Tag CFI-generated data structures with "#pragma clang section" attributes.

2019-10-16 Thread Dmitry Mikulin via cfe-commits
Author: dmikulin
Date: Wed Oct 16 17:55:38 2019
New Revision: 375069

URL: http://llvm.org/viewvc/llvm-project?rev=375069&view=rev
Log:
Revert Tag CFI-generated data structures with "#pragma clang section" 
attributes.

This reverts r375022 (git commit e2692b3bc0327606748b6d291b9009d2c845ced5)

Removed:
cfe/trunk/test/CodeGen/cfi-pragma-section.c
Modified:
cfe/trunk/lib/CodeGen/CGExpr.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.cpp
cfe/trunk/lib/CodeGen/CodeGenModule.h
cfe/trunk/lib/Sema/SemaDecl.cpp

Modified: cfe/trunk/lib/CodeGen/CGExpr.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGExpr.cpp?rev=375069&r1=375068&r2=375069&view=diff
==
--- cfe/trunk/lib/CodeGen/CGExpr.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGExpr.cpp Wed Oct 16 17:55:38 2019
@@ -2821,7 +2821,6 @@ llvm::Constant *CodeGenFunction::EmitChe
   CGM.getModule(), Descriptor->getType(),
   /*isConstant=*/true, llvm::GlobalVariable::PrivateLinkage, Descriptor);
   GV->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
-  CGM.setPragmaSectionAttributes(CurFuncDecl, GV);
   CGM.getSanitizerMetadata()->disableSanitizerForGlobal(GV);
 
   // Remember the descriptor for this type.
@@ -2901,7 +2900,6 @@ llvm::Constant *CodeGenFunction::EmitChe
 }
 
 auto FilenameGV = CGM.GetAddrOfConstantCString(FilenameString, ".src");
-CGM.setPragmaSectionAttributes(CurFuncDecl, 
cast(FilenameGV.getPointer()));
 CGM.getSanitizerMetadata()->disableSanitizerForGlobal(
   cast(FilenameGV.getPointer()));
 Filename = FilenameGV.getPointer();
@@ -3075,7 +3073,6 @@ void CodeGenFunction::EmitCheck(
   new llvm::GlobalVariable(CGM.getModule(), Info->getType(), false,
llvm::GlobalVariable::PrivateLinkage, Info);
   InfoPtr->setUnnamedAddr(llvm::GlobalValue::UnnamedAddr::Global);
-  CGM.setPragmaSectionAttributes(CurFuncDecl, InfoPtr);
   CGM.getSanitizerMetadata()->disableSanitizerForGlobal(InfoPtr);
   Args.push_back(Builder.CreateBitCast(InfoPtr, Int8PtrTy));
   ArgTypes.push_back(Int8PtrTy);

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=375069&r1=375068&r2=375069&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Wed Oct 16 17:55:38 2019
@@ -1699,8 +1699,11 @@ bool CodeGenModule::GetCPUAndFeaturesAtt
   return AddedAttr;
 }
 
-void CodeGenModule::setPragmaSectionAttributes(const Decl *D,
-  llvm::GlobalObject *GO) {
+void CodeGenModule::setNonAliasAttributes(GlobalDecl GD,
+  llvm::GlobalObject *GO) {
+  const Decl *D = GD.getDecl();
+  SetCommonAttributes(GD, GO);
+
   if (D) {
 if (auto *GV = dyn_cast(GO)) {
   if (auto *SA = D->getAttr())
@@ -1718,26 +1721,6 @@ void CodeGenModule::setPragmaSectionAttr
 if (!D->getAttr())
   F->addFnAttr("implicit-section-name", SA->getName());
 
-  if (auto *SA = D->getAttr())
-F->addFnAttr("bss-section", SA->getName());
-  if (auto *SA = D->getAttr())
-F->addFnAttr("data-section", SA->getName());
-  if (auto *SA = D->getAttr())
-F->addFnAttr("rodata-section", SA->getName());
-  if (auto *SA = D->getAttr())
-F->addFnAttr("relro-section", SA->getName());
-}
-  }
-}
-
-void CodeGenModule::setNonAliasAttributes(GlobalDecl GD,
-  llvm::GlobalObject *GO) {
-  const Decl *D = GD.getDecl();
-  SetCommonAttributes(GD, GO);
-  setPragmaSectionAttributes(D, GO);
-
-  if (D) {
-if (auto *F = dyn_cast(GO)) {
   llvm::AttrBuilder Attrs;
   if (GetCPUAndFeaturesAttributes(GD, Attrs)) {
 // We know that GetCPUAndFeaturesAttributes will always have the

Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=375069&r1=375068&r2=375069&view=diff
==
--- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/lib/CodeGen/CodeGenModule.h Wed Oct 16 17:55:38 2019
@@ -1347,11 +1347,6 @@ public:
   /// \param QT is the clang QualType of the null pointer.
   llvm::Constant *getNullPointer(llvm::PointerType *T, QualType QT);
 
-  /// Set section attributes requested by "#pragma clang section"
-  ///  \param D is the declaration to read semantic attributes from.
-  ///  \param GO is the global object to set section attributes.
-  void setPragmaSectionAttributes(const Decl *D, llvm::GlobalObject *GO);
-
 private:
   llvm::Constant *GetOrCreateLLVMFunction(
   StringRef MangledName, llvm::Type *Ty, GlobalDecl D, bool ForVTable,

Mod

[clang] fbb23c9 - Fix profiling options on PS4 target:

2020-03-16 Thread Dmitry Mikulin via cfe-commits

Author: Dmitry Mikulin
Date: 2020-03-16T16:52:47-07:00
New Revision: fbb23c9714f21c5f46ced5ccaed0cb90e05f61e7

URL: 
https://github.com/llvm/llvm-project/commit/fbb23c9714f21c5f46ced5ccaed0cb90e05f61e7
DIFF: 
https://github.com/llvm/llvm-project/commit/fbb23c9714f21c5f46ced5ccaed0cb90e05f61e7.diff

LOG: Fix profiling options on PS4 target:
- libclang_rt.profile should be added when -fcs-profile-generate is on 
thecommand line.
- OPT_fno_profile_instr_generate was used as a negative for 
OPT_fprofile_generate. Fix it to use OPT_fno_profile_generate.

Differential Revision: https://reviews.llvm.org/D75274

Added: 


Modified: 
clang/lib/Driver/ToolChains/PS4CPU.cpp
clang/test/Driver/ps4-runtime-flags.c

Removed: 




diff  --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp 
b/clang/lib/Driver/ToolChains/PS4CPU.cpp
index 93d86e6d04b1..9ecbb7241d45 100644
--- a/clang/lib/Driver/ToolChains/PS4CPU.cpp
+++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp
@@ -30,13 +30,17 @@ void tools::PS4cpu::addProfileRTArgs(const ToolChain &TC, 
const ArgList &Args,
   if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs,
 false) ||
Args.hasFlag(options::OPT_fprofile_generate,
-options::OPT_fno_profile_instr_generate, false) ||
+options::OPT_fno_profile_generate, false) ||
Args.hasFlag(options::OPT_fprofile_generate_EQ,
-options::OPT_fno_profile_instr_generate, false) ||
+options::OPT_fno_profile_generate, false) ||
Args.hasFlag(options::OPT_fprofile_instr_generate,
 options::OPT_fno_profile_instr_generate, false) ||
Args.hasFlag(options::OPT_fprofile_instr_generate_EQ,
 options::OPT_fno_profile_instr_generate, false) ||
+   Args.hasFlag(options::OPT_fcs_profile_generate,
+options::OPT_fno_profile_generate, false) ||
+   Args.hasFlag(options::OPT_fcs_profile_generate_EQ,
+options::OPT_fno_profile_generate, false) ||
Args.hasArg(options::OPT_fcreate_profile) ||
Args.hasArg(options::OPT_coverage)))
 CmdArgs.push_back("--dependent-lib=libclang_rt.profile-x86_64.a");

diff  --git a/clang/test/Driver/ps4-runtime-flags.c 
b/clang/test/Driver/ps4-runtime-flags.c
index 315976d4e228..3131690304db 100644
--- a/clang/test/Driver/ps4-runtime-flags.c
+++ b/clang/test/Driver/ps4-runtime-flags.c
@@ -10,10 +10,15 @@
 // RUN: %clang -target x86_64-scei-ps4 -fprofile-arcs -fno-profile-arcs %s 
-### 2>&1 | FileCheck --check-prefix=CHECK-PS4-NO-PROFILE %s
 // RUN: %clang -target x86_64-scei-ps4 -fprofile-generate %s -### 2>&1 | 
FileCheck --check-prefix=CHECK-PS4-PROFILE %s
 // RUN: %clang -target x86_64-scei-ps4 -fno-profile-generate %s -### 2>&1 | 
FileCheck --check-prefix=CHECK-PS4-NO-PROFILE %s
+// RUN: %clang -target x86_64-scei-ps4 -fprofile-generate 
-fno-profile-generate %s -### 2>&1 | FileCheck 
--check-prefix=CHECK-PS4-NO-PROFILE %s
 // RUN: %clang -target x86_64-scei-ps4 -fprofile-generate=dir %s -### 2>&1 | 
FileCheck --check-prefix=CHECK-PS4-PROFILE %s
 // RUN: %clang -target x86_64-scei-ps4 -fprofile-instr-generate %s -### 2>&1 | 
FileCheck --check-prefix=CHECK-PS4-PROFILE %s
 // RUN: %clang -target x86_64-scei-ps4 -fno-profile-instr-generate %s -### 
2>&1 | FileCheck --check-prefix=CHECK-PS4-NO-PROFILE %s
+// RUN: %clang -target x86_64-scei-ps4 -fprofile-instr-generate 
-fno-profile-instr-generate %s -### 2>&1 | FileCheck 
--check-prefix=CHECK-PS4-NO-PROFILE %s
+// RUN: %clang -target x86_64-scei-ps4 -fprofile-generate 
-fno-profile-instr-generate %s -### 2>&1 | FileCheck 
--check-prefix=CHECK-PS4-PROFILE %s
 // RUN: %clang -target x86_64-scei-ps4 
-fprofile-instr-generate=somefile.profraw %s -### 2>&1 | FileCheck 
--check-prefix=CHECK-PS4-PROFILE %s
+// RUN: %clang -target x86_64-scei-ps4 -fcs-profile-generate %s -### 2>&1 | 
FileCheck --check-prefix=CHECK-PS4-PROFILE %s
+// RUN: %clang -target x86_64-scei-ps4 -fcs-profile-generate 
-fno-profile-generate %s -### 2>&1 | FileCheck 
--check-prefix=CHECK-PS4-NO-PROFILE %s
 //
 // CHECK-PS4-PROFILE: "--dependent-lib=libclang_rt.profile-x86_64.a"
 // CHECK-PS4-NO-PROFILE-NOT: "--dependent-lib=libclang_rt.profile-x86_64.a"



___
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits