r333311 - [DebugInfo] Don't bother with MD5 checksums of preprocessed files.
Author: probinson Date: Fri May 25 13:59:29 2018 New Revision: 11 URL: http://llvm.org/viewvc/llvm-project?rev=11&view=rev Log: [DebugInfo] Don't bother with MD5 checksums of preprocessed files. The checksum will not reflect the real source, so there's no clear reason to include them in the debug info. Also this was causing a crash on the DWARF side. Differential Revision: https://reviews.llvm.org/D47260 Added: cfe/trunk/test/CodeGen/md5-checksum-crash.c Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/lib/CodeGen/CGDebugInfo.h Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=11&r1=10&r2=11&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri May 25 13:59:29 2018 @@ -67,6 +67,8 @@ CGDebugInfo::CGDebugInfo(CodeGenModule & DBuilder(CGM.getModule()) { for (const auto &KV : CGM.getCodeGenOpts().DebugPrefixMap) DebugPrefixMap[KV.first] = KV.second; + EmitFileChecksums = CGM.getCodeGenOpts().EmitCodeView || + CGM.getCodeGenOpts().DwarfVersion >= 5; CreateCompileUnit(); } @@ -365,15 +367,21 @@ Optional CGDebugInfo::computeChecksum(FileID FID, SmallString<32> &Checksum) const { Checksum.clear(); - if (!CGM.getCodeGenOpts().EmitCodeView && - CGM.getCodeGenOpts().DwarfVersion < 5) + if (!EmitFileChecksums) return None; SourceManager &SM = CGM.getContext().getSourceManager(); bool Invalid; - llvm::MemoryBuffer *MemBuffer = SM.getBuffer(FID, &Invalid); - if (Invalid) + const SrcMgr::SLocEntry &Entry = SM.getSLocEntry(FID, &Invalid); + if (Invalid || !Entry.isFile()) return None; + if (Entry.getFile().hasLineDirectives()) { +// This must be a preprocessed file; its content won't match the original +// source; therefore checksumming the text we have is pointless or wrong. +EmitFileChecksums = false; +return None; + } + llvm::MemoryBuffer *MemBuffer = SM.getBuffer(FID); llvm::MD5 Hash; llvm::MD5::MD5Result Result; Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=11&r1=10&r2=11&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Fri May 25 13:59:29 2018 @@ -57,6 +57,7 @@ class CGDebugInfo { CodeGenModule &CGM; const codegenoptions::DebugInfoKind DebugKind; bool DebugTypeExtRefs; + mutable bool EmitFileChecksums; llvm::DIBuilder DBuilder; llvm::DICompileUnit *TheCU = nullptr; ModuleMap *ClangModuleMap = nullptr; Added: cfe/trunk/test/CodeGen/md5-checksum-crash.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/md5-checksum-crash.c?rev=11&view=auto == --- cfe/trunk/test/CodeGen/md5-checksum-crash.c (added) +++ cfe/trunk/test/CodeGen/md5-checksum-crash.c Fri May 25 13:59:29 2018 @@ -0,0 +1,13 @@ +// RUN: %clang_cc1 -triple %itanium_abi_triple -debug-info-kind=limited -dwarf-version=5 %s -emit-llvm -o- | FileCheck %s +// RUN: %clang_cc1 -triple %ms_abi_triple -gcodeview -debug-info-kind=limited %s -emit-llvm -o- | FileCheck %s + +// This had been crashing, no MD5 checksum for string.h. +// Now if there are #line directives, don't bother with checksums +// as a preprocessed file won't properly reflect the original source. +#define __NTH fct +void fn1() {} +# 7 "/usr/include/string.h" +void __NTH() {} +// Verify no checksum attributes on these files. +// CHECK-DAG: DIFile(filename: "{{.*}}.c", directory: "{{[^"]*}}") +// CHECK-DAG: DIFile(filename: "{{.*}}string.h", directory: "{{[^"]*}}") ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r333319 - Revert "[DebugInfo] Don't bother with MD5 checksums of preprocessed files."
Author: probinson Date: Fri May 25 15:35:59 2018 New Revision: 19 URL: http://llvm.org/viewvc/llvm-project?rev=19&view=rev Log: Revert "[DebugInfo] Don't bother with MD5 checksums of preprocessed files." This reverts commit d734f2aa3f76fbf355ecd2bbe081d0c1f49867ab. Also known as r11. A very small but nonzero number of bots fail. Removed: cfe/trunk/test/CodeGen/md5-checksum-crash.c Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/lib/CodeGen/CGDebugInfo.h Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=19&r1=18&r2=19&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Fri May 25 15:35:59 2018 @@ -67,8 +67,6 @@ CGDebugInfo::CGDebugInfo(CodeGenModule & DBuilder(CGM.getModule()) { for (const auto &KV : CGM.getCodeGenOpts().DebugPrefixMap) DebugPrefixMap[KV.first] = KV.second; - EmitFileChecksums = CGM.getCodeGenOpts().EmitCodeView || - CGM.getCodeGenOpts().DwarfVersion >= 5; CreateCompileUnit(); } @@ -367,21 +365,15 @@ Optional CGDebugInfo::computeChecksum(FileID FID, SmallString<32> &Checksum) const { Checksum.clear(); - if (!EmitFileChecksums) + if (!CGM.getCodeGenOpts().EmitCodeView && + CGM.getCodeGenOpts().DwarfVersion < 5) return None; SourceManager &SM = CGM.getContext().getSourceManager(); bool Invalid; - const SrcMgr::SLocEntry &Entry = SM.getSLocEntry(FID, &Invalid); - if (Invalid || !Entry.isFile()) + llvm::MemoryBuffer *MemBuffer = SM.getBuffer(FID, &Invalid); + if (Invalid) return None; - if (Entry.getFile().hasLineDirectives()) { -// This must be a preprocessed file; its content won't match the original -// source; therefore checksumming the text we have is pointless or wrong. -EmitFileChecksums = false; -return None; - } - llvm::MemoryBuffer *MemBuffer = SM.getBuffer(FID); llvm::MD5 Hash; llvm::MD5::MD5Result Result; Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.h?rev=19&r1=18&r2=19&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.h (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.h Fri May 25 15:35:59 2018 @@ -57,7 +57,6 @@ class CGDebugInfo { CodeGenModule &CGM; const codegenoptions::DebugInfoKind DebugKind; bool DebugTypeExtRefs; - mutable bool EmitFileChecksums; llvm::DIBuilder DBuilder; llvm::DICompileUnit *TheCU = nullptr; ModuleMap *ClangModuleMap = nullptr; Removed: cfe/trunk/test/CodeGen/md5-checksum-crash.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/md5-checksum-crash.c?rev=18&view=auto == --- cfe/trunk/test/CodeGen/md5-checksum-crash.c (original) +++ cfe/trunk/test/CodeGen/md5-checksum-crash.c (removed) @@ -1,13 +0,0 @@ -// RUN: %clang_cc1 -triple %itanium_abi_triple -debug-info-kind=limited -dwarf-version=5 %s -emit-llvm -o- | FileCheck %s -// RUN: %clang_cc1 -triple %ms_abi_triple -gcodeview -debug-info-kind=limited %s -emit-llvm -o- | FileCheck %s - -// This had been crashing, no MD5 checksum for string.h. -// Now if there are #line directives, don't bother with checksums -// as a preprocessed file won't properly reflect the original source. -#define __NTH fct -void fn1() {} -# 7 "/usr/include/string.h" -void __NTH() {} -// Verify no checksum attributes on these files. -// CHECK-DAG: DIFile(filename: "{{.*}}.c", directory: "{{[^"]*}}") -// CHECK-DAG: DIFile(filename: "{{.*}}string.h", directory: "{{[^"]*}}") ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r314444 - [DWARF] Allow forward declarations of a class template instantiation
Author: probinson Date: Thu Sep 28 11:37:02 2017 New Revision: 31 URL: http://llvm.org/viewvc/llvm-project?rev=31&view=rev Log: [DWARF] Allow forward declarations of a class template instantiation to have child entries describing the template parameters. This will be on by default for SCE tuning. Differential Revision: https://reviews.llvm.org/D14358 Added: cfe/trunk/test/CodeGenCXX/debug-info-fwd-template-param.cpp Modified: cfe/trunk/include/clang/Driver/CC1Options.td cfe/trunk/include/clang/Frontend/CodeGenOptions.def cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/lib/Driver/ToolChains/Clang.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp Modified: cfe/trunk/include/clang/Driver/CC1Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=31&r1=314443&r2=31&view=diff == --- cfe/trunk/include/clang/Driver/CC1Options.td (original) +++ cfe/trunk/include/clang/Driver/CC1Options.td Thu Sep 28 11:37:02 2017 @@ -200,6 +200,9 @@ def arange_sections : Flag<["-"], "arang def dwarf_ext_refs : Flag<["-"], "dwarf-ext-refs">, HelpText<"Generate debug info with external references to clang modules" " or precompiled headers">; +def debug_forward_template_params : Flag<["-"], "debug-forward-template-params">, + HelpText<"Emit complete descriptions of template parameters in forward" + " declarations">; def fforbid_guard_variables : Flag<["-"], "fforbid-guard-variables">, HelpText<"Emit an error if a C++ static local initializer would need a guard variable">; def no_implicit_float : Flag<["-"], "no-implicit-float">, Modified: cfe/trunk/include/clang/Frontend/CodeGenOptions.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CodeGenOptions.def?rev=31&r1=314443&r2=31&view=diff == --- cfe/trunk/include/clang/Frontend/CodeGenOptions.def (original) +++ cfe/trunk/include/clang/Frontend/CodeGenOptions.def Thu Sep 28 11:37:02 2017 @@ -219,6 +219,10 @@ CODEGENOPT(EnableSplitDwarf, 1, 0) ///< CODEGENOPT(SplitDwarfInlining, 1, 1) ///< Whether to include inlining info in the ///< skeleton CU to allow for symbolication ///< of inline stack frames without .dwo files. +CODEGENOPT(DebugFwdTemplateParams, 1, 0) ///< Whether to emit complete + ///< template parameter descriptions in + ///< forward declarations (versus just + ///< including them in the name). CODEGENOPT(EmitLLVMUseLists, 1, 0) ///< Control whether to serialize use-lists. Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=31&r1=314443&r2=31&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Thu Sep 28 11:37:02 2017 @@ -833,6 +833,10 @@ CGDebugInfo::getOrCreateRecordFwdDecl(co llvm::DICompositeType *RetTy = DBuilder.createReplaceableCompositeType( getTagForRecord(RD), RDName, Ctx, DefUnit, Line, 0, Size, Align, llvm::DINode::FlagFwdDecl, FullName); + if (CGM.getCodeGenOpts().DebugFwdTemplateParams) +if (auto *TSpecial = dyn_cast(RD)) + DBuilder.replaceArrays(RetTy, llvm::DINodeArray(), + CollectCXXTemplateParams(TSpecial, DefUnit)); ReplaceMap.emplace_back( std::piecewise_construct, std::make_tuple(Ty), std::make_tuple(static_cast(RetTy))); Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=31&r1=314443&r2=31&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Thu Sep 28 11:37:02 2017 @@ -2969,6 +2969,11 @@ static void RenderDebugOptions(const Too CmdArgs.push_back("-generate-type-units"); } + // Decide how to render forward declarations of template instantiations. + // SCE wants full descriptions, others just get them in the name. + if (DebuggerTuning == llvm::DebuggerKind::SCE) +CmdArgs.push_back("-debug-forward-template-params"); + RenderDebugInfoCompressionArgs(Args, CmdArgs, D); } Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=31&r1=314443&r2=31&view=diff == --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/li
r314558 - [PS4] Tidy up some debug-tuning v. triple decision-making.
Author: probinson Date: Fri Sep 29 14:25:07 2017 New Revision: 314558 URL: http://llvm.org/viewvc/llvm-project?rev=314558&view=rev Log: [PS4] Tidy up some debug-tuning v. triple decision-making. Modified: cfe/trunk/include/clang/Driver/CC1Options.td cfe/trunk/lib/Driver/ToolChains/Clang.cpp cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/test/CodeGenCXX/debug-info-anon-namespace.cpp cfe/trunk/test/Driver/debug-options.c Modified: cfe/trunk/include/clang/Driver/CC1Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=314558&r1=314557&r2=314558&view=diff == --- cfe/trunk/include/clang/Driver/CC1Options.td (original) +++ cfe/trunk/include/clang/Driver/CC1Options.td Fri Sep 29 14:25:07 2017 @@ -200,6 +200,9 @@ def arange_sections : Flag<["-"], "arang def dwarf_ext_refs : Flag<["-"], "dwarf-ext-refs">, HelpText<"Generate debug info with external references to clang modules" " or precompiled headers">; +def dwarf_explicit_import : Flag<["-"], "dwarf-explicit-import">, + HelpText<"Generate explicit import from anonymous namespace to containing" + " scope">; def debug_forward_template_params : Flag<["-"], "debug-forward-template-params">, HelpText<"Emit complete descriptions of template parameters in forward" " declarations">; Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=314558&r1=314557&r2=314558&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Fri Sep 29 14:25:07 2017 @@ -2816,8 +2816,6 @@ static void RenderDebugOptions(const Too ArgStringList &CmdArgs, codegenoptions::DebugInfoKind &DebugInfoKind, const Arg *&SplitDWARFArg) { - bool IsPS4CPU = T.isPS4CPU(); - if (Args.hasFlag(options::OPT_fdebug_info_for_profiling, options::OPT_fno_debug_info_for_profiling, false)) CmdArgs.push_back("-fdebug-info-for-profiling"); @@ -2900,13 +2898,14 @@ static void RenderDebugOptions(const Too // And we handle flag -grecord-gcc-switches later with DWARFDebugFlags. Args.ClaimAllArgs(options::OPT_g_flags_Group); - // Column info is included by default for everything except PS4 and CodeView. + // Column info is included by default for everything except SCE and CodeView. // Clang doesn't track end columns, just starting columns, which, in theory, // is fine for CodeView (and PDB). In practice, however, the Microsoft // debuggers don't handle missing end columns well, so it's better not to // include any column info. if (Args.hasFlag(options::OPT_gcolumn_info, options::OPT_gno_column_info, - /*Default=*/ !IsPS4CPU && !(IsWindowsMSVC && EmitCodeView))) + /*Default=*/!(IsWindowsMSVC && EmitCodeView) && + DebuggerTuning != llvm::DebuggerKind::SCE)) CmdArgs.push_back("-dwarf-column-info"); // FIXME: Move backend command line options to the module. @@ -2957,8 +2956,9 @@ static void RenderDebugOptions(const Too // -gdwarf-aranges turns on the emission of the aranges section in the // backend. - // Always enabled on the PS4. - if (Args.hasArg(options::OPT_gdwarf_aranges) || IsPS4CPU) { + // Always enabled for SCE tuning. + if (Args.hasArg(options::OPT_gdwarf_aranges) || + DebuggerTuning == llvm::DebuggerKind::SCE) { CmdArgs.push_back("-backend-option"); CmdArgs.push_back("-generate-arange-section"); } @@ -2974,6 +2974,10 @@ static void RenderDebugOptions(const Too if (DebuggerTuning == llvm::DebuggerKind::SCE) CmdArgs.push_back("-debug-forward-template-params"); + // Do we need to explicitly import anonymous namespaces into the parent scope? + if (DebuggerTuning == llvm::DebuggerKind::SCE) +CmdArgs.push_back("-dwarf-explicit-import"); + RenderDebugInfoCompressionArgs(Args, CmdArgs, D); } Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=314558&r1=314557&r2=314558&view=diff == --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Fri Sep 29 14:25:07 2017 @@ -527,7 +527,7 @@ static bool ParseCodeGenArgs(CodeGenOpti Opts.SplitDwarfFile = Args.getLastArgValue(OPT_split_dwarf_file); Opts.SplitDwarfInlining = !Args.hasArg(OPT_fno_split_dwarf_inlining); Opts.DebugTypeExtRefs = Args.hasArg(OPT_dwarf_ext_refs); - Opts.DebugExplicitImport = Triple.isPS4CPU(); + Opts.DebugExplicitImport = Args.hasArg(OPT_dwarf_expli
r315078 - For Windows, allow .exe extension in a test.
Author: probinson Date: Fri Oct 6 10:12:28 2017 New Revision: 315078 URL: http://llvm.org/viewvc/llvm-project?rev=315078&view=rev Log: For Windows, allow .exe extension in a test. Modified: cfe/trunk/test/Driver/baremetal.cpp Modified: cfe/trunk/test/Driver/baremetal.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/baremetal.cpp?rev=315078&r1=315077&r2=315078&view=diff == --- cfe/trunk/test/Driver/baremetal.cpp (original) +++ cfe/trunk/test/Driver/baremetal.cpp Fri Oct 6 10:12:28 2017 @@ -10,7 +10,7 @@ // CHECK-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" // CHECk-V6M-C-SAME: "-internal-isystem" "[[SYSROOT]]{{[/\\]+}}include" // CHECK-V6M-C-SAME: "-x" "c++" "{{.*}}baremetal.cpp" -// CHECK-V6M-C-NEXT: "{{[^"]*}}ld.lld" "{{.*}}.o" "-Bstatic" +// CHECK-V6M-C-NEXT: "{{[^"]*}}ld.lld{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" // CHECK-V6M-C-SAME: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}baremetal" // CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for" // CHECK-V6M-C-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a" @@ -32,7 +32,7 @@ // RUN: -target armv6m-none-eabi \ // RUN: --sysroot=%S/Inputs/baremetal_arm \ // RUN: | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s -// CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld.lld" "{{.*}}.o" "-Bstatic" +// CHECK-V6M-DEFAULTCXX: "{{[^"]*}}ld.lld{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" // CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal" // CHECK-V6M-DEFAULTCXX-SAME: "-lc++" "-lc++abi" "-lunwind" // CHECK-V6M-DEFAULTCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a" @@ -45,7 +45,7 @@ // RUN: | FileCheck --check-prefix=CHECK-V6M-LIBCXX %s // CHECK-V6M-LIBCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}{{[^v].*}}" // CHECK-V6M-LIBCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" -// CHECK-V6M-LIBCXX: "{{[^"]*}}ld.lld" "{{.*}}.o" "-Bstatic" +// CHECK-V6M-LIBCXX: "{{[^"]*}}ld.lld{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" // CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal" // CHECK-V6M-LIBCXX-SAME: "-lc++" "-lc++abi" "-lunwind" // CHECK-V6M-LIBCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a" @@ -58,7 +58,7 @@ // RUN: | FileCheck --check-prefix=CHECK-V6M-LIBSTDCXX %s // CHECK-V6M-LIBSTDCXX-NOT: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}v1" // CHECK-V6M-LIBSTDCXX: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}6.0.0" -// CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld.lld" "{{.*}}.o" "-Bstatic" +// CHECK-V6M-LIBSTDCXX: "{{[^"]*}}ld.lld{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" // CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal" // CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lsupc++" "-lunwind" // CHECK-V6M-LIBSTDCXX-SAME: "-lc" "-lm" "-lclang_rt.builtins-armv6m.a" @@ -69,7 +69,7 @@ // RUN: --sysroot=%S/Inputs/baremetal_arm \ // RUN: -nodefaultlibs \ // RUN: | FileCheck --check-prefix=CHECK-V6M-NDL %s -// CHECK-V6M-NDL: "{{[^"]*}}ld.lld" "{{.*}}.o" "-Bstatic" +// CHECK-V6M-NDL: "{{[^"]*}}ld.lld{{(\.exe)?}}" "{{.*}}.o" "-Bstatic" // CHECK-V6M-NDL-SAME: "-L{{[^"]*}}{{[/\\]+}}lib{{(64)?}}{{[/\\]+}}clang{{[/\\]+}}{{.*}}{{[/\\]+}}lib{{[/\\]+}}baremetal" "-o" "{{.*}}.o" // RUN: %clangxx -target arm-none-eabi -v 2>&1 \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r325920 - Revert "[Darwin] Add a test to check clang produces accelerator tables."
Author: probinson Date: Fri Feb 23 08:36:48 2018 New Revision: 325920 URL: http://llvm.org/viewvc/llvm-project?rev=325920&view=rev Log: Revert "[Darwin] Add a test to check clang produces accelerator tables." This reverts commit 7e24e5f8bff77b7e78da3bfcc68abf42457a66c9. aka r325850. Clang should not have end-to-end tests. Removed: cfe/trunk/test/CodeGen/debug-info-section-macho.c Removed: cfe/trunk/test/CodeGen/debug-info-section-macho.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info-section-macho.c?rev=325919&view=auto == --- cfe/trunk/test/CodeGen/debug-info-section-macho.c (original) +++ cfe/trunk/test/CodeGen/debug-info-section-macho.c (removed) @@ -1,16 +0,0 @@ -// Test that clang produces the __apple accelerator tables, -// e.g., __apple_types, correctly. -// RUN: %clang %s -target x86_64-apple-macosx10.13.0 -c -g -o %t-ex -// RUN: llvm-objdump -section-headers %t-ex | FileCheck %s - -int main (int argc, char const *argv[]) { return argc; } - -// CHECK: __debug_str -// CHECK-NEXT: __debug_abbrev -// CHECK-NEXT: __debug_info -// CHECK-NEXT: __debug_ranges -// CHECK-NEXT: __debug_macinfo -// CHECK-NEXT: __apple_names -// CHECK-NEXT: __apple_objc -// CHECK-NEXT: __apple_namespac -// CHECK-NEXT: __apple_types ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r321312 - [AST] Incorrectly qualified unscoped enumeration as template actual parameter.
Author: probinson Date: Thu Dec 21 13:47:22 2017 New Revision: 321312 URL: http://llvm.org/viewvc/llvm-project?rev=321312&view=rev Log: [AST] Incorrectly qualified unscoped enumeration as template actual parameter. An unscoped enumeration used as template argument, should not have any qualified information about its enclosing scope, as its visibility is global. In the case of scoped enumerations, they must include information about their enclosing scope. Patch by Carlos Alberto Enciso! Differential Revision: https://reviews.llvm.org/D39239 Added: cfe/trunk/test/SemaTemplate/temp_arg_enum_printing_more.cpp Modified: cfe/trunk/lib/AST/Decl.cpp cfe/trunk/test/Modules/odr.cpp cfe/trunk/test/SemaCXX/return-noreturn.cpp cfe/trunk/test/SemaTemplate/temp_arg_enum_printing.cpp cfe/trunk/unittests/AST/NamedDeclPrinterTest.cpp Modified: cfe/trunk/lib/AST/Decl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=321312&r1=321311&r2=321312&view=diff == --- cfe/trunk/lib/AST/Decl.cpp (original) +++ cfe/trunk/lib/AST/Decl.cpp Thu Dec 21 13:47:22 2017 @@ -1548,7 +1548,10 @@ void NamedDecl::printQualifiedName(raw_o // enumerator is declared in the scope that immediately contains // the enum-specifier. Each scoped enumerator is declared in the // scope of the enumeration. - if (ED->isScoped() || ED->getIdentifier()) + // For the case of unscoped enumerator, do not include in the qualified + // name any information about its enum enclosing scope, as is visibility + // is global. + if (ED->isScoped()) OS << *ED; else continue; Modified: cfe/trunk/test/Modules/odr.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/odr.cpp?rev=321312&r1=321311&r2=321312&view=diff == --- cfe/trunk/test/Modules/odr.cpp (original) +++ cfe/trunk/test/Modules/odr.cpp Thu Dec 21 13:47:22 2017 @@ -18,6 +18,6 @@ int x = f() + g(); // expected-note@a.h:3 {{declaration of 'f' does not match}} // expected-note@a.h:1 {{definition has no member 'm'}} -// expected-error@b.h:5 {{'E::e2' from module 'b' is not present in definition of 'E' in module 'a'}} +// expected-error@b.h:5 {{'e2' from module 'b' is not present in definition of 'E' in module 'a'}} // expected-error@b.h:3 {{'Y::f' from module 'b' is not present in definition of 'Y' in module 'a'}} // expected-error@b.h:2 {{'Y::m' from module 'b' is not present in definition of 'Y' in module 'a'}} Modified: cfe/trunk/test/SemaCXX/return-noreturn.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/return-noreturn.cpp?rev=321312&r1=321311&r2=321312&view=diff == --- cfe/trunk/test/SemaCXX/return-noreturn.cpp (original) +++ cfe/trunk/test/SemaCXX/return-noreturn.cpp Thu Dec 21 13:47:22 2017 @@ -143,7 +143,7 @@ template int PR9 } // expected-warning {{control reaches end of non-void function}} void PR9412_f() { -PR9412_t(); // expected-note {{in instantiation of function template specialization 'PR9412_t' requested here}} +PR9412_t(); // expected-note {{in instantiation of function template specialization 'PR9412_t' requested here}} } struct NoReturn { Modified: cfe/trunk/test/SemaTemplate/temp_arg_enum_printing.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/temp_arg_enum_printing.cpp?rev=321312&r1=321311&r2=321312&view=diff == --- cfe/trunk/test/SemaTemplate/temp_arg_enum_printing.cpp (original) +++ cfe/trunk/test/SemaTemplate/temp_arg_enum_printing.cpp Thu Dec 21 13:47:22 2017 @@ -13,9 +13,9 @@ template void foo(); void test() { - // CHECK: template<> void foo() + // CHECK: template<> void foo() NamedEnumNS::foo(); - // CHECK: template<> void foo() + // CHECK: template<> void foo() NamedEnumNS::foo<(NamedEnum)1>(); // CHECK: template<> void foo<2>() NamedEnumNS::foo<(NamedEnum)2>(); Added: cfe/trunk/test/SemaTemplate/temp_arg_enum_printing_more.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/temp_arg_enum_printing_more.cpp?rev=321312&view=auto == --- cfe/trunk/test/SemaTemplate/temp_arg_enum_printing_more.cpp (added) +++ cfe/trunk/test/SemaTemplate/temp_arg_enum_printing_more.cpp Thu Dec 21 13:47:22 2017 @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -fsyntax-only -ast-print %s -std=c++11 | FileCheck %s + +// Make sure that for template value arguments that are unscoped enumerators, +// no qualified enum information is included in their name, as their visibility +// is global. In the case of scoped enumerators, they must include information +// about their enum enclosing scope. +
[clang-tools-extra] r321323 - Update test after r321312
Author: probinson Date: Thu Dec 21 15:19:25 2017 New Revision: 321323 URL: http://llvm.org/viewvc/llvm-project?rev=321323&view=rev Log: Update test after r321312 Modified: clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp Modified: clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp?rev=321323&r1=321322&r2=321323&view=diff == --- clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp (original) +++ clang-tools-extra/trunk/unittests/change-namespace/ChangeNamespaceTests.cpp Thu Dec 21 15:19:25 2017 @@ -1891,7 +1891,7 @@ TEST_F(ChangeNamespaceTest, ReferencesTo " Glob g2 = G2;\n" " na::X x1 = na::X::X1;\n" " na::Y y1 = na::Y::Y1;\n" - " na::Y y2 = na::Y::Y2;\n" + " na::Y y2 = na::Y2;\n" "}\n" "} // namespace y\n" "} // namespace x\n"; @@ -1923,8 +1923,7 @@ TEST_F(ChangeNamespaceTest, NoRedundantE "void f() {\n" " ns::X x1 = ns::X::X1;\n" " ns::Y y1 = ns::Y::Y1;\n" - // FIXME: this is redundant - " ns::Y y2 = ns::Y::Y2;\n" + " ns::Y y2 = ns::Y2;\n" "}\n" "} // namespace y\n" "} // namespace x\n"; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r321457 - Fix comment typo in r321312.
Author: probinson Date: Tue Dec 26 10:01:19 2017 New Revision: 321457 URL: http://llvm.org/viewvc/llvm-project?rev=321457&view=rev Log: Fix comment typo in r321312. Post-commit review by Kim Grasman! Modified: cfe/trunk/lib/AST/Decl.cpp Modified: cfe/trunk/lib/AST/Decl.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Decl.cpp?rev=321457&r1=321456&r2=321457&view=diff == --- cfe/trunk/lib/AST/Decl.cpp (original) +++ cfe/trunk/lib/AST/Decl.cpp Tue Dec 26 10:01:19 2017 @@ -1550,7 +1550,7 @@ void NamedDecl::printQualifiedName(raw_o // the enum-specifier. Each scoped enumerator is declared in the // scope of the enumeration. // For the case of unscoped enumerator, do not include in the qualified - // name any information about its enum enclosing scope, as is visibility + // name any information about its enum enclosing scope, as its visibility // is global. if (ED->isScoped()) OS << *ED; ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r321757 - Calculate size of buffer instead of using a magic value.
Author: probinson Date: Wed Jan 3 12:29:49 2018 New Revision: 321757 URL: http://llvm.org/viewvc/llvm-project?rev=321757&view=rev Log: Calculate size of buffer instead of using a magic value. Patch by Matthew Davis! Differential Revision: https://reviews.llvm.org/D41421 Modified: cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp Modified: cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp?rev=321757&r1=321756&r2=321757&view=diff == --- cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp (original) +++ cfe/trunk/lib/Frontend/PrintPreprocessedOutput.cpp Wed Jan 3 12:29:49 2018 @@ -752,7 +752,7 @@ static void PrintPreprocessedTokens(Prep } else if (Tok.isLiteral() && !Tok.needsCleaning() && Tok.getLiteralData()) { OS.write(Tok.getLiteralData(), Tok.getLength()); -} else if (Tok.getLength() < 256) { +} else if (Tok.getLength() < llvm::array_lengthof(Buffer)) { const char *TokPtr = Buffer; unsigned Len = PP.getSpelling(Tok, TokPtr); OS.write(TokPtr, Len); ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libcxxabi] r334936 - Update copyright year to 2018.
Author: probinson Date: Mon Jun 18 05:22:17 2018 New Revision: 334936 URL: http://llvm.org/viewvc/llvm-project?rev=334936&view=rev Log: Update copyright year to 2018. Modified: libcxxabi/trunk/LICENSE.TXT Modified: libcxxabi/trunk/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/libcxxabi/trunk/LICENSE.TXT?rev=334936&r1=334935&r2=334936&view=diff == --- libcxxabi/trunk/LICENSE.TXT (original) +++ libcxxabi/trunk/LICENSE.TXT Mon Jun 18 05:22:17 2018 @@ -14,7 +14,7 @@ Full text of the relevant licenses is in University of Illinois/NCSA Open Source License -Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT All rights reserved. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] r334936 - Update copyright year to 2018.
Author: probinson Date: Mon Jun 18 05:22:17 2018 New Revision: 334936 URL: http://llvm.org/viewvc/llvm-project?rev=334936&view=rev Log: Update copyright year to 2018. Modified: clang-tools-extra/trunk/LICENSE.TXT clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/license.txt Modified: clang-tools-extra/trunk/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/LICENSE.TXT?rev=334936&r1=334935&r2=334936&view=diff == --- clang-tools-extra/trunk/LICENSE.TXT (original) +++ clang-tools-extra/trunk/LICENSE.TXT Mon Jun 18 05:22:17 2018 @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2007-2016 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/license.txt URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/license.txt?rev=334936&r1=334935&r2=334936&view=diff == --- clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/license.txt (original) +++ clang-tools-extra/trunk/clang-tidy-vs/ClangTidy/license.txt Mon Jun 18 05:22:17 2018 @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2007-2016 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libclc] r334936 - Update copyright year to 2018.
Author: probinson Date: Mon Jun 18 05:22:17 2018 New Revision: 334936 URL: http://llvm.org/viewvc/llvm-project?rev=334936&view=rev Log: Update copyright year to 2018. Modified: libclc/trunk/LICENSE.TXT Modified: libclc/trunk/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/libclc/trunk/LICENSE.TXT?rev=334936&r1=334935&r2=334936&view=diff == --- libclc/trunk/LICENSE.TXT (original) +++ libclc/trunk/LICENSE.TXT Mon Jun 18 05:22:17 2018 @@ -11,7 +11,7 @@ Full text of the relevant licenses is in == -Copyright (c) 2011-2016 by the contributors listed in CREDITS.TXT +Copyright (c) 2011-2018 by the contributors listed in CREDITS.TXT All rights reserved. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r334936 - Update copyright year to 2018.
Author: probinson Date: Mon Jun 18 05:22:17 2018 New Revision: 334936 URL: http://llvm.org/viewvc/llvm-project?rev=334936&view=rev Log: Update copyright year to 2018. Modified: cfe/trunk/LICENSE.TXT cfe/trunk/tools/clang-format-vs/ClangFormat/license.txt Modified: cfe/trunk/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/LICENSE.TXT?rev=334936&r1=334935&r2=334936&view=diff == --- cfe/trunk/LICENSE.TXT (original) +++ cfe/trunk/LICENSE.TXT Mon Jun 18 05:22:17 2018 @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2007-2016 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: Modified: cfe/trunk/tools/clang-format-vs/ClangFormat/license.txt URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-format-vs/ClangFormat/license.txt?rev=334936&r1=334935&r2=334936&view=diff == --- cfe/trunk/tools/clang-format-vs/ClangFormat/license.txt (original) +++ cfe/trunk/tools/clang-format-vs/ClangFormat/license.txt Mon Jun 18 05:22:17 2018 @@ -4,7 +4,7 @@ LLVM Release License University of Illinois/NCSA Open Source License -Copyright (c) 2007-2017 University of Illinois at Urbana-Champaign. +Copyright (c) 2007-2018 University of Illinois at Urbana-Champaign. All rights reserved. Developed by: ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[libunwind] r334936 - Update copyright year to 2018.
Author: probinson Date: Mon Jun 18 05:22:17 2018 New Revision: 334936 URL: http://llvm.org/viewvc/llvm-project?rev=334936&view=rev Log: Update copyright year to 2018. Modified: libunwind/trunk/LICENSE.TXT Modified: libunwind/trunk/LICENSE.TXT URL: http://llvm.org/viewvc/llvm-project/libunwind/trunk/LICENSE.TXT?rev=334936&r1=334935&r2=334936&view=diff == --- libunwind/trunk/LICENSE.TXT (original) +++ libunwind/trunk/LICENSE.TXT Mon Jun 18 05:22:17 2018 @@ -14,7 +14,7 @@ Full text of the relevant licenses is in University of Illinois/NCSA Open Source License -Copyright (c) 2009-2017 by the contributors listed in CREDITS.TXT +Copyright (c) 2009-2018 by the contributors listed in CREDITS.TXT All rights reserved. ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r352542 - [cc1as] Test that -g of empty .s file does something sensible.
Author: probinson Date: Tue Jan 29 12:57:50 2019 New Revision: 352542 URL: http://llvm.org/viewvc/llvm-project?rev=352542&view=rev Log: [cc1as] Test that -g of empty .s file does something sensible. Depends on LLVM r352541. Added: cfe/trunk/test/Misc/cc1as-asm-debug.s Added: cfe/trunk/test/Misc/cc1as-asm-debug.s URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/cc1as-asm-debug.s?rev=352542&view=auto == --- cfe/trunk/test/Misc/cc1as-asm-debug.s (added) +++ cfe/trunk/test/Misc/cc1as-asm-debug.s Tue Jan 29 12:57:50 2019 @@ -0,0 +1,11 @@ +// Run cc1as with debug on empty file. Needs a known name so we can check it. +// REQUIRES: x86-registered-target +// RUN: rm -rf %t && mkdir -p %t +// RUN: cp %s %t/comment.s +// RUN: %clang -cc1as -triple x86_64-linux-gnu -filetype asm -debug-info-kind=limited -dwarf-version=4 %t/comment.s | FileCheck %s +// RUN: %clang -cc1as -triple x86_64-linux-gnu -filetype asm -debug-info-kind=limited -dwarf-version=5 %t/comment.s | FileCheck %s +// Asm output actually emits the .section directives twice. +// CHECK: {{\.}}section .debug_info +// CHECK: {{\.}}section .debug_info +// CHECK-NOT: {{\.}}section +// CHECK: .ascii "comment.s" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r347239 - [DebugInfo] DISubprogram flags get their own flags word. NFC.
Author: probinson Date: Mon Nov 19 10:29:28 2018 New Revision: 347239 URL: http://llvm.org/viewvc/llvm-project?rev=347239&view=rev Log: [DebugInfo] DISubprogram flags get their own flags word. NFC. This will hold flags specific to subprograms. In the future we could potentially free up scarce bits in DIFlags by moving subprogram-specific flags from there to the new flags word. This patch does not change IR/bitcode formats, that will be done in a follow-up. Differential Revision: https://reviews.llvm.org/D54597 Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=347239&r1=347238&r2=347239&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Mon Nov 19 10:29:28 2018 @@ -1494,16 +1494,16 @@ llvm::DISubprogram *CGDebugInfo::CreateC // Collect virtual method info. llvm::DIType *ContainingType = nullptr; - unsigned Virtuality = 0; unsigned VIndex = 0; llvm::DINode::DIFlags Flags = llvm::DINode::FlagZero; + llvm::DISubprogram::DISPFlags SPFlags = llvm::DISubprogram::SPFlagZero; int ThisAdjustment = 0; if (Method->isVirtual()) { if (Method->isPure()) - Virtuality = llvm::dwarf::DW_VIRTUALITY_pure_virtual; + SPFlags |= llvm::DISubprogram::SPFlagPureVirtual; else - Virtuality = llvm::dwarf::DW_VIRTUALITY_virtual; + SPFlags |= llvm::DISubprogram::SPFlagVirtual; if (CGM.getTarget().getCXXABI().isItaniumFamily()) { // It doesn't make sense to give a virtual destructor a vtable index, @@ -1555,12 +1555,13 @@ llvm::DISubprogram *CGDebugInfo::CreateC Flags |= llvm::DINode::FlagLValueReference; if (Method->getRefQualifier() == RQ_RValue) Flags |= llvm::DINode::FlagRValueReference; + if (CGM.getLangOpts().Optimize) +SPFlags |= llvm::DISubprogram::SPFlagOptimized; llvm::DINodeArray TParamsArray = CollectFunctionTemplateParams(Method, Unit); llvm::DISubprogram *SP = DBuilder.createMethod( RecordTy, MethodName, MethodLinkageName, MethodDefUnit, MethodLine, - MethodTy, /*isLocalToUnit=*/false, /*isDefinition=*/false, Virtuality, - VIndex, ThisAdjustment, ContainingType, Flags, CGM.getLangOpts().Optimize, + MethodTy, VIndex, ThisAdjustment, ContainingType, Flags, SPFlags, TParamsArray.get()); SPCache[Method->getCanonicalDecl()].reset(SP); @@ -3168,6 +3169,7 @@ llvm::DISubprogram *CGDebugInfo::getFunc llvm::DINodeArray TParamsArray; StringRef Name, LinkageName; llvm::DINode::DIFlags Flags = llvm::DINode::FlagZero; + llvm::DISubprogram::DISPFlags SPFlags = llvm::DISubprogram::SPFlagZero; SourceLocation Loc = GD.getDecl()->getLocation(); llvm::DIFile *Unit = getOrCreateFile(Loc); llvm::DIScope *DContext = Unit; @@ -3184,21 +3186,23 @@ llvm::DISubprogram *CGDebugInfo::getFunc CallingConv CC = FD->getType()->castAs()->getCallConv(); QualType FnType = CGM.getContext().getFunctionType( FD->getReturnType(), ArgTypes, FunctionProtoType::ExtProtoInfo(CC)); + if (!FD->isExternallyVisible()) +SPFlags |= llvm::DISubprogram::SPFlagLocalToUnit; + if (CGM.getLangOpts().Optimize) +SPFlags |= llvm::DISubprogram::SPFlagOptimized; + if (Stub) { Flags |= getCallSiteRelatedAttrs(); +SPFlags |= llvm::DISubprogram::SPFlagDefinition; return DBuilder.createFunction( DContext, Name, LinkageName, Unit, Line, -getOrCreateFunctionType(GD.getDecl(), FnType, Unit), -!FD->isExternallyVisible(), -/* isDefinition = */ true, 0, Flags, CGM.getLangOpts().Optimize, +getOrCreateFunctionType(GD.getDecl(), FnType, Unit), 0, Flags, SPFlags, TParamsArray.get(), getFunctionDeclaration(FD)); } llvm::DISubprogram *SP = DBuilder.createTempFunctionFwdDecl( DContext, Name, LinkageName, Unit, Line, - getOrCreateFunctionType(GD.getDecl(), FnType, Unit), - !FD->isExternallyVisible(), - /* isDefinition = */ false, 0, Flags, CGM.getLangOpts().Optimize, + getOrCreateFunctionType(GD.getDecl(), FnType, Unit), 0, Flags, SPFlags, TParamsArray.get(), getFunctionDeclaration(FD)); const FunctionDecl *CanonDecl = FD->getCanonicalDecl(); FwdDeclReplaceMap.emplace_back(std::piecewise_construct, @@ -3386,6 +3390,7 @@ void CGDebugInfo::EmitFunctionStart(Glob bool HasDecl = (D != nullptr); llvm::DINode::DIFlags Flags = llvm::DINode::FlagZero; + llvm::DISubprogram::DISPFlags SPFlags = llvm::DISubprogram::SPFlagZero; llvm::DIFile *Unit = getOrCreateFile(Loc); llvm::DIScope *FDContext = Unit; llvm::DINodeArray TParamsArray; @@ -3425,7 +3430,14 @@ void CGDebugInfo::EmitFunctionStart(Glob if (CurFuncIsThunk) Flags |= llvm::DINode::FlagThunk; + if (Fn->hasLocalLinkage()) +SPFlags |= llvm::DISubprogram::SPFlagLocalToUnit; + if
r347807 - [DebugInfo] NFC Clang test changes for: IR/Bitcode changes for DISubprogram flags.
Author: probinson Date: Wed Nov 28 13:18:07 2018 New Revision: 347807 URL: http://llvm.org/viewvc/llvm-project?rev=347807&view=rev Log: [DebugInfo] NFC Clang test changes for: IR/Bitcode changes for DISubprogram flags. Differential Revision: https://reviews.llvm.org/D54756 Modified: cfe/trunk/test/CodeGen/debug-info-scope-file.c cfe/trunk/test/CodeGenCXX/PR20038.cpp cfe/trunk/test/CodeGenCXX/dbg-info-all-calls-described.cpp cfe/trunk/test/CodeGenCXX/debug-info-access.cpp cfe/trunk/test/CodeGenCXX/debug-info-blocks.cpp cfe/trunk/test/CodeGenCXX/debug-info-cxx1y.cpp cfe/trunk/test/CodeGenCXX/debug-info-decl-nested.cpp cfe/trunk/test/CodeGenCXX/debug-info-function-context.cpp cfe/trunk/test/CodeGenCXX/debug-info-global-ctor-dtor.cpp cfe/trunk/test/CodeGenCXX/debug-info-inlined.cpp cfe/trunk/test/CodeGenCXX/debug-info-ms-abi.cpp cfe/trunk/test/CodeGenCXX/debug-info-namespace.cpp cfe/trunk/test/CodeGenCXX/debug-info-static-fns.cpp cfe/trunk/test/CodeGenCXX/debug-info-thunk-msabi.cpp cfe/trunk/test/CodeGenCXX/debug-info-thunk.cpp cfe/trunk/test/CodeGenCXX/debug-info.cpp cfe/trunk/test/CodeGenCXX/debug-lambda-expressions.cpp cfe/trunk/test/CodeGenCXX/globalinit-loc.cpp cfe/trunk/test/CodeGenCXX/linetable-fnbegin.cpp cfe/trunk/test/CodeGenObjC/arc-linetable.m cfe/trunk/test/CodeGenObjC/debug-info-category.m cfe/trunk/test/CodeGenObjC/debug-info-synthesis.m cfe/trunk/test/CodeGenObjC/debug-property-synth.m cfe/trunk/test/CodeGenObjC/debuginfo-properties.m Modified: cfe/trunk/test/CodeGen/debug-info-scope-file.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info-scope-file.c?rev=347807&r1=347806&r2=347807&view=diff == --- cfe/trunk/test/CodeGen/debug-info-scope-file.c (original) +++ cfe/trunk/test/CodeGen/debug-info-scope-file.c Wed Nov 28 13:18:07 2018 @@ -5,9 +5,9 @@ // CHECK: ret void, !dbg [[F1_LINE:![0-9]*]] // CHECK: ret void, !dbg [[F2_LINE:![0-9]*]] -// CHECK: [[F1:![0-9]*]] = distinct !DISubprogram(name: "f1",{{.*}} isDefinition: true +// CHECK: [[F1:![0-9]*]] = distinct !DISubprogram(name: "f1",{{.*}} DISPFlagDefinition // CHECK: [[F1_LINE]] = !DILocation({{.*}}, scope: [[F1]]) -// CHECK: [[F2:![0-9]*]] = distinct !DISubprogram(name: "f2",{{.*}} isDefinition: true +// CHECK: [[F2:![0-9]*]] = distinct !DISubprogram(name: "f2",{{.*}} DISPFlagDefinition // CHECK: [[F2_LINE]] = !DILocation({{.*}}, scope: [[F2]]) void f1() { Modified: cfe/trunk/test/CodeGenCXX/PR20038.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/PR20038.cpp?rev=347807&r1=347806&r2=347807&view=diff == --- cfe/trunk/test/CodeGenCXX/PR20038.cpp (original) +++ cfe/trunk/test/CodeGenCXX/PR20038.cpp Wed Nov 28 13:18:07 2018 @@ -6,9 +6,9 @@ struct C { extern bool b; // CHECK: call {{.*}}, !dbg [[DTOR_CALL1_LOC:![0-9]*]] // CHECK: call {{.*}}, !dbg [[DTOR_CALL2_LOC:![0-9]*]] -// CHECK: [[FUN1:.*]] = distinct !DISubprogram(name: "fun1",{{.*}} isDefinition: true +// CHECK: [[FUN1:.*]] = distinct !DISubprogram(name: "fun1",{{.*}} DISPFlagDefinition // CHECK: [[DTOR_CALL1_LOC]] = !DILocation(line: [[@LINE+1]], scope: [[FUN1]]) void fun1() { b && (C(), 1); } -// CHECK: [[FUN2:.*]] = distinct !DISubprogram(name: "fun2",{{.*}} isDefinition: true +// CHECK: [[FUN2:.*]] = distinct !DISubprogram(name: "fun2",{{.*}} DISPFlagDefinition // CHECK: [[DTOR_CALL2_LOC]] = !DILocation(line: [[@LINE+1]], scope: [[FUN2]]) bool fun2() { return (C(), b) && 0; } Modified: cfe/trunk/test/CodeGenCXX/dbg-info-all-calls-described.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/dbg-info-all-calls-described.cpp?rev=347807&r1=347806&r2=347807&view=diff == --- cfe/trunk/test/CodeGenCXX/dbg-info-all-calls-described.cpp (original) +++ cfe/trunk/test/CodeGenCXX/dbg-info-all-calls-described.cpp Wed Nov 28 13:18:07 2018 @@ -36,13 +36,13 @@ // NO-ATTR-NOT: FlagAllCallsDescribed -// HAS-ATTR-DAG: DISubprogram(name: "declaration2", {{.*}}, isDefinition: true, {{.*}}, flags: DIFlagPrototyped | DIFlagAllCallsDescribed -// HAS-ATTR-DAG: DISubprogram(name: "struct1", {{.*}}, isDefinition: false, {{.*}}, flags: DIFlagPrototyped -// HAS-ATTR-DAG: DISubprogram(name: "struct1", {{.*}}, isDefinition: true, {{.*}}, flags: DIFlagPrototyped | DIFlagAllCallsDescribed -// HAS-ATTR-DAG: DISubprogram(name: "method1", {{.*}}, isDefinition: true, {{.*}}, flags: DIFlagPrototyped | DIFlagAllCallsDescribed -// HAS-ATTR-DAG: DISubprogram(name: "force_irgen", {{.*}}, isDefinition: true, {{.*}}, flags: DIFlagPrototyped | DIFlagAllCallsDescribed +// HAS-ATTR-DAG: DISubprogram(name: "declaration2", {{.*}}, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinitio
r355226 - [DWARF] Make -g with empty assembler source work better.
Author: probinson Date: Fri Mar 1 12:58:04 2019 New Revision: 355226 URL: http://llvm.org/viewvc/llvm-project?rev=355226&view=rev Log: [DWARF] Make -g with empty assembler source work better. This was sometimes causing clang or llvm-mc to crash, and in other cases could emit a bogus DWARF line-table header. I did an interim patch in r352541; this patch should be a cleaner and more complete fix, and retains the test. Addresses PR40538. Differential Revision: https://reviews.llvm.org/D58750 Modified: cfe/trunk/test/Misc/cc1as-asm-debug.s cfe/trunk/tools/driver/cc1as_main.cpp Modified: cfe/trunk/test/Misc/cc1as-asm-debug.s URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Misc/cc1as-asm-debug.s?rev=355226&r1=355225&r2=355226&view=diff == --- cfe/trunk/test/Misc/cc1as-asm-debug.s (original) +++ cfe/trunk/test/Misc/cc1as-asm-debug.s Fri Mar 1 12:58:04 2019 @@ -8,4 +8,5 @@ // CHECK: {{\.}}section .debug_info // CHECK: {{\.}}section .debug_info // CHECK-NOT: {{\.}}section -// CHECK: .ascii "comment.s" +// Look for this as a relative path. +// CHECK: .ascii "{{[^\\/].*}}comment.s" Modified: cfe/trunk/tools/driver/cc1as_main.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=355226&r1=355225&r2=355226&view=diff == --- cfe/trunk/tools/driver/cc1as_main.cpp (original) +++ cfe/trunk/tools/driver/cc1as_main.cpp Fri Mar 1 12:58:04 2019 @@ -336,7 +336,7 @@ static bool ExecuteAssembler(AssemblerIn SourceMgr SrcMgr; // Tell SrcMgr about this buffer, which is what the parser will pick up. - SrcMgr.AddNewSourceBuffer(std::move(*Buffer), SMLoc()); + unsigned BufferIndex = SrcMgr.AddNewSourceBuffer(std::move(*Buffer), SMLoc()); // Record the location of the include directories so that the lexer can find // it later. @@ -393,12 +393,21 @@ static bool ExecuteAssembler(AssemblerIn Ctx.setDwarfDebugProducer(StringRef(Opts.DwarfDebugProducer)); if (!Opts.DebugCompilationDir.empty()) Ctx.setCompilationDir(Opts.DebugCompilationDir); + else { +// If no compilation dir is set, try to use the current directory. +SmallString<128> CWD; +if (!sys::fs::current_path(CWD)) + Ctx.setCompilationDir(CWD); + } if (!Opts.DebugPrefixMap.empty()) for (const auto &KV : Opts.DebugPrefixMap) Ctx.addDebugPrefixMapEntry(KV.first, KV.second); if (!Opts.MainFileName.empty()) Ctx.setMainFileName(StringRef(Opts.MainFileName)); Ctx.setDwarfVersion(Opts.DwarfVersion); + if (Opts.GenDwarfForAssembly) +Ctx.setGenDwarfRootFile(Opts.InputFile, +SrcMgr.getMemoryBuffer(BufferIndex)->getBuffer()); // Build up the feature string from the target feature list. std::string FS; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang-tools-extra] r365844 - [clangd] Fix MSVC build failure.
Author: probinson Date: Thu Jul 11 16:48:06 2019 New Revision: 365844 URL: http://llvm.org/viewvc/llvm-project?rev=365844&view=rev Log: [clangd] Fix MSVC build failure. http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/26898 Modified: clang-tools-extra/trunk/clangd/AST.cpp Modified: clang-tools-extra/trunk/clangd/AST.cpp URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/AST.cpp?rev=365844&r1=365843&r2=365844&view=diff == --- clang-tools-extra/trunk/clangd/AST.cpp (original) +++ clang-tools-extra/trunk/clangd/AST.cpp Thu Jul 11 16:48:06 2019 @@ -184,7 +184,7 @@ std::string shortenNamespace(const llvm: DifferentAt++; } - for (u_int i = DifferentAt; i < OriginalParts.size(); ++i) { + for (unsigned i = DifferentAt; i < OriginalParts.size(); ++i) { Result.push_back(OriginalParts[i]); } return join(Result, "::"); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r366699 - [X86] Remove const from some intrinsics that shouldn't have them
Author: probinson Date: Mon Jul 22 09:14:09 2019 New Revision: 366699 URL: http://llvm.org/viewvc/llvm-project?rev=366699&view=rev Log: [X86] Remove const from some intrinsics that shouldn't have them Modified: cfe/trunk/lib/Headers/emmintrin.h Modified: cfe/trunk/lib/Headers/emmintrin.h URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Headers/emmintrin.h?rev=366699&r1=366698&r2=366699&view=diff == --- cfe/trunk/lib/Headers/emmintrin.h (original) +++ cfe/trunk/lib/Headers/emmintrin.h Mon Jul 22 09:14:09 2019 @@ -4029,7 +4029,7 @@ _mm_storeu_si128(__m128i_u *__p, __m128i /// \param __b ///A 128-bit integer vector containing the value to be stored. static __inline__ void __DEFAULT_FN_ATTRS -_mm_storeu_si64(void const *__p, __m128i __b) +_mm_storeu_si64(void *__p, __m128i __b) { struct __storeu_si64 { long long __v; @@ -4050,7 +4050,7 @@ _mm_storeu_si64(void const *__p, __m128i /// \param __b ///A 128-bit integer vector containing the value to be stored. static __inline__ void __DEFAULT_FN_ATTRS -_mm_storeu_si32(void const *__p, __m128i __b) +_mm_storeu_si32(void *__p, __m128i __b) { struct __storeu_si32 { int __v; @@ -4071,7 +4071,7 @@ _mm_storeu_si32(void const *__p, __m128i /// \param __b ///A 128-bit integer vector containing the value to be stored. static __inline__ void __DEFAULT_FN_ATTRS -_mm_storeu_si16(void const *__p, __m128i __b) +_mm_storeu_si16(void *__p, __m128i __b) { struct __storeu_si16 { short __v; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r365402 - Fix line endings. NFC
Author: probinson Date: Mon Jul 8 15:35:30 2019 New Revision: 365402 URL: http://llvm.org/viewvc/llvm-project?rev=365402&view=rev Log: Fix line endings. NFC Modified: cfe/trunk/test/Driver/ps4-analyzer-defaults.cpp Modified: cfe/trunk/test/Driver/ps4-analyzer-defaults.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/ps4-analyzer-defaults.cpp?rev=365402&r1=365401&r2=365402&view=diff == --- cfe/trunk/test/Driver/ps4-analyzer-defaults.cpp (original) +++ cfe/trunk/test/Driver/ps4-analyzer-defaults.cpp Mon Jul 8 15:35:30 2019 @@ -1,33 +1,33 @@ -// Check that the default analyzer checkers for PS4 are: -// core -// cplusplus -// deadcode -// nullability -// unix -// Excluding: -// unix.API -// unix.Vfork - -// Check for expected checkers -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PS4-POS-CHECKERS -// -// Negative check for unexpected checkers -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PS4-NEG-CHECKERS -// -// Check for all unix checkers except API and Vfork -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PS4-UNIX-CHECKERS - -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=core -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=cplusplus -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=deadcode -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=nullability -// -// CHECK-PS4-NEG-CHECKERS-NOT: analyzer-checker={{osx|security}} -// -// CHECK-PS4-UNIX-CHECKERS: analyzer-checker=unix -// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.API -// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.Vfork -// CHECK-PS4-UNIX-CHECKERS-NOT: analyzer-checker=unix.{{API|Vfork}} +// Check that the default analyzer checkers for PS4 are: +// core +// cplusplus +// deadcode +// nullability +// unix +// Excluding: +// unix.API +// unix.Vfork + +// Check for expected checkers +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PS4-POS-CHECKERS +// +// Negative check for unexpected checkers +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PS4-NEG-CHECKERS +// +// Check for all unix checkers except API and Vfork +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PS4-UNIX-CHECKERS + +// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=core +// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=cplusplus +// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=deadcode +// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=nullability +// +// CHECK-PS4-NEG-CHECKERS-NOT: analyzer-checker={{osx|security}} +// +// CHECK-PS4-UNIX-CHECKERS: analyzer-checker=unix +// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.API +// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.Vfork +// CHECK-PS4-UNIX-CHECKERS-NOT: analyzer-checker=unix.{{API|Vfork}} ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r365555 - [CXX] Exercise all paths through these tests.
Author: probinson Date: Tue Jul 9 13:49:07 2019 New Revision: 36 URL: http://llvm.org/viewvc/llvm-project?rev=36&view=rev Log: [CXX] Exercise all paths through these tests. Differential Revision: https://reviews.llvm.org/D63894 Modified: cfe/trunk/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp cfe/trunk/test/SemaCXX/class.cpp cfe/trunk/test/SemaCXX/linkage2.cpp Modified: cfe/trunk/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp?rev=36&r1=365554&r2=36&view=diff == --- cfe/trunk/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp (original) +++ cfe/trunk/test/CXX/dcl.dcl/basic.namespace/namespace.udecl/p4.cpp Tue Jul 9 13:49:07 2019 @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify %s +// RUN: %clang_cc1 -fsyntax-only -verify -std=c++98 %s // RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 %s // C++03 [namespace.udecl]p4: Modified: cfe/trunk/test/SemaCXX/class.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/class.cpp?rev=36&r1=365554&r2=36&view=diff == --- cfe/trunk/test/SemaCXX/class.cpp (original) +++ cfe/trunk/test/SemaCXX/class.cpp Tue Jul 9 13:49:07 2019 @@ -1,4 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify -Wc++11-compat %s +// RUN: %clang_cc1 -fsyntax-only -verify -Wc++11-compat %s -std=c++98 class C { public: auto int errx; // expected-error {{storage class specified for a member declaration}} Modified: cfe/trunk/test/SemaCXX/linkage2.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/linkage2.cpp?rev=36&r1=365554&r2=36&view=diff == --- cfe/trunk/test/SemaCXX/linkage2.cpp (original) +++ cfe/trunk/test/SemaCXX/linkage2.cpp Tue Jul 9 13:49:07 2019 @@ -1,5 +1,5 @@ // RUN: %clang_cc1 -fsyntax-only -verify -std=gnu++11 %s -// RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++11-extensions -Wno-local-type-template-args %s +// RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++11-extensions -Wno-local-type-template-args %s -std=gnu++98 // RUN: %clang_cc1 -fsyntax-only -verify -Wno-c++11-extensions -Wno-local-type-template-args -fmodules %s namespace test1 { ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r360425 - Replace lit feature keyword 'non-ms-sdk' with 'ms-sdk'; eliminate
Author: probinson Date: Fri May 10 06:40:17 2019 New Revision: 360425 URL: http://llvm.org/viewvc/llvm-project?rev=360425&view=rev Log: Replace lit feature keyword 'non-ms-sdk' with 'ms-sdk'; eliminate 'non-ps4-sdk' and use just 'ps4'. Modified: cfe/trunk/test/Driver/nostdincxx.cpp cfe/trunk/test/Modules/crash-vfs-path-traversal.m cfe/trunk/test/Preprocessor/pragma_microsoft.c cfe/trunk/test/lit.cfg.py Modified: cfe/trunk/test/Driver/nostdincxx.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/nostdincxx.cpp?rev=360425&r1=360424&r2=360425&view=diff == --- cfe/trunk/test/Driver/nostdincxx.cpp (original) +++ cfe/trunk/test/Driver/nostdincxx.cpp Fri May 10 06:40:17 2019 @@ -2,6 +2,5 @@ // CHECK: file not found #include -// MSVC has C++ headers in same directory as C headers. -// REQUIRES: non-ms-sdk -// REQUIRES: non-ps4-sdk +// MSVC and PS4 have C++ headers in the same directory as C headers. +// UNSUPPORTED: ms-sdk, ps4 Modified: cfe/trunk/test/Modules/crash-vfs-path-traversal.m URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Modules/crash-vfs-path-traversal.m?rev=360425&r1=360424&r2=360425&view=diff == --- cfe/trunk/test/Modules/crash-vfs-path-traversal.m (original) +++ cfe/trunk/test/Modules/crash-vfs-path-traversal.m Fri May 10 06:40:17 2019 @@ -1,4 +1,5 @@ -// REQUIRES: crash-recovery, shell, non-ms-sdk, non-ps4-sdk +// REQUIRES: crash-recovery, shell +// UNSUPPORTED: ms-sdk, ps4 // FIXME: Canonicalizing paths to remove relative traversal components // currenty fails a unittest on windows and is disable by default. Modified: cfe/trunk/test/Preprocessor/pragma_microsoft.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/pragma_microsoft.c?rev=360425&r1=360424&r2=360425&view=diff == --- cfe/trunk/test/Preprocessor/pragma_microsoft.c (original) +++ cfe/trunk/test/Preprocessor/pragma_microsoft.c Fri May 10 06:40:17 2019 @@ -1,6 +1,6 @@ // RUN: %clang_cc1 -triple i686-unknown-windows-msvc %s -fsyntax-only -verify -fms-extensions -Wunknown-pragmas // RUN: not %clang_cc1 -triple i686-unknown-windows-msvc %s -fms-extensions -E | FileCheck %s -// REQUIRES: non-ps4-sdk +// UNSUPPORTED: ps4 // rdar://6495941 @@ -215,4 +215,4 @@ void g() {} #pragma execution_character_set(push) #pragma execution_character_set(push, "utf-8") #pragma execution_character_set(push, "UTF-8") -#pragma execution_character_set(pop) \ No newline at end of file +#pragma execution_character_set(pop) Modified: cfe/trunk/test/lit.cfg.py URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/lit.cfg.py?rev=360425&r1=360424&r2=360425&view=diff == --- cfe/trunk/test/lit.cfg.py (original) +++ cfe/trunk/test/lit.cfg.py Fri May 10 06:40:17 2019 @@ -140,13 +140,9 @@ if is_filesystem_case_insensitive(): if os.path.exists('/dev/fd/0') and sys.platform not in ['cygwin']: config.available_features.add('dev-fd-fs') -# Not set on native MS environment. -if not re.match(r'.*-(windows-msvc)$', config.target_triple): -config.available_features.add('non-ms-sdk') - -# Not set on native PS4 environment. -if not re.match(r'.*-scei-ps4', config.target_triple): -config.available_features.add('non-ps4-sdk') +# Set on native MS environment. +if re.match(r'.*-(windows-msvc)$', config.target_triple): +config.available_features.add('ms-sdk') # [PR8833] LLP64-incompatible tests if not re.match(r'^x86_64.*-(windows-msvc|windows-gnu)$', config.target_triple): ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r360447 - Replace 'REQUIRES: not_?san' with 'UNSUPPORTED: ?san' as that better
Author: probinson Date: Fri May 10 10:57:22 2019 New Revision: 360447 URL: http://llvm.org/viewvc/llvm-project?rev=360447&view=rev Log: Replace 'REQUIRES: not_?san' with 'UNSUPPORTED: ?san' as that better expresses the intent of the exclusion. Modified: cfe/trunk/test/Index/annotate-deep-statements.cpp cfe/trunk/test/Index/index-many-call-ops.cpp cfe/trunk/test/Index/index-many-logical-ops.c cfe/trunk/test/SemaTemplate/instantiation-depth-default.cpp Modified: cfe/trunk/test/Index/annotate-deep-statements.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/annotate-deep-statements.cpp?rev=360447&r1=360446&r2=360447&view=diff == --- cfe/trunk/test/Index/annotate-deep-statements.cpp (original) +++ cfe/trunk/test/Index/annotate-deep-statements.cpp Fri May 10 10:57:22 2019 @@ -4,7 +4,7 @@ // Check that we don't get stack overflow trying to annotate an extremely deep AST. // AddressSanitizer and UndefinedBehaviorSanitizer increases stack usage. -// REQUIRES: not_asan, not_ubsan +// UNSUPPORTED: asan, ubsan struct S { S &operator()(); Modified: cfe/trunk/test/Index/index-many-call-ops.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/index-many-call-ops.cpp?rev=360447&r1=360446&r2=360447&view=diff == --- cfe/trunk/test/Index/index-many-call-ops.cpp (original) +++ cfe/trunk/test/Index/index-many-call-ops.cpp Fri May 10 10:57:22 2019 @@ -5,7 +5,7 @@ // call operators. // UBSan increses stack usage. -// REQUIRES: not_ubsan +// UNSUPPORTED: ubsan struct S { S &operator()(); Modified: cfe/trunk/test/Index/index-many-logical-ops.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/index-many-logical-ops.c?rev=360447&r1=360446&r2=360447&view=diff == --- cfe/trunk/test/Index/index-many-logical-ops.c (original) +++ cfe/trunk/test/Index/index-many-logical-ops.c Fri May 10 10:57:22 2019 @@ -5,7 +5,7 @@ // logical operators. // UBSan increases stack usage. -// REQUIRES: not_ubsan +// UNSUPPORTED: ubsan // CHECK: [indexDeclaration]: kind: function | name: foo int foo(int x) { Modified: cfe/trunk/test/SemaTemplate/instantiation-depth-default.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaTemplate/instantiation-depth-default.cpp?rev=360447&r1=360446&r2=360447&view=diff == --- cfe/trunk/test/SemaTemplate/instantiation-depth-default.cpp (original) +++ cfe/trunk/test/SemaTemplate/instantiation-depth-default.cpp Fri May 10 10:57:22 2019 @@ -3,7 +3,7 @@ // FIXME: Disable this test when Clang was built with ASan, because ASan // increases our per-frame stack usage enough that this test no longer fits // within our normal stack space allocation. -// REQUIRES: not_asan +// UNSUPPORTED: asan template struct X : X {}; // expected-error-re@8 {{recursive template instantiation exceeded maximum depth of 1024{{$ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r360452 - Replace 'REQUIRES: nozlib' with '!zlib' because we don't need two ways
Author: probinson Date: Fri May 10 11:32:53 2019 New Revision: 360452 URL: http://llvm.org/viewvc/llvm-project?rev=360452&view=rev Log: Replace 'REQUIRES: nozlib' with '!zlib' because we don't need two ways to say the same thing. Modified: cfe/trunk/test/Driver/nozlibcompress.c Modified: cfe/trunk/test/Driver/nozlibcompress.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/nozlibcompress.c?rev=360452&r1=360451&r2=360452&view=diff == --- cfe/trunk/test/Driver/nozlibcompress.c (original) +++ cfe/trunk/test/Driver/nozlibcompress.c Fri May 10 11:32:53 2019 @@ -1,4 +1,4 @@ -// REQUIRES: nozlib +// REQUIRES: !zlib // RUN: %clang -### -fintegrated-as -gz -c %s 2>&1 | FileCheck %s -check-prefix CHECK-WARN // RUN: %clang -### -fintegrated-as -gz=none -c %s 2>&1 | FileCheck -allow-empty -check-prefix CHECK-NOWARN %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r361161 - Fix test not to use UNSUPPORTED as a FileCheck prefix.
Author: probinson Date: Mon May 20 07:57:18 2019 New Revision: 361161 URL: http://llvm.org/viewvc/llvm-project?rev=361161&view=rev Log: Fix test not to use UNSUPPORTED as a FileCheck prefix. It was not causing a problem but it's not good practice. Modified: cfe/trunk/test/Driver/cl-cc-flags.c Modified: cfe/trunk/test/Driver/cl-cc-flags.c URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/cl-cc-flags.c?rev=361161&r1=361160&r2=361161&view=diff == --- cfe/trunk/test/Driver/cl-cc-flags.c (original) +++ cfe/trunk/test/Driver/cl-cc-flags.c Mon May 20 07:57:18 2019 @@ -26,11 +26,11 @@ // No fastcall or stdcall on x86_64: -// RUN: %clang_cl -Wno-msvc-not-found --target=x86_64-windows-msvc /Gr -### -- %s 2>&1 | FileCheck --check-prefix=UNSUPPORTED %s -// RUN: %clang_cl -Wno-msvc-not-found --target=x86_64-windows-msvc /Gz -### -- %s 2>&1 | FileCheck --check-prefix=UNSUPPORTED %s -// RUN: %clang_cl -Wno-msvc-not-found --target=thumbv7-windows-msvc /Gv -### -- %s 2>&1 | FileCheck --check-prefix=UNSUPPORTED %s +// RUN: %clang_cl -Wno-msvc-not-found --target=x86_64-windows-msvc /Gr -### -- %s 2>&1 | FileCheck --check-prefix=UNAVAILABLE %s +// RUN: %clang_cl -Wno-msvc-not-found --target=x86_64-windows-msvc /Gz -### -- %s 2>&1 | FileCheck --check-prefix=UNAVAILABLE %s +// RUN: %clang_cl -Wno-msvc-not-found --target=thumbv7-windows-msvc /Gv -### -- %s 2>&1 | FileCheck --check-prefix=UNAVAILABLE %s -// UNSUPPORTED-NOT: error: -// UNSUPPORTED-NOT: warning: -// UNSUPPORTED-NOT: -fdefault-calling-conv= +// UNAVAILABLE-NOT: error: +// UNAVAILABLE-NOT: warning: +// UNAVAILABLE-NOT: -fdefault-calling-conv= ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r361502 - Work around a Visual C++ bug.
Author: probinson Date: Thu May 23 08:07:46 2019 New Revision: 361502 URL: http://llvm.org/viewvc/llvm-project?rev=361502&view=rev Log: Work around a Visual C++ bug. Using a static function as a template parameter gets a bogus compile-time error with Visual Studio 2017, prior to version 15.8. Our current minimum-version requirement is a particular update to VS2015, and we assume all Visual Studio 2017 versions are usable. This patch makes the code buildable with older versions of VS2017, and can be reverted after we upgrade the minimum version sometime in the future. Description of the Microsoft bug: https://developercommunity.visualstudio.com/content/problem/25334/error-code-c2971-when-specifying-a-function-as-the.html Differential Revision: https://reviews.llvm.org/D62202 Modified: cfe/trunk/lib/Tooling/Refactoring/RangeSelector.cpp Modified: cfe/trunk/lib/Tooling/Refactoring/RangeSelector.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Tooling/Refactoring/RangeSelector.cpp?rev=361502&r1=361501&r2=361502&view=diff == --- cfe/trunk/lib/Tooling/Refactoring/RangeSelector.cpp (original) +++ cfe/trunk/lib/Tooling/Refactoring/RangeSelector.cpp Thu May 23 08:07:46 2019 @@ -218,37 +218,47 @@ public: }; } // namespace +// FIXME: Change the following functions from being in an anonymous namespace +// to static functions, after the minimum Visual C++ has _MSC_VER >= 1915 +// (equivalent to Visual Studio 2017 v15.8 or higher). Using the anonymous +// namespace works around a bug in earlier versions. +namespace { // Returns the range of the statements (all source between the braces). -static CharSourceRange getStatementsRange(const MatchResult &, - const CompoundStmt &CS) { +CharSourceRange getStatementsRange(const MatchResult &, + const CompoundStmt &CS) { return CharSourceRange::getCharRange(CS.getLBracLoc().getLocWithOffset(1), CS.getRBracLoc()); } +} // namespace RangeSelector tooling::statements(StringRef ID) { return RelativeSelector(ID); } +namespace { // Returns the range of the source between the call's parentheses. -static CharSourceRange getCallArgumentsRange(const MatchResult &Result, - const CallExpr &CE) { +CharSourceRange getCallArgumentsRange(const MatchResult &Result, + const CallExpr &CE) { return CharSourceRange::getCharRange( findOpenParen(CE, *Result.SourceManager, Result.Context->getLangOpts()) .getLocWithOffset(1), CE.getRParenLoc()); } +} // namespace RangeSelector tooling::callArgs(StringRef ID) { return RelativeSelector(ID); } +namespace { // Returns the range of the elements of the initializer list. Includes all // source between the braces. -static CharSourceRange getElementsRange(const MatchResult &, -const InitListExpr &E) { +CharSourceRange getElementsRange(const MatchResult &, + const InitListExpr &E) { return CharSourceRange::getCharRange(E.getLBraceLoc().getLocWithOffset(1), E.getRBraceLoc()); } +} // namespace RangeSelector tooling::initListElements(StringRef ID) { return RelativeSelector(ID); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r350636 - Don't emit DW_AT_enum_class unless it's actually an 'enum class'.
Author: probinson Date: Tue Jan 8 08:28:11 2019 New Revision: 350636 URL: http://llvm.org/viewvc/llvm-project?rev=350636&view=rev Log: Don't emit DW_AT_enum_class unless it's actually an 'enum class'. Finishes off the functional part of PR36168. Differential Revision: https://reviews.llvm.org/D56393 Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=350636&r1=350635&r2=350636&view=diff == --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Tue Jan 8 08:28:11 2019 @@ -2711,7 +2711,7 @@ llvm::DIType *CGDebugInfo::CreateTypeDef llvm::DIType *ClassTy = getOrCreateType(ED->getIntegerType(), DefUnit); return DBuilder.createEnumerationType(EnumContext, ED->getName(), DefUnit, Line, Size, Align, EltArray, ClassTy, -Identifier, ED->isFixed()); +Identifier, ED->isScoped()); } llvm::DIMacro *CGDebugInfo::CreateMacro(llvm::DIMacroFile *Parent, Modified: cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp?rev=350636&r1=350635&r2=350636&view=diff == --- cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp (original) +++ cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp Tue Jan 8 08:28:11 2019 @@ -52,6 +52,7 @@ namespace test2 { // FIXME: this should just be a declaration under -fno-standalone-debug // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E" // CHECK-SAME: scope: [[TEST2:![0-9]+]] +// CHECK-NOT: DIFlagFixedEnum // CHECK-SAME: elements: [[TEST_ENUMS:![0-9]+]] // CHECK-SAME: identifier: "_ZTSN5test21EE" // CHECK: [[TEST2]] = !DINamespace(name: "test2" @@ -67,6 +68,7 @@ namespace test3 { // FIXME: this should just be a declaration under -fno-standalone-debug // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E" // CHECK-SAME: scope: [[TEST3:![0-9]+]] +// CHECK-NOT: DIFlagFixedEnum // CHECK-SAME: elements: [[TEST_ENUMS]] // CHECK-SAME: identifier: "_ZTSN5test31EE" // CHECK: [[TEST3]] = !DINamespace(name: "test3" @@ -78,6 +80,7 @@ void func(E *) { namespace test4 { // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E" // CHECK-SAME: scope: [[TEST4:![0-9]+]] +// CHECK-NOT: DIFlagFixedEnum // CHECK-SAME: elements: [[TEST_ENUMS]] // CHECK-SAME: identifier: "_ZTSN5test41EE" // CHECK: [[TEST4]] = !DINamespace(name: "test4" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
r350641 - Rename DIFlagFixedEnum to DIFlagEnumClass. NFC
Author: probinson Date: Tue Jan 8 09:52:29 2019 New Revision: 350641 URL: http://llvm.org/viewvc/llvm-project?rev=350641&view=rev Log: Rename DIFlagFixedEnum to DIFlagEnumClass. NFC Modified: cfe/trunk/test/CodeGen/debug-info-enum.cpp cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp Modified: cfe/trunk/test/CodeGen/debug-info-enum.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info-enum.cpp?rev=350641&r1=350640&r2=350641&view=diff == --- cfe/trunk/test/CodeGen/debug-info-enum.cpp (original) +++ cfe/trunk/test/CodeGen/debug-info-enum.cpp Tue Jan 8 09:52:29 2019 @@ -12,7 +12,7 @@ enum class E0 : signed char { } x0; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E0" // CHECK-SAME: baseType: ![[SCHAR:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS0:[0-9]+]] // CHECK: ![[SCHAR]] = !DIBasicType(name: "signed char", size: 8, encoding: DW_ATE_signed_char) // CHECK: ![[ELTS0]] = !{![[A0:[0-9]+]], ![[B0:[0-9]+]]} @@ -22,7 +22,7 @@ enum class E0 : signed char { enum class E1 : unsigned char { A1 = 255 } x1; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E1" // CHECK-SAME: baseType: ![[UCHAR:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS1:[0-9]+]] // CHECK: ![[UCHAR]] = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) // CHECK: ![[ELTS1]] = !{![[A1:[0-9]+]]} @@ -34,7 +34,7 @@ enum class E2 : signed short { } x2; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E2" // CHECK-SAME: baseType: ![[SHORT:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS2:[0-9]+]] // CHECK: ![[SHORT]] = !DIBasicType(name: "short", size: 16, encoding: DW_ATE_signed) // CHECK: ![[ELTS2]] = !{![[A2:[0-9]+]], ![[B2:[0-9]+]]} @@ -44,7 +44,7 @@ enum class E2 : signed short { enum class E3 : unsigned short { A3 = 65535 } x3; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E3" // CHECK-SAME: baseType: ![[USHORT:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS3:[0-9]+]] // CHECK: ![[USHORT]] = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) // CHECK: ![[ELTS3]] = !{![[A3:[0-9]+]]} @@ -53,7 +53,7 @@ enum class E3 : unsigned short { A3 = 65 enum class E4 : signed int { A4 = -2147483648, B4 = 2147483647 } x4; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E4" // CHECK-SAME: baseType: ![[INT:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS4:[0-9]+]] // CHECK: ![[INT]] = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) // CHECK: ![[ELTS4]] = !{![[A4:[0-9]+]], ![[B4:[0-9]+]]} @@ -63,7 +63,7 @@ enum class E4 : signed int { A4 = -21474 enum class E5 : unsigned int { A5 = 4294967295 } x5; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E5" // CHECK-SAME: baseType: ![[UINT:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS5:[0-9]+]] // CHECK: ![[UINT]] = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) // CHECK: ![[ELTS5]] = !{![[A5:[0-9]+]]} @@ -75,7 +75,7 @@ enum class E6 : signed long long { } x6; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E6" // CHECK-SAME: baseType: ![[LONG:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS6:[0-9]+]] // CHECK: ![[LONG]] = !DIBasicType(name: "long long int", size: 64, encoding: DW_ATE_signed) // CHECK: ![[ELTS6]] = !{![[A6:[0-9]+]], ![[B6:[0-9]+]]} @@ -85,7 +85,7 @@ enum class E6 : signed long long { enum class E7 : unsigned long long { A7 = 18446744073709551615ULL } x7; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E7" // CHECK-SAME: baseType: ![[ULONG:[0-9]+]] -// CHECK-SAME: DIFlagFixedEnum +// CHECK-SAME: DIFlagEnumClass // CHECK-SAME: elements: ![[ELTS7:[0-9]+]] // CHECK: ![[ULONG]] = !DIBasicType(name: "long long unsigned int", size: 64, encoding: DW_ATE_unsigned) // CHECK: ![[ELTS7]] = !{![[A7:[0-9]+]]} @@ -95,6 +95,6 @@ enum class E7 : unsigned long long { A7 enum E8 { A8 = -128, B8 = 127 } x8; // CHECK: !DICompositeType(tag: DW_TAG_enumeration_type, name: "E8" // CHECK-SAME: baseType: ![[INT]] -// CHECK-NOT: DIFlagFixedEnum +// CHECK-NOT: DIFlagEnumClass // CHECK: !DIEnumerator(name: "A8", value: -128) Modified: cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-enum-class.cpp?rev=350641&r1=350640&r2=350641&view=diff == --- cfe/trunk/test/CodeGenCXX/debug-info-enum-class.
r336685 - Support -fdebug-prefix-map for assembler source (pass to cc1as). This
Author: probinson Date: Tue Jul 10 08:15:24 2018 New Revision: 336685 URL: http://llvm.org/viewvc/llvm-project?rev=336685&view=rev Log: Support -fdebug-prefix-map for assembler source (pass to cc1as). This is useful to omit the debug compilation dir when compiling assembly files with -g. Part of PR38050. Patch by Siddhartha Bagaria! Differential Revision: https://reviews.llvm.org/D48989 Added: cfe/trunk/test/Driver/debug-prefix-map.S Modified: cfe/trunk/include/clang/Driver/Options.td cfe/trunk/lib/Driver/ToolChains/Clang.cpp cfe/trunk/tools/driver/cc1as_main.cpp Modified: cfe/trunk/include/clang/Driver/Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/Options.td?rev=336685&r1=336684&r2=336685&view=diff == --- cfe/trunk/include/clang/Driver/Options.td (original) +++ cfe/trunk/include/clang/Driver/Options.td Tue Jul 10 08:15:24 2018 @@ -1741,7 +1741,8 @@ def fsplit_dwarf_inlining: Flag <["-"], def fno_split_dwarf_inlining: Flag<["-"], "fno-split-dwarf-inlining">, Group, Flags<[CC1Option]>; def fdebug_prefix_map_EQ - : Joined<["-"], "fdebug-prefix-map=">, Group, Flags<[CC1Option]>, + : Joined<["-"], "fdebug-prefix-map=">, Group, +Flags<[CC1Option,CC1AsOption]>, HelpText<"remap file source paths in debug info">; def g_Flag : Flag<["-"], "g">, Group, HelpText<"Generate source-level debug information">; Modified: cfe/trunk/lib/Driver/ToolChains/Clang.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Driver/ToolChains/Clang.cpp?rev=336685&r1=336684&r2=336685&view=diff == --- cfe/trunk/lib/Driver/ToolChains/Clang.cpp (original) +++ cfe/trunk/lib/Driver/ToolChains/Clang.cpp Tue Jul 10 08:15:24 2018 @@ -600,6 +600,18 @@ static void addDebugCompDirArg(const Arg } } +/// Add a CC1 and CC1AS option to specify the debug file path prefix map. +static void addDebugPrefixMapArg(const Driver &D, const ArgList &Args, ArgStringList &CmdArgs) { + for (const Arg *A : Args.filtered(options::OPT_fdebug_prefix_map_EQ)) { +StringRef Map = A->getValue(); +if (Map.find('=') == StringRef::npos) + D.Diag(diag::err_drv_invalid_argument_to_fdebug_prefix_map) << Map; +else + CmdArgs.push_back(Args.MakeArgString("-fdebug-prefix-map=" + Map)); +A->claim(); + } +} + /// Vectorize at all optimization levels greater than 1 except for -Oz. /// For -Oz the loop vectorizer is disable, while the slp vectorizer is enabled. static bool shouldEnableVectorizerAtOLevel(const ArgList &Args, bool isSlpVec) { @@ -3800,14 +3812,7 @@ void Clang::ConstructJob(Compilation &C, // Add in -fdebug-compilation-dir if necessary. addDebugCompDirArg(Args, CmdArgs); - for (const Arg *A : Args.filtered(options::OPT_fdebug_prefix_map_EQ)) { -StringRef Map = A->getValue(); -if (Map.find('=') == StringRef::npos) - D.Diag(diag::err_drv_invalid_argument_to_fdebug_prefix_map) << Map; -else - CmdArgs.push_back(Args.MakeArgString("-fdebug-prefix-map=" + Map)); -A->claim(); - } + addDebugPrefixMapArg(D, Args, CmdArgs); if (Arg *A = Args.getLastArg(options::OPT_ftemplate_depth_, options::OPT_ftemplate_depth_EQ)) { @@ -5352,6 +5357,8 @@ void ClangAs::ConstructJob(Compilation & // Add the -fdebug-compilation-dir flag if needed. addDebugCompDirArg(Args, CmdArgs); +addDebugPrefixMapArg(getToolChain().getDriver(), Args, CmdArgs); + // Set the AT_producer to the clang version when using the integrated // assembler on assembly source files. CmdArgs.push_back("-dwarf-debug-producer"); Added: cfe/trunk/test/Driver/debug-prefix-map.S URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Driver/debug-prefix-map.S?rev=336685&view=auto == --- cfe/trunk/test/Driver/debug-prefix-map.S (added) +++ cfe/trunk/test/Driver/debug-prefix-map.S Tue Jul 10 08:15:24 2018 @@ -0,0 +1,6 @@ +// RUN: %clang -### -g -fdebug-prefix-map=old=new %s 2>&1 | FileCheck %s + +// CHECK: cc1as +// CHECK-SAME: -fdebug-prefix-map=old=new + +// More tests for this flag in debug-prefix-map.c. Modified: cfe/trunk/tools/driver/cc1as_main.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/driver/cc1as_main.cpp?rev=336685&r1=336684&r2=336685&view=diff == --- cfe/trunk/tools/driver/cc1as_main.cpp (original) +++ cfe/trunk/tools/driver/cc1as_main.cpp Tue Jul 10 08:15:24 2018 @@ -94,6 +94,7 @@ struct AssemblerInvocation { std::string DwarfDebugFlags; std::string DwarfDebugProducer; std::string DebugCompilationDir; + std::map DebugPrefixMap; llvm::DebugCompressionType CompressDebugSections = llvm::DebugCompressionType::None; std::string MainFileName; @@ -233,6 +234
[PATCH] D24998: Add a new optimization option -Og
probinson added a comment. As Renato points out, this addresses the user experience of tripping over the lack of -Og, however it does not really address the intent of PR20765 which is to provide a mode of optimizations that don't particularly interfere with debugging. Eventually someone needs to take on the project of "proper -Og" which might or might not result in -Og still matching -O1. I am not opposed to starting out this way, but don't close the PR. If we later get user complaints about how -Og interferes with debugging, well, then we'll have actual use-cases to work from, which is extremely helpful for this sort of optimization tuning. > init.c:208 > // > +// RUN: %clang_cc1 -Og -E -dM < /dev/null | FileCheck -match-full-lines > -check-prefix O1 %s > +// check-prefix https://reviews.llvm.org/owners/package/1/? Then you don't need the Og: and Og-NOT: lines. https://reviews.llvm.org/D24998 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 08e4fe6 - [X86] Add RDPRU instruction
Author: Paul Robinson Date: 2022-07-06T07:17:47-07:00 New Revision: 08e4fe6c61967d5c6c16ef7a4cc63d51c4992b55 URL: https://github.com/llvm/llvm-project/commit/08e4fe6c61967d5c6c16ef7a4cc63d51c4992b55 DIFF: https://github.com/llvm/llvm-project/commit/08e4fe6c61967d5c6c16ef7a4cc63d51c4992b55.diff LOG: [X86] Add RDPRU instruction Add support for the RDPRU instruction on Zen2 processors. User-facing features: - Clang option -m[no-]rdpru to enable/disable the feature - Support is implicit for znver2/znver3 processors - Preprocessor symbol __RDPRU__ to indicate support - Header rdpruintrin.h to define intrinsics - "rdpru" mnemonic supported for assembler code Internal features: - Clang builtin __builtin_ia32_rdpru - IR intrinsic @llvm.x86.rdpru Differential Revision: https://reviews.llvm.org/D128934 Added: clang/lib/Headers/rdpruintrin.h clang/test/CodeGen/rdpru-builtins.c llvm/test/CodeGen/X86/rdpru.ll llvm/test/MC/X86/RDPRU.s Modified: clang/docs/ReleaseNotes.rst clang/include/clang/Basic/BuiltinsX86.def clang/include/clang/Driver/Options.td clang/lib/Basic/Targets/X86.cpp clang/lib/Basic/Targets/X86.h clang/lib/Headers/CMakeLists.txt clang/lib/Headers/x86intrin.h clang/test/Driver/x86-target-features.c clang/test/Preprocessor/x86_target_features.c llvm/docs/ReleaseNotes.rst llvm/include/llvm/IR/IntrinsicsX86.td llvm/include/llvm/Support/X86TargetParser.def llvm/lib/Support/X86TargetParser.cpp llvm/lib/Target/X86/X86.td llvm/lib/Target/X86/X86ISelLowering.cpp llvm/lib/Target/X86/X86InstrInfo.td llvm/lib/Target/X86/X86InstrSystem.td llvm/lib/Target/X86/X86IntrinsicsInfo.h llvm/test/MC/Disassembler/X86/x86-32.txt llvm/test/MC/Disassembler/X86/x86-64.txt Removed: diff --git a/clang/docs/ReleaseNotes.rst b/clang/docs/ReleaseNotes.rst index 98153fd6e68d..0f542e08b841 100644 --- a/clang/docs/ReleaseNotes.rst +++ b/clang/docs/ReleaseNotes.rst @@ -527,6 +527,9 @@ X86 Support in Clang - Support for the ``_Float16`` type has been added for all targets with SSE2. When AVX512-FP16 is not available, arithmetic on ``_Float16`` is emulated using ``float``. +- Added the ``-m[no-]rdpru`` flag to enable/disable the RDPRU instruction + provided by AMD Zen2 and later processors. Defined intrinsics for using + this instruction (see rdpruintrin.h). DWARF Support in Clang -- diff --git a/clang/include/clang/Basic/BuiltinsX86.def b/clang/include/clang/Basic/BuiltinsX86.def index 3e5c376f9bc1..6bf35c340c2d 100644 --- a/clang/include/clang/Basic/BuiltinsX86.def +++ b/clang/include/clang/Basic/BuiltinsX86.def @@ -825,6 +825,7 @@ BUILTIN(__rdtsc, "UOi", "") BUILTIN(__builtin_ia32_rdtscp, "UOiUi*", "") TARGET_BUILTIN(__builtin_ia32_rdpid, "Ui", "n", "rdpid") +TARGET_BUILTIN(__builtin_ia32_rdpru, "ULLii", "n", "rdpru") // PKU TARGET_BUILTIN(__builtin_ia32_rdpkru, "Ui", "n", "pku") diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index f4fe08aa1a5b..8ae9145a271a 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -4570,6 +4570,8 @@ def mptwrite : Flag<["-"], "mptwrite">, Group; def mno_ptwrite : Flag<["-"], "mno-ptwrite">, Group; def mrdpid : Flag<["-"], "mrdpid">, Group; def mno_rdpid : Flag<["-"], "mno-rdpid">, Group; +def mrdpru : Flag<["-"], "mrdpru">, Group; +def mno_rdpru : Flag<["-"], "mno-rdpru">, Group; def mrdrnd : Flag<["-"], "mrdrnd">, Group; def mno_rdrnd : Flag<["-"], "mno-rdrnd">, Group; def mrtm : Flag<["-"], "mrtm">, Group; diff --git a/clang/lib/Basic/Targets/X86.cpp b/clang/lib/Basic/Targets/X86.cpp index 06988830eaed..69afdf8a3584 100644 --- a/clang/lib/Basic/Targets/X86.cpp +++ b/clang/lib/Basic/Targets/X86.cpp @@ -297,6 +297,8 @@ bool X86TargetInfo::handleTargetFeatures(std::vector &Features, HasCLDEMOTE = true; } else if (Feature == "+rdpid") { HasRDPID = true; +} else if (Feature == "+rdpru") { + HasRDPRU = true; } else if (Feature == "+kl") { HasKL = true; } else if (Feature == "+widekl") { @@ -743,6 +745,8 @@ void X86TargetInfo::getTargetDefines(const LangOptions &Opts, Builder.defineMacro("__WIDEKL__"); if (HasRDPID) Builder.defineMacro("__RDPID__"); + if (HasRDPRU) +Builder.defineMacro("__RDPRU__"); if (HasCLDEMOTE) Builder.defineMacro("__CLDEMOTE__"); if (HasWAITPKG) @@ -926,6 +930,7 @@ bool X86TargetInfo::isValidFeatureName(StringRef Name) const { .Case("prfchw", true) .Case("ptwrite", true) .Case("rdpid", true) + .Case("rdpru", true) .Case("rdrnd", true) .Case("rdseed", true) .Case("rtm", true) @@ -1021,6 +1026,7 @@ bool X86TargetInfo::hasFeature(StringRef Feature) const { .Case("prfchw", HasPRFCHW) .Case("ptwrite", HasPTWRITE) .
[clang] 6aa0397 - Remove dead code in driver parsing -gsimple-template-names= options
Author: Paul Robinson Date: 2022-03-25T13:23:24-07:00 New Revision: 6aa039775891b6eae81604bb851e72192f5a7462 URL: https://github.com/llvm/llvm-project/commit/6aa039775891b6eae81604bb851e72192f5a7462 DIFF: https://github.com/llvm/llvm-project/commit/6aa039775891b6eae81604bb851e72192f5a7462.diff LOG: Remove dead code in driver parsing -gsimple-template-names= options While -g[no-]simple-template-names is a driver option, the fancier -gsimple-template-names={simple,mangled} option is cc1-only, so code to handle it in the driver is dead. Differential Revision: https://reviews.llvm.org/D122503 Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index b9d36a753d072..7c7f9254b34da 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4295,8 +4295,8 @@ static void renderDebugOptions(const ToolChain &TC, const Driver &D, ? "-gpubnames" : "-ggnu-pubnames"); const auto *SimpleTemplateNamesArg = - Args.getLastArg(options::OPT_gsimple_template_names, options::OPT_gno_simple_template_names, - options::OPT_gsimple_template_names_EQ); + Args.getLastArg(options::OPT_gsimple_template_names, + options::OPT_gno_simple_template_names); bool ForwardTemplateParams = DebuggerTuning == llvm::DebuggerKind::SCE; if (SimpleTemplateNamesArg && checkDebugInfoOption(SimpleTemplateNamesArg, Args, D, TC)) { @@ -4304,17 +4304,6 @@ static void renderDebugOptions(const ToolChain &TC, const Driver &D, if (Opt.matches(options::OPT_gsimple_template_names)) { ForwardTemplateParams = true; CmdArgs.push_back("-gsimple-template-names=simple"); -} else if (Opt.matches(options::OPT_gsimple_template_names_EQ)) { - ForwardTemplateParams = true; - StringRef Value = SimpleTemplateNamesArg->getValue(); - if (Value == "simple") { -CmdArgs.push_back("-gsimple-template-names=simple"); - } else if (Value == "mangled") { -CmdArgs.push_back("-gsimple-template-names=mangled"); - } else { -D.Diag(diag::err_drv_unsupported_option_argument) -<< Opt.getName() << SimpleTemplateNamesArg->getValue(); - } } } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 1e08544 - [PS4] Fix header search list
Author: Paul Robinson Date: 2022-04-05T14:14:13-07:00 New Revision: 1e085448b36db240c9068c8c4e4cb12d4d7093cb URL: https://github.com/llvm/llvm-project/commit/1e085448b36db240c9068c8c4e4cb12d4d7093cb DIFF: https://github.com/llvm/llvm-project/commit/1e085448b36db240c9068c8c4e4cb12d4d7093cb.diff LOG: [PS4] Fix header search list A missing "break" in the initial implementation had us adding a spurious "/usr/include" to the header search list. Later someone introduced LLVM_FALLTHROUGH to prevent a warning. Replace this with the correct "break" and make sure the extra directory isn't added to the PS4 header search list. Added: Modified: clang/lib/Lex/InitHeaderSearch.cpp clang/test/Driver/ps4-header-search.c Removed: diff --git a/clang/lib/Lex/InitHeaderSearch.cpp b/clang/lib/Lex/InitHeaderSearch.cpp index 2233c9fa114bc..86c6768d0d9fa 100644 --- a/clang/lib/Lex/InitHeaderSearch.cpp +++ b/clang/lib/Lex/InitHeaderSearch.cpp @@ -372,7 +372,7 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple, AddPath(BaseSDKPath + "/target/include", System, false); if (triple.isPS4()) AddPath(BaseSDKPath + "/target/include_common", System, false); -LLVM_FALLTHROUGH; +break; } default: AddPath("/usr/include", ExternCSystem, false); diff --git a/clang/test/Driver/ps4-header-search.c b/clang/test/Driver/ps4-header-search.c index 3afef698d2642..20aaa5f97a749 100644 --- a/clang/test/Driver/ps4-header-search.c +++ b/clang/test/Driver/ps4-header-search.c @@ -3,8 +3,10 @@ // RUN: env SCE_ORBIS_SDK_DIR=%S/Inputs/scei-ps4_tree %clang -target x86_64-scei-ps4 -E -v %s 2>&1 | FileCheck %s --check-prefix=ENVPS4 // ENVPS4: Inputs/scei-ps4_tree/target/include{{$}} // ENVPS4: Inputs/scei-ps4_tree/target/include_common{{$}} +// ENVPS4-NOT: /usr/include // RUN: %clang -isysroot %S/Inputs/scei-ps4_tree -target x86_64-scei-ps4 -E -v %s 2>&1 | FileCheck %s --check-prefix=SYSROOTPS4 // SYSROOTPS4: "{{[^"]*}}clang{{[^"]*}}" // SYSROOTPS4: Inputs/scei-ps4_tree/target/include{{$}} // SYSROOTPS4: Inputs/scei-ps4_tree/target/include_common{{$}} +// SYSROOTPS4-NOT: /usr/include ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 31c9711 - [PS4] clang-format PS4CPU.cpp/.h
Author: Paul Robinson Date: 2022-04-06T06:52:29-07:00 New Revision: 31c971145f5eef53e443fe7e9b137db6b5b6319d URL: https://github.com/llvm/llvm-project/commit/31c971145f5eef53e443fe7e9b137db6b5b6319d DIFF: https://github.com/llvm/llvm-project/commit/31c971145f5eef53e443fe7e9b137db6b5b6319d.diff LOG: [PS4] clang-format PS4CPU.cpp/.h Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Driver/ToolChains/PS4CPU.h Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index bcf9147833ddf..c73edf1adac2e 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -7,8 +7,8 @@ //===--===// #include "PS4CPU.h" -#include "FreeBSD.h" #include "CommonArgs.h" +#include "FreeBSD.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/DriverDiagnostic.h" @@ -125,7 +125,7 @@ void tools::PS4cpu::Link::ConstructJob(Compilation &C, const JobAction &JA, assert(Output.isNothing() && "Invalid output."); } - if(!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) + if (!Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) AddPS4SanitizerArgs(ToolChain, Args, CmdArgs); Args.AddAllArgs(CmdArgs, options::OPT_L); @@ -149,8 +149,7 @@ void tools::PS4cpu::Link::ConstructJob(Compilation &C, const JobAction &JA, << "-fuse-ld" << getToolChain().getTriple().str(); } - const char *Exec = - Args.MakeArgString(ToolChain.GetProgramPath("orbis-ld")); + const char *Exec = Args.MakeArgString(ToolChain.GetProgramPath("orbis-ld")); C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::AtFileUTF8(), diff --git a/clang/lib/Driver/ToolChains/PS4CPU.h b/clang/lib/Driver/ToolChains/PS4CPU.h index 4bedabaf267c0..86731b8f9649b 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -33,8 +33,7 @@ class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { bool hasIntegratedCPP() const override { return false; } void ConstructJob(Compilation &C, const JobAction &JA, -const InputInfo &Output, -const InputInfoList &Inputs, +const InputInfo &Output, const InputInfoList &Inputs, const llvm::opt::ArgList &TCArgs, const char *LinkingOutput) const override; }; @@ -47,8 +46,7 @@ class LLVM_LIBRARY_VISIBILITY Link : public Tool { bool isLinkJob() const override { return true; } void ConstructJob(Compilation &C, const JobAction &JA, -const InputInfo &Output, -const InputInfoList &Inputs, +const InputInfo &Output, const InputInfoList &Inputs, const llvm::opt::ArgList &TCArgs, const char *LinkingOutput) const override; }; @@ -63,12 +61,12 @@ class LLVM_LIBRARY_VISIBILITY PS4CPU : public Generic_ELF { const llvm::opt::ArgList &Args); // No support for finding a C++ standard library yet. - void addLibCxxIncludePaths( - const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args) const override {} - void addLibStdCxxIncludePaths( - const llvm::opt::ArgList &DriverArgs, - llvm::opt::ArgStringList &CC1Args) const override {} + void addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override { + } + void + addLibStdCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &CC1Args) const override {} bool IsMathErrnoDefault() const override { return false; } bool IsObjCNonFragileABIDefault() const override { return true; } @@ -92,9 +90,8 @@ class LLVM_LIBRARY_VISIBILITY PS4CPU : public Generic_ELF { bool canSplitThinLTOUnit() const override { return false; } void addClangTargetOptions( -const llvm::opt::ArgList &DriverArgs, -llvm::opt::ArgStringList &CC1Args, -Action::OffloadKind DeviceOffloadingKind) const override; + const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, + Action::OffloadKind DeviceOffloadingKind) const override; llvm::DenormalMode getDefaultDenormalModeForType( const llvm::opt::ArgList &DriverArgs, const JobAction &JA, ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] bb78dd2 - [RGT] StencilTest: Fix an assertion
Author: Paul Robinson Date: 2022-03-18T14:13:41-07:00 New Revision: bb78dd2e1f81323a631e2964d06a40aa10d5e2f5 URL: https://github.com/llvm/llvm-project/commit/bb78dd2e1f81323a631e2964d06a40aa10d5e2f5 DIFF: https://github.com/llvm/llvm-project/commit/bb78dd2e1f81323a631e2964d06a40aa10d5e2f5.diff LOG: [RGT] StencilTest: Fix an assertion ASSERT_THAT_EXPECTED implicitly calls takeError(), and calling takeError() a second time returns nothing, so the check for the content of the error text wasn't being executed. Fixes Issue #48901 Found by the Rotten Green Tests project. Added: Modified: clang/unittests/Tooling/StencilTest.cpp Removed: diff --git a/clang/unittests/Tooling/StencilTest.cpp b/clang/unittests/Tooling/StencilTest.cpp index 28cc8281485a8..1f49c1a30c041 100644 --- a/clang/unittests/Tooling/StencilTest.cpp +++ b/clang/unittests/Tooling/StencilTest.cpp @@ -627,7 +627,7 @@ TEST_F(StencilTest, CatOfInvalidRangeFails) { ASSERT_TRUE(StmtMatch); Stencil S = cat(node("arg")); Expected Result = S->eval(StmtMatch->Result); - ASSERT_THAT_EXPECTED(Result, Failed()); + ASSERT_FALSE(Result); llvm::handleAllErrors(Result.takeError(), [](const llvm::StringError &E) { EXPECT_THAT(E.getMessage(), AllOf(HasSubstr("selected range"), HasSubstr("macro expansion"))); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 375d934 - [PS4] Fix a buggy cast
Author: Paul Robinson Date: 2022-04-06T12:28:50-07:00 New Revision: 375d93465b3e6f342e0554cfaee308a45a523969 URL: https://github.com/llvm/llvm-project/commit/375d93465b3e6f342e0554cfaee308a45a523969 DIFF: https://github.com/llvm/llvm-project/commit/375d93465b3e6f342e0554cfaee308a45a523969.diff LOG: [PS4] Fix a buggy cast Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index c73edf1adac2e..5aab0a6d1bf87 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -94,8 +94,8 @@ void tools::PS4cpu::Link::ConstructJob(Compilation &C, const JobAction &JA, const InputInfoList &Inputs, const ArgList &Args, const char *LinkingOutput) const { - const toolchains::FreeBSD &ToolChain = - static_cast(getToolChain()); + const toolchains::PS4CPU &ToolChain = + static_cast(getToolChain()); const Driver &D = ToolChain.getDriver(); ArgStringList CmdArgs; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 78a6f59 - [RGT] Use GTEST_SKIP instead of just returning
Author: Paul Robinson Date: 2022-04-08T12:20:20-07:00 New Revision: 78a6f59c2cef58c01a13ba4e587b30cd1dbd6475 URL: https://github.com/llvm/llvm-project/commit/78a6f59c2cef58c01a13ba4e587b30cd1dbd6475 DIFF: https://github.com/llvm/llvm-project/commit/78a6f59c2cef58c01a13ba4e587b30cd1dbd6475.diff LOG: [RGT] Use GTEST_SKIP instead of just returning Added: Modified: clang/unittests/Tooling/RecursiveASTVisitorTests/LambdaExpr.cpp Removed: diff --git a/clang/unittests/Tooling/RecursiveASTVisitorTests/LambdaExpr.cpp b/clang/unittests/Tooling/RecursiveASTVisitorTests/LambdaExpr.cpp index 8e23487840919..4eaa1636d230e 100644 --- a/clang/unittests/Tooling/RecursiveASTVisitorTests/LambdaExpr.cpp +++ b/clang/unittests/Tooling/RecursiveASTVisitorTests/LambdaExpr.cpp @@ -88,7 +88,7 @@ TEST(RecursiveASTVisitor, VisitsLambdaExprAndImplicitClass) { TEST(RecursiveASTVisitor, VisitsAttributedLambdaExpr) { if (llvm::Triple(llvm::sys::getDefaultTargetTriple()).isPS4()) -return; // PS4 does not support fastcall. +GTEST_SKIP(); // PS4 does not support fastcall. LambdaExprVisitor Visitor; Visitor.ExpectMatch("", 1, 12); EXPECT_TRUE(Visitor.runOver( ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 52d346e - [PS4] NFC refactor of PS4 toolchain class, prep for PS5
Author: Paul Robinson Date: 2022-04-14T05:37:39-07:00 New Revision: 52d346e715cfaa08a71cdc8982627a3a598e47dd URL: https://github.com/llvm/llvm-project/commit/52d346e715cfaa08a71cdc8982627a3a598e47dd DIFF: https://github.com/llvm/llvm-project/commit/52d346e715cfaa08a71cdc8982627a3a598e47dd.diff LOG: [PS4] NFC refactor of PS4 toolchain class, prep for PS5 Added: Modified: clang/include/clang/Basic/DiagnosticDriverKinds.td clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Driver/ToolChains/PS4CPU.h Removed: diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 4756edd28a925..64af4c84672fe 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -539,8 +539,8 @@ def warn_drv_ps4_force_pic : Warning< "option '%0' was ignored by the PS4 toolchain, using '-fPIC'">, InGroup; -def warn_drv_ps4_sdk_dir : Warning< - "environment variable SCE_ORBIS_SDK_DIR is set, but points to invalid or nonexistent directory '%0'">, +def warn_drv_ps_sdk_dir : Warning< + "environment variable '%0' is set, but points to invalid or nonexistent directory '%1'">, InGroup; def err_drv_defsym_invalid_format : Error<"defsym must be of the form: sym=value: %0">; diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 5aab0a6d1bf87..154eb78ce207c 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -8,7 +8,6 @@ #include "PS4CPU.h" #include "CommonArgs.h" -#include "FreeBSD.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/DriverDiagnostic.h" @@ -23,8 +22,18 @@ using namespace clang::driver; using namespace clang; using namespace llvm::opt; +// Helper to paste bits of an option together and return a saved string. +static const char *makeArgString(const ArgList &Args, const char *Prefix, + const char *Base, const char *Suffix) { + // Basically "Prefix + Base + Suffix" all converted to Twine then saved. + return Args.MakeArgString(Twine(StringRef(Prefix), Base) + Suffix); +} + void tools::PS4cpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { + assert(TC.getTriple().isPS()); + auto &PSTC = static_cast(TC); + if ((Args.hasFlag(options::OPT_fprofile_arcs, options::OPT_fno_profile_arcs, false) || Args.hasFlag(options::OPT_fprofile_generate, @@ -41,7 +50,8 @@ void tools::PS4cpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, 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"); +CmdArgs.push_back(makeArgString( +Args, "--dependent-lib=", PSTC.getProfileRTLibName(), "")); } void tools::PS4cpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, @@ -49,6 +59,7 @@ void tools::PS4cpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, const InputInfoList &Inputs, const ArgList &Args, const char *LinkingOutput) const { + auto &TC = static_cast(getToolChain()); claimNoWarnArgs(Args); ArgStringList CmdArgs; @@ -62,31 +73,32 @@ void tools::PS4cpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, assert(Input.isFilename() && "Invalid input."); CmdArgs.push_back(Input.getFilename()); - const char *Exec = - Args.MakeArgString(getToolChain().GetProgramPath("orbis-as")); + std::string AsName = TC.qualifyPSCmdName("as"); + const char *Exec = Args.MakeArgString(TC.GetProgramPath(AsName.c_str())); C.addCommand(std::make_unique(JA, *this, ResponseFileSupport::AtFileUTF8(), Exec, CmdArgs, Inputs, Output)); } -static void AddPS4SanitizerArgs(const ToolChain &TC, const ArgList &Args, -ArgStringList &CmdArgs) { - const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args); - if (SanArgs.needsUbsanRt()) { -CmdArgs.push_back("-lSceDbgUBSanitizer_stub_weak"); - } - if (SanArgs.needsAsanRt()) { -CmdArgs.push_back("-lSceDbgAddressSanitizer_stub_weak"); - } -} - void tools::PS4cpu::addSanitizerArgs(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { - const SanitizerArgs &SanArgs = TC.getSanitizerArgs(Args); + assert(TC.getTriple().isPS()); + auto &PSTC = static_cast(TC); + PSTC.addSanitizerArgs(Args, CmdArgs, "--dependent-lib=lib", ".a"); +
[clang] 7ef9dd3 - [PS4] Fix a couple of typos
Author: Paul Robinson Date: 2022-04-14T10:14:17-07:00 New Revision: 7ef9dd3c61fd85b430bcd74f7ce2c075d93fe4fa URL: https://github.com/llvm/llvm-project/commit/7ef9dd3c61fd85b430bcd74f7ce2c075d93fe4fa DIFF: https://github.com/llvm/llvm-project/commit/7ef9dd3c61fd85b430bcd74f7ce2c075d93fe4fa.diff LOG: [PS4] Fix a couple of typos Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.h Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.h b/clang/lib/Driver/ToolChains/PS4CPU.h index 21352f9fdf52e..dbb9c14b6373c 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -105,7 +105,7 @@ class LLVM_LIBRARY_VISIBILITY PS4PS5Base : public Generic_ELF { virtual void addSanitizerArgs(const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs, const char *Prefix, -const char *Suffic) const = 0; +const char *Suffix) const = 0; virtual const char *getProfileRTLibName() const = 0; protected: @@ -122,7 +122,7 @@ class LLVM_LIBRARY_VISIBILITY PS4CPU : public PS4PS5Base { unsigned GetDefaultDwarfVersion() const override { return 4; } // PS4 toolchain uses legacy thin LTO API, which is not - // capable of unit splitt. + // capable of unit splitting. bool canSplitThinLTOUnit() const override { return false; } const char *getLinkerBaseName() const override { return "ld"; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 7726ad0 - [PS5] Add basic PS5 driver behavior
Author: Paul Robinson Date: 2022-04-14T12:45:33-07:00 New Revision: 7726ad04e2633a843fb9743e5adfbb404446e657 URL: https://github.com/llvm/llvm-project/commit/7726ad04e2633a843fb9743e5adfbb404446e657 DIFF: https://github.com/llvm/llvm-project/commit/7726ad04e2633a843fb9743e5adfbb404446e657.diff LOG: [PS5] Add basic PS5 driver behavior This adds a PS5-specific ToolChain subclass, which defines some basic PS5 driver behavior. Future patches will add more target-specific driver behavior. Added: clang/test/Driver/ps4-ps5-header-search.c clang/test/Driver/ps4-ps5-linker-non-win.c clang/test/Driver/ps4-ps5-linker-win.c clang/test/Driver/ps4-ps5-relax-relocations.c clang/test/Driver/ps4-ps5-runtime-flags.c clang/test/Driver/ps4ps5base.c clang/test/Driver/ps5-sdk-root.c Modified: clang/lib/Driver/Driver.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Driver/ToolChains/PS4CPU.h clang/lib/Lex/InitHeaderSearch.cpp clang/test/Driver/inhibit-downstream-commands.c clang/test/Driver/no-integrated-as.c clang/test/Driver/no-integrated-as.s Removed: clang/test/Driver/ps4-header-search.c clang/test/Driver/ps4-linker-non-win.c clang/test/Driver/ps4-linker-win.c clang/test/Driver/ps4-relax-relocations.c clang/test/Driver/ps4-runtime-flags.c clang/test/Driver/ps4cpu.c diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 392364ce22bad..8de1a364092dc 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -5672,6 +5672,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args, case llvm::Triple::PS4: TC = std::make_unique(*this, Target, Args); break; +case llvm::Triple::PS5: + TC = std::make_unique(*this, Target, Args); + break; case llvm::Triple::Contiki: TC = std::make_unique(*this, Target, Args); break; diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index bf47212374ce4..8aefcaeed37dc 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -5541,11 +5541,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.AddLastArg(CmdArgs, options::OPT_fclang_abi_compat_EQ); - // Add runtime flag for PS4 when PGO, coverage, or sanitizers are enabled. - if (RawTriple.isPS4() && + // Add runtime flag for PS4/PS5 when PGO, coverage, or sanitizers are enabled. + if (RawTriple.isPS() && !Args.hasArg(options::OPT_nostdlib, options::OPT_nodefaultlibs)) { -PS4cpu::addProfileRTArgs(TC, Args, CmdArgs); -PS4cpu::addSanitizerArgs(TC, Args, CmdArgs); +PScpu::addProfileRTArgs(TC, Args, CmdArgs); +PScpu::addSanitizerArgs(TC, Args, CmdArgs); } // Pass options for controlling the default header search paths. diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 154eb78ce207c..3c8798ebbc511 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -29,8 +29,8 @@ static const char *makeArgString(const ArgList &Args, const char *Prefix, return Args.MakeArgString(Twine(StringRef(Prefix), Base) + Suffix); } -void tools::PS4cpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, - ArgStringList &CmdArgs) { +void tools::PScpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, +ArgStringList &CmdArgs) { assert(TC.getTriple().isPS()); auto &PSTC = static_cast(TC); @@ -54,11 +54,11 @@ void tools::PS4cpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, Args, "--dependent-lib=", PSTC.getProfileRTLibName(), "")); } -void tools::PS4cpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const ArgList &Args, - const char *LinkingOutput) const { +void tools::PScpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const ArgList &Args, + const char *LinkingOutput) const { auto &TC = static_cast(getToolChain()); claimNoWarnArgs(Args); ArgStringList CmdArgs; @@ -80,8 +80,8 @@ void tools::PS4cpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, Exec, CmdArgs, Inputs, Output)); } -void tools::PS4cpu::addSanitizerArgs(const ToolChain &TC, const ArgList &Args, -
[clang] 20c873c - [PS5] Avoid a driver crash
Author: Paul Robinson Date: 2022-04-19T15:55:32-07:00 New Revision: 20c873c12fa5563bbfb07c880db51fa68db571cc URL: https://github.com/llvm/llvm-project/commit/20c873c12fa5563bbfb07c880db51fa68db571cc DIFF: https://github.com/llvm/llvm-project/commit/20c873c12fa5563bbfb07c880db51fa68db571cc.diff LOG: [PS5] Avoid a driver crash In some cases, an error constructing a compiler or assembler job could leave the Inputs in a state that the code for constructing the linker job was not ready for. Added: Modified: clang/lib/Driver/ToolChains/CommonArgs.cpp clang/test/Driver/no-integrated-as.c Removed: diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 1207bf37b5bb0..96a54228626f6 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -255,6 +255,10 @@ void tools::AddLinkerInputs(const ToolChain &TC, const InputInfoList &Inputs, continue; } +// In some error cases, the input could be Nothing; skip those. +if (II.isNothing()) + continue; + // Otherwise, this is a linker input argument. const Arg &A = II.getInputArg(); diff --git a/clang/test/Driver/no-integrated-as.c b/clang/test/Driver/no-integrated-as.c index 6f45a6050e9fd..617e319764efb 100644 --- a/clang/test/Driver/no-integrated-as.c +++ b/clang/test/Driver/no-integrated-as.c @@ -13,8 +13,9 @@ // DEFAULT-NOT: -no-integrated-as -// RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as %s -c 2>&1 \ +/// -c omitted on purpose, this used to crash. +// RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as %s 2>&1 \ // RUN: | FileCheck %s -check-prefix PS5 -// RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as %s -c -x assembler 2>&1 \ +// RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as %s -x assembler 2>&1 \ // RUN: | FileCheck %s -check-prefix PS5 // PS5: there is no external assembler that can be used on this platform ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] a5c847e - [PS4][NFC] Rename classes to align with prevailing practice
Author: Paul Robinson Date: 2022-04-20T08:35:52-07:00 New Revision: a5c847e8cf2a60fe09d4016788c4944ab4739e45 URL: https://github.com/llvm/llvm-project/commit/a5c847e8cf2a60fe09d4016788c4944ab4739e45 DIFF: https://github.com/llvm/llvm-project/commit/a5c847e8cf2a60fe09d4016788c4944ab4739e45.diff LOG: [PS4][NFC] Rename classes to align with prevailing practice Rename classes Assemble -> Assembler, Link -> Linker, for consistency with names other toolchains use. Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Driver/ToolChains/PS4CPU.h Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 3c8798ebbc511..55a8d4dbc24b4 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -54,11 +54,11 @@ void tools::PScpu::addProfileRTArgs(const ToolChain &TC, const ArgList &Args, Args, "--dependent-lib=", PSTC.getProfileRTLibName(), "")); } -void tools::PScpu::Assemble::ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const ArgList &Args, - const char *LinkingOutput) const { +void tools::PScpu::Assembler::ConstructJob(Compilation &C, const JobAction &JA, + const InputInfo &Output, + const InputInfoList &Inputs, + const ArgList &Args, + const char *LinkingOutput) const { auto &TC = static_cast(getToolChain()); claimNoWarnArgs(Args); ArgStringList CmdArgs; @@ -117,11 +117,11 @@ void toolchains::PS5CPU::addSanitizerArgs(const ArgList &Args, CmdArgs.push_back(arg("SceThreadSanitizer_nosubmission_stub_weak")); } -void tools::PScpu::Link::ConstructJob(Compilation &C, const JobAction &JA, - const InputInfo &Output, - const InputInfoList &Inputs, - const ArgList &Args, - const char *LinkingOutput) const { +void tools::PScpu::Linker::ConstructJob(Compilation &C, const JobAction &JA, +const InputInfo &Output, +const InputInfoList &Inputs, +const ArgList &Args, +const char *LinkingOutput) const { auto &TC = static_cast(getToolChain()); const Driver &D = TC.getDriver(); ArgStringList CmdArgs; @@ -245,7 +245,7 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, } Tool *toolchains::PS4CPU::buildAssembler() const { - return new tools::PScpu::Assemble(*this); + return new tools::PScpu::Assembler(*this); } Tool *toolchains::PS5CPU::buildAssembler() const { @@ -255,7 +255,7 @@ Tool *toolchains::PS5CPU::buildAssembler() const { } Tool *toolchains::PS4PS5Base::buildLinker() const { - return new tools::PScpu::Link(*this); + return new tools::PScpu::Linker(*this); } SanitizerMask toolchains::PS4PS5Base::getSupportedSanitizers() const { diff --git a/clang/lib/Driver/ToolChains/PS4CPU.h b/clang/lib/Driver/ToolChains/PS4CPU.h index dd6d7df432a4f..954e7d8d8d684 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -27,9 +27,9 @@ void addProfileRTArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, void addSanitizerArgs(const ToolChain &TC, const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs); -class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { +class LLVM_LIBRARY_VISIBILITY Assembler : public Tool { public: - Assemble(const ToolChain &TC) : Tool("PScpu::Assemble", "assembler", TC) {} + Assembler(const ToolChain &TC) : Tool("PScpu::Assembler", "assembler", TC) {} bool hasIntegratedCPP() const override { return false; } @@ -39,9 +39,9 @@ class LLVM_LIBRARY_VISIBILITY Assemble : public Tool { const char *LinkingOutput) const override; }; -class LLVM_LIBRARY_VISIBILITY Link : public Tool { +class LLVM_LIBRARY_VISIBILITY Linker : public Tool { public: - Link(const ToolChain &TC) : Tool("PScpu::Link", "linker", TC) {} + Linker(const ToolChain &TC) : Tool("PScpu::Linker", "linker", TC) {} bool hasIntegratedCPP() const override { return false; } bool isLinkJob() const override { return true; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] dfdb2cc - [PS5][NFC] Fix a test with a misplaced -x option
Author: Paul Robinson Date: 2022-04-20T08:56:50-07:00 New Revision: dfdb2cc0fbc91feeaa95d3651728df36a975912e URL: https://github.com/llvm/llvm-project/commit/dfdb2cc0fbc91feeaa95d3651728df36a975912e DIFF: https://github.com/llvm/llvm-project/commit/dfdb2cc0fbc91feeaa95d3651728df36a975912e.diff LOG: [PS5][NFC] Fix a test with a misplaced -x option Added: Modified: clang/test/Driver/no-integrated-as.c Removed: diff --git a/clang/test/Driver/no-integrated-as.c b/clang/test/Driver/no-integrated-as.c index 617e319764efb..763304aa80053 100644 --- a/clang/test/Driver/no-integrated-as.c +++ b/clang/test/Driver/no-integrated-as.c @@ -16,6 +16,6 @@ /// -c omitted on purpose, this used to crash. // RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as %s 2>&1 \ // RUN: | FileCheck %s -check-prefix PS5 -// RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as %s -x assembler 2>&1 \ +// RUN: %clang -target x86_64-sie-ps5 -### -no-integrated-as -x assembler %s 2>&1 \ // RUN: | FileCheck %s -check-prefix PS5 // PS5: there is no external assembler that can be used on this platform ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] f80e369 - [PS4] Driver: use correct --shared option
Author: Paul Robinson Date: 2022-04-21T08:19:42-07:00 New Revision: f80e369f61ebd33dd9377bb42fcab64d17072b18 URL: https://github.com/llvm/llvm-project/commit/f80e369f61ebd33dd9377bb42fcab64d17072b18 DIFF: https://github.com/llvm/llvm-project/commit/f80e369f61ebd33dd9377bb42fcab64d17072b18.diff LOG: [PS4] Driver: use correct --shared option Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.cpp clang/test/Driver/ps4-ps5-linker-non-win.c clang/test/Driver/ps4-ps5-linker-win.c Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 55a8d4dbc24b4..35a83d79abfd1 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -143,7 +143,7 @@ void tools::PScpu::Linker::ConstructJob(Compilation &C, const JobAction &JA, if (Args.hasArg(options::OPT_rdynamic)) CmdArgs.push_back("-export-dynamic"); if (Args.hasArg(options::OPT_shared)) -CmdArgs.push_back("--oformat=so"); +CmdArgs.push_back("--shared"); if (Output.isFilename()) { CmdArgs.push_back("-o"); diff --git a/clang/test/Driver/ps4-ps5-linker-non-win.c b/clang/test/Driver/ps4-ps5-linker-non-win.c index cd7cd8e11ea07..b9686b88a7573 100644 --- a/clang/test/Driver/ps4-ps5-linker-non-win.c +++ b/clang/test/Driver/ps4-ps5-linker-non-win.c @@ -13,14 +13,15 @@ // RUN: env "PATH=%t:%PATH%" %clang -### -target x86_64-scei-ps4 %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-PS4-LINKER %s // RUN: env "PATH=%t:%PATH%" %clang -### -target x86_64-scei-ps4 %s -shared 2>&1 \ -// RUN: | FileCheck --check-prefix=CHECK-PS4-LINKER %s +// RUN: | FileCheck --check-prefixes=CHECK-PS4-LINKER,SHARED %s // RUN: env "PATH=%t:%PATH%" %clang -### -target x86_64-sie-ps5 %s 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-PS5-LINKER %s // RUN: env "PATH=%t:%PATH%" %clang -### -target x86_64-sie-ps5 %s -shared 2>&1 \ -// RUN: | FileCheck --check-prefix=CHECK-PS5-LINKER %s +// RUN: | FileCheck --check-prefixes=CHECK-PS5-LINKER,SHARED %s // CHECK-PS4-LINKER: /orbis-ld // CHECK-PS5-LINKER: /prospero-lld +// SHARED: "--shared" // RUN: env "PATH=%t:%PATH%" %clang -### -target x86_64-scei-ps4 %s -fuse-ld=gold 2>&1 \ // RUN: | FileCheck --check-prefix=ERROR %s diff --git a/clang/test/Driver/ps4-ps5-linker-win.c b/clang/test/Driver/ps4-ps5-linker-win.c index ca4084d4fccff..acff2c0f1f24c 100644 --- a/clang/test/Driver/ps4-ps5-linker-win.c +++ b/clang/test/Driver/ps4-ps5-linker-win.c @@ -10,14 +10,15 @@ // RUN: env "PATH=%t;%PATH%;" %clang -target x86_64-scei-ps4 %s -### 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-PS4-LINKER %s // RUN: env "PATH=%t;%PATH%;" %clang -target x86_64-scei-ps4 %s -shared -### 2>&1 \ -// RUN: | FileCheck --check-prefix=CHECK-PS4-LINKER %s +// RUN: | FileCheck --check-prefixes=CHECK-PS4-LINKER,SHARED %s // RUN: env "PATH=%t;%PATH%;" %clang -target x86_64-sie-ps5 %s -### 2>&1 \ // RUN: | FileCheck --check-prefix=CHECK-PS5-LINKER %s // RUN: env "PATH=%t;%PATH%;" %clang -target x86_64-sie-ps5 %s -shared -### 2>&1 \ -// RUN: | FileCheck --check-prefix=CHECK-PS5-LINKER %s +// RUN: | FileCheck --check-prefixes=CHECK-PS5-LINKER,SHARED %s // CHECK-PS4-LINKER: \\orbis-ld // CHECK-PS5-LINKER: \\prospero-lld +// SHARED: "--shared" // RUN: env "PATH=%t;%PATH%;" %clang -target x86_64-scei-ps4 %s -fuse-ld=gold -### 2>&1 \ // RUN: | FileCheck --check-prefix=ERROR %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 0d54457 - [IntrospectionTest] Replace "return" with "GTEST_SKIP"
Author: Paul Robinson Date: 2022-02-04T12:35:44-08:00 New Revision: 0d54457f8aed169dff8a668059979a2646afc3fc URL: https://github.com/llvm/llvm-project/commit/0d54457f8aed169dff8a668059979a2646afc3fc DIFF: https://github.com/llvm/llvm-project/commit/0d54457f8aed169dff8a668059979a2646afc3fc.diff LOG: [IntrospectionTest] Replace "return" with "GTEST_SKIP" If a test simply returns, it gets mis-reported as a pass; being reported as SKIPPED is correct. Found by the Rotten Green Tests project. Added: Modified: clang/unittests/Introspection/IntrospectionTest.cpp Removed: diff --git a/clang/unittests/Introspection/IntrospectionTest.cpp b/clang/unittests/Introspection/IntrospectionTest.cpp index d4f626bfeb740..69e461609e7dd 100644 --- a/clang/unittests/Introspection/IntrospectionTest.cpp +++ b/clang/unittests/Introspection/IntrospectionTest.cpp @@ -134,7 +134,7 @@ TEST(Introspection, SourceLocations_Formatter) { TEST(Introspection, SourceLocations_Stmt) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode("void foo() {} void bar() { foo(); }", "foo.cpp", std::make_shared()); auto &Ctx = AST->getASTContext(); @@ -169,7 +169,7 @@ TEST(Introspection, SourceLocations_Stmt) { TEST(Introspection, SourceLocations_Decl) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( namespace ns1 { @@ -354,7 +354,7 @@ STRING_LOCATION_STDPAIR(MethodDecl, getTypeSourceInfo()->getTypeLoc().getSourceR TEST(Introspection, SourceLocations_NNS) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( namespace ns @@ -414,7 +414,7 @@ void ns::A::foo() {} TEST(Introspection, SourceLocations_TA_Type) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( template @@ -472,7 +472,7 @@ STRING_LOCATION_PAIR( TEST(Introspection, SourceLocations_TA_Decl) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( template @@ -509,7 +509,7 @@ void test() { TEST(Introspection, SourceLocations_TA_Nullptr) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( template @@ -546,7 +546,7 @@ void test() { TEST(Introspection, SourceLocations_TA_Integral) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( template @@ -582,7 +582,7 @@ void test() { TEST(Introspection, SourceLocations_TA_Template) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( template class A; @@ -621,7 +621,7 @@ void bar() TEST(Introspection, SourceLocations_TA_TemplateExpansion) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCodeWithArgs( R"cpp( template class ...> class B { }; @@ -660,7 +660,7 @@ template class ...> class B { }; TEST(Introspection, SourceLocations_TA_Expression) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( template class testExpr; @@ -693,7 +693,7 @@ template class testExpr { }; TEST(Introspection, SourceLocations_TA_Pack) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCodeWithArgs( R"cpp( template class A {}; @@ -748,7 +748,7 @@ STRING_LOCATION_PAIR( TEST(Introspection, SourceLocations_CXXCtorInitializer_base) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( struct A { @@ -808,7 +808,7 @@ STRING_LOCATION_PAIR(CtorInit, getTypeSourceInfo()->getTypeLoc().getEndLoc()) TEST(Introspection, SourceLocations_CXXCtorInitializer_member) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( struct A { @@ -849,7 +849,7 @@ struct A { TEST(Introspection, SourceLocations_CXXCtorInitializer_ctor) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCode(R"cpp( struct C { @@ -906,7 +906,7 @@ STRING_LOCATION_PAIR(CtorInit, TEST(Introspection, SourceLocations_CXXCtorInitializer_pack) { if (!NodeIntrospection::hasIntrospectionSupport()) -return; +GTEST_SKIP(); auto AST = buildASTFromCodeWithArgs( R"cpp( template @@ -979,7 +979,7 @@ STRING_LOCATION_STDPAIR(CtorInit, getTypeSourceInfo()->getTypeLoc().getE
[clang] 5c90eca - [PS5] Driver test for analyzer defaults
Author: Paul Robinson Date: 2022-04-25T12:42:00-07:00 New Revision: 5c90ecae2db104a816aeb33b6f773aaf782850e7 URL: https://github.com/llvm/llvm-project/commit/5c90ecae2db104a816aeb33b6f773aaf782850e7 DIFF: https://github.com/llvm/llvm-project/commit/5c90ecae2db104a816aeb33b6f773aaf782850e7.diff LOG: [PS5] Driver test for analyzer defaults Added: clang/test/Driver/ps4-ps5-analyzer-defaults.cpp Modified: Removed: clang/test/Driver/ps4-analyzer-defaults.cpp diff --git a/clang/test/Driver/ps4-analyzer-defaults.cpp b/clang/test/Driver/ps4-analyzer-defaults.cpp deleted file mode 100644 index e1649a38b6287..0 --- a/clang/test/Driver/ps4-analyzer-defaults.cpp +++ /dev/null @@ -1,33 +0,0 @@ -// Check that the default analyzer checkers for PS4 are: -// core -// cplusplus -// deadcode -// nullability -// unix -// Excluding: -// unix.API -// unix.Vfork - -// Check for expected checkers -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PS4-POS-CHECKERS -// -// Negative check for unexpected checkers -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PS4-NEG-CHECKERS -// -// Check for all unix checkers except API and Vfork -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PS4-UNIX-CHECKERS - -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=core -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=cplusplus -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=deadcode -// CHECK-PS4-POS-CHECKERS-DAG: analyzer-checker=nullability -// -// CHECK-PS4-NEG-CHECKERS-NOT: analyzer-checker={{osx|security}} -// -// CHECK-PS4-UNIX-CHECKERS: analyzer-checker=unix -// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.API -// CHECK-PS4-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.Vfork -// CHECK-PS4-UNIX-CHECKERS-NOT: analyzer-checker=unix.{{API|Vfork}} diff --git a/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp b/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp new file mode 100644 index 0..6e76f2c90ac84 --- /dev/null +++ b/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp @@ -0,0 +1,39 @@ +// Check that the default analyzer checkers for PS4/PS5 are: +// core +// cplusplus +// deadcode +// nullability +// unix +// Excluding: +// unix.API +// unix.Vfork + +// Check for expected checkers +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-POS-CHECKERS +// RUN: %clang -target x86_64-sie-ps5 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-POS-CHECKERS +// +// Negative check for unexpected checkers +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-NEG-CHECKERS +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-NEG-CHECKERS +// +// Check for all unix checkers except API and Vfork +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-UNIX-CHECKERS +// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-UNIX-CHECKERS + +// CHECK-POS-CHECKERS-DAG: analyzer-checker=core +// CHECK-POS-CHECKERS-DAG: analyzer-checker=cplusplus +// CHECK-POS-CHECKERS-DAG: analyzer-checker=deadcode +// CHECK-POS-CHECKERS-DAG: analyzer-checker=nullability +// +// CHECK-NEG-CHECKERS-NOT: analyzer-checker={{osx|security}} +// +// CHECK-UNIX-CHECKERS: analyzer-checker=unix +// CHECK-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.API +// CHECK-UNIX-CHECKERS-DAG: analyzer-disable-checker=unix.Vfork +// CHECK-UNIX-CHECKERS-NOT: analyzer-checker=unix.{{API|Vfork}} ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] b375882 - [PS5] Correctly test for analyzer defaults
Author: Paul Robinson Date: 2022-04-26T07:14:48-07:00 New Revision: b375882014ccaa19c14bc7dc46a666a5a09bbb40 URL: https://github.com/llvm/llvm-project/commit/b375882014ccaa19c14bc7dc46a666a5a09bbb40 DIFF: https://github.com/llvm/llvm-project/commit/b375882014ccaa19c14bc7dc46a666a5a09bbb40.diff LOG: [PS5] Correctly test for analyzer defaults Commit 5c90eca added some analyzer option checking, but a typo meant it was redundantly checking PS4 and not adding checking for PS5. With the test corrected, it identified the necessary driver updates, added in this commit. Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/ps4-ps5-analyzer-defaults.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 0fd639da45ddf..6e4eadd3ab0e7 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3167,8 +3167,8 @@ static void RenderAnalyzerOptions(const ArgList &Args, ArgStringList &CmdArgs, CmdArgs.push_back("-analyzer-checker=unix.cstring.NullArg"); } -// Disable some unix checkers for PS4. -if (Triple.isPS4()) { +// Disable some unix checkers for PS4/PS5. +if (Triple.isPS()) { CmdArgs.push_back("-analyzer-disable-checker=unix.API"); CmdArgs.push_back("-analyzer-disable-checker=unix.Vfork"); } @@ -3186,7 +3186,7 @@ static void RenderAnalyzerOptions(const ArgList &Args, ArgStringList &CmdArgs, if (types::isCXX(Input.getType())) CmdArgs.push_back("-analyzer-checker=cplusplus"); -if (!Triple.isPS4()) { +if (!Triple.isPS()) { CmdArgs.push_back("-analyzer-checker=security.insecureAPI.UncheckedReturn"); CmdArgs.push_back("-analyzer-checker=security.insecureAPI.getpw"); CmdArgs.push_back("-analyzer-checker=security.insecureAPI.gets"); diff --git a/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp b/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp index 6e76f2c90ac84..81a302c6bcbe3 100644 --- a/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp +++ b/clang/test/Driver/ps4-ps5-analyzer-defaults.cpp @@ -17,13 +17,13 @@ // Negative check for unexpected checkers // RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-NEG-CHECKERS -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: %clang -target x86_64-sie-ps5 --analyze %s -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-NEG-CHECKERS // // Check for all unix checkers except API and Vfork // RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-UNIX-CHECKERS -// RUN: %clang -target x86_64-scei-ps4 --analyze %s -### 2>&1 \ +// RUN: %clang -target x86_64-sie-ps5 --analyze %s -### 2>&1 \ // RUN: | FileCheck %s --check-prefix=CHECK-UNIX-CHECKERS // CHECK-POS-CHECKERS-DAG: analyzer-checker=core ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 72adc46 - [PS5] Add debug option testing for the PS5 target
Author: Paul Robinson Date: 2022-04-26T13:42:38-07:00 New Revision: 72adc461cca59e3ed1fd2409aa592805572b URL: https://github.com/llvm/llvm-project/commit/72adc461cca59e3ed1fd2409aa592805572b DIFF: https://github.com/llvm/llvm-project/commit/72adc461cca59e3ed1fd2409aa592805572b.diff LOG: [PS5] Add debug option testing for the PS5 target The functionality was added in 7726ad0, catching up on the tests now. This test mostly runs clang and checks one thing each time, which isn't very efficient. I added some -DAG suffixes and combined some checks so adding PS5 checking didn't actually increase the number of clang runs. Added: Modified: clang/test/Driver/debug-options.c Removed: diff --git a/clang/test/Driver/debug-options.c b/clang/test/Driver/debug-options.c index e4a49269a8c70..4b0d7912003d2 100644 --- a/clang/test/Driver/debug-options.c +++ b/clang/test/Driver/debug-options.c @@ -89,16 +89,17 @@ // RUN: %clang_cl -### -c -Z7 -target x86_64-windows-msvc -- %s 2>&1 \ // RUN: | FileCheck -check-prefix=G_NOTUNING %s -// On the PS4, -g defaults to -gno-column-info, and we always generate the +// On the PS4/PS5, -g defaults to -gno-column-info, and we always generate the // arange section. // RUN: %clang -### -c %s -target x86_64-scei-ps4 2>&1 \ -// RUN: | FileCheck -check-prefix=NOG_PS4 %s -// RUN: %clang -### -c %s -g -target x86_64-scei-ps4 2>&1 \ -// RUN: | FileCheck -check-prefix=G_PS4 %s -// RUN: %clang -### -c %s -g -target x86_64-scei-ps4 2>&1 \ -// RUN: | FileCheck -check-prefix=G_SCE %s +// RUN: | FileCheck -check-prefix=NOG_PS %s +// RUN: %clang -### -c %s -target x86_64-sie-ps5 2>&1 \ +// RUN: | FileCheck -check-prefix=NOG_PS %s +/// PS4 will stay on v4 even if the generic default version changes. // RUN: %clang -### -c %s -g -target x86_64-scei-ps4 2>&1 \ -// RUN: | FileCheck -check-prefix=NOCI %s +// RUN: | FileCheck -check-prefixes=G_DWARF4,GARANGE,G_SCE,NOCI,FWD_TMPL_PARAMS %s +// RUN: %clang -### -c %s -g -target x86_64-sie-ps5 2>&1 \ +// RUN: | FileCheck -check-prefixes=G_DWARF5,GARANGE,G_SCE,NOCI,FWD_TMPL_PARAMS %s // RUN: %clang -### -c %s -g -gcolumn-info -target x86_64-scei-ps4 2>&1 \ // RUN: | FileCheck -check-prefix=CI %s // RUN: %clang -### -c %s -gsce -target x86_64-unknown-linux 2>&1 \ @@ -280,15 +281,10 @@ // RUN: %clang -### -target %itanium_abi_triple -gmodules -gline-directives-only %s 2>&1 \ // RUN:| FileCheck -check-prefix=GLIO_ONLY %s // -// NOG_PS4: "-cc1" -// NOG_PS4-NOT: "-dwarf-version= -// NOG_PS4: "-generate-arange-section" -// NOG_PS4-NOT: "-dwarf-version= -// -// G_PS4: "-cc1" -/// PS4 will stay on v4 even if the generic default version changes. -// G_PS4: "-dwarf-version=4" -// G_PS4: "-generate-arange-section" +// NOG_PS: "-cc1" +// NOG_PS-NOT: "-dwarf-version= +// NOG_PS: "-generate-arange-section" +// NOG_PS-NOT: "-dwarf-version= // // G_ERR: error: unknown argument: // @@ -327,11 +323,12 @@ // G_LIMITED: "-cc1" // G_LIMITED: "-debug-info-kind=constructor" // G_DWARF2: "-dwarf-version=2" -// G_DWARF4: "-dwarf-version=4" +// G_DWARF4-DAG: "-dwarf-version=4" +// G_DWARF5-DAG: "-dwarf-version=5" // // G_GDB: "-debugger-tuning=gdb" // G_LLDB: "-debugger-tuning=lldb" -// G_SCE: "-debugger-tuning=sce" +// G_SCE-DAG: "-debugger-tuning=sce" // G_DBX: "-debugger-tuning=dbx" // // STRICT: "-gstrict-dwarf" @@ -370,7 +367,7 @@ // RNGBSE: -fdebug-ranges-base-address // NORNGBSE-NOT: -fdebug-ranges-base-address // -// GARANGE: -generate-arange-section +// GARANGE-DAG: -generate-arange-section // // FDTS: "-mllvm" "-generate-type-units" // FDTSE: error: unsupported option '-fdebug-types-section' for target 'x86_64-apple-darwin' @@ -380,7 +377,7 @@ // // CI-NOT: "-gno-column-info" // -// NOCI: "-gno-column-info" +// NOCI-DAG: "-gno-column-info" // // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" // GEXTREFS: "-debug-info-kind={{standalone|constructor}}" @@ -444,9 +441,9 @@ // DIRECTORY-NOT: "-fno-dwarf-directory-asm" // NODIRECTORY: "-fno-dwarf-directory-asm" -// RUN: %clang -### -target x86_64 -c -g -gsimple-template-names %s 2>&1 | FileCheck --check-prefix=SIMPLE_TEMP_NAMES %s -// SIMPLE_TEMP_NAMES: -gsimple-template-names=simple -// SIMPLE_TEMP_NAMES: -debug-forward-template-params +// RUN: %clang -### -target x86_64 -c -g -gsimple-template-names %s 2>&1 | FileCheck --check-prefixes=SIMPLE_TMPL_NAMES,FWD_TMPL_PARAMS %s +// SIMPLE_TMPL_NAMES: -gsimple-template-names=simple +// FWD_TMPL_PARAMS-DAG: -debug-forward-template-params // RUN: not %clang -### -target x86_64 -c -g -gsimple-template-names=mangled %s 2>&1 | FileCheck --check-prefix=MANGLED_TEMP_NAMES %s // MANGLED_TEMP_NAMES: error: unknown argument: '-gsimple-template-names=mangled' // RUN: %clang -### -target x86_64
[clang] fd0e60d - [PS5] Test sanitizer options/lib names
Author: Paul Robinson Date: 2022-04-27T13:45:41-07:00 New Revision: fd0e60d7874363a641e35a862b05d8dfabab77ef URL: https://github.com/llvm/llvm-project/commit/fd0e60d7874363a641e35a862b05d8dfabab77ef DIFF: https://github.com/llvm/llvm-project/commit/fd0e60d7874363a641e35a862b05d8dfabab77ef.diff LOG: [PS5] Test sanitizer options/lib names The functionality was added in 7726ad0, catching up on the tests now. Added: Modified: clang/test/Driver/fsanitize.c clang/test/Driver/sanitizer-ld.c Removed: diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index f31e6156120fd..c6135f88541b6 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -783,6 +783,29 @@ // RUN: %clang -target x86_64-scei-ps4 -fsanitize=address -nodefaultlibs -nostdlib %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-NOLIB-PS4 // CHECK-ASAN-NOLIB-PS4-NOT: SceDbgAddressSanitizer_stub_weak +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-PS5 +// Make sure there are no *.{o,bc} or -l passed before the ASan library. +// CHECK-ASAN-PS5-NOT: {{(\.(o|bc)"? |-l).*-lSceAddressSanitizer_nosubmission_stub_weak}} +// CHECK-ASAN-PS5: --dependent-lib=libSceAddressSanitizer_nosubmission_stub_weak.a +// CHECK-ASAN-PS5-NOT: {{(\.(o|bc)"? |-l).*-lSceAddressSanitizer_nosubmission_stub_weak}} +// CHECK-ASAN-PS5: -lSceAddressSanitizer_nosubmission_stub_weak +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=address -nostdlib %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-NOLIB-PS5 +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=address -nodefaultlibs %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-NOLIB-PS5 +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=address -nodefaultlibs -nostdlib %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-NOLIB-PS5 +// CHECK-ASAN-NOLIB-PS5-NOT: SceAddressSanitizer_nosubmission_stub_weak + +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=thread %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-PS5 +// Make sure there are no *.{o,bc} or -l passed before the TSan library. +// CHECK-TSAN-PS5-NOT: {{(\.(o|bc)"? |-l).*-lSceThreadSanitizer_nosubmission_stub_weak}} +// CHECK-TSAN-PS5: --dependent-lib=libSceThreadSanitizer_nosubmission_stub_weak.a +// CHECK-TSAN-PS5-NOT: {{(\.(o|bc)"? |-l).*-lSceThreadSanitizer_nosubmission_stub_weak}} +// CHECK-TSAN-PS5: -lSceThreadSanitizer_nosubmission_stub_weak +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=thread -nostdlib %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-NOLIB-PS5 +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=thread -nodefaultlibs %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-NOLIB-PS5 +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=thread -nodefaultlibs -nostdlib %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-TSAN-NOLIB-PS5 +// CHECK-TSAN-NOLIB-PS5-NOT: SceThreadSanitizer_nosubmission_stub_weak + + // RUN: %clang -target x86_64-linux-gnu -fsanitize=address -fsanitize-minimal-runtime %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-MINIMAL // CHECK-ASAN-MINIMAL: error: invalid argument '-fsanitize-minimal-runtime' not allowed with '-fsanitize=address' diff --git a/clang/test/Driver/sanitizer-ld.c b/clang/test/Driver/sanitizer-ld.c index 966edbd7d038b..def3ef967a46e 100644 --- a/clang/test/Driver/sanitizer-ld.c +++ b/clang/test/Driver/sanitizer-ld.c @@ -759,6 +759,14 @@ // CHECK-UBSAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}" // CHECK-UBSAN-PS4: -lSceDbgUBSanitizer_stub_weak +// RUN: %clang -fsanitize=undefined %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-sie-ps5 -fuse-ld=ld \ +// RUN: -shared \ +// RUN: | FileCheck --check-prefix=CHECK-UBSAN-PS5 %s +// CHECK-UBSAN-PS5: --dependent-lib=libSceUBSanitizer_nosubmission_stub_weak.a +// CHECK-UBSAN-PS5: "{{.*}}ld{{(.gold)?(.exe)?}}" +// CHECK-UBSAN-PS5: -lSceUBSanitizer_nosubmission_stub_weak + // RUN: %clang -fsanitize=address %s -### -o %t.o 2>&1 \ // RUN: -target x86_64-scei-ps4 -fuse-ld=ld \ // RUN: -shared \ @@ -767,6 +775,14 @@ // CHECK-ASAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}" // CHECK-ASAN-PS4: -lSceDbgAddressSanitizer_stub_weak +// RUN: %clang -fsanitize=address %s -### -o %t.o 2>&1 \ +// RUN: -target x86_64-sie-ps5 -fuse-ld=ld \ +// RUN: -shared \ +// RUN: | FileCheck --check-prefix=CHECK-ASAN-PS5 %s +// CHECK-ASAN-PS5: --dependent-lib=libSceAddressSanitizer_nosubmission_stub_weak.a +// CHECK-ASAN-PS5: "{{.*}}ld{{(.gold)?(.exe)?}}" +// CHECK-ASAN-PS5: -lSceAddressSanitizer_nosubmission_stub_weak + // RUN: %clang -fsanitize=address,undefined %s -### -o %t.o 2>&1 \ // RUN: -target x86_64-scei-ps4 -fuse-ld=ld \ // RUN: -shared \ @@ -777,6 +793,16 @@ // CHECK-AUBSAN-PS4: "{{.*}}ld{{(.gold)?(.exe)?}}" // CHECK-AUBSAN-PS4: -lSceDbgAddressSanitizer_stub_weak +// RUN: %clang -fsaniti
[clang] 7d2dddc - [PS5] Enable dead-stripping globals in ASan
Author: Paul Robinson Date: 2022-04-27T15:44:42-07:00 New Revision: 7d2dddce8f0d3ed896f1437b01a097cb7fd1bfe9 URL: https://github.com/llvm/llvm-project/commit/7d2dddce8f0d3ed896f1437b01a097cb7fd1bfe9 DIFF: https://github.com/llvm/llvm-project/commit/7d2dddce8f0d3ed896f1437b01a097cb7fd1bfe9.diff LOG: [PS5] Enable dead-stripping globals in ASan Added: Modified: clang/lib/Driver/SanitizerArgs.cpp clang/test/Driver/fsanitize.c Removed: diff --git a/clang/lib/Driver/SanitizerArgs.cpp b/clang/lib/Driver/SanitizerArgs.cpp index a8227f1f8285..b63c6e463706 100644 --- a/clang/lib/Driver/SanitizerArgs.cpp +++ b/clang/lib/Driver/SanitizerArgs.cpp @@ -857,13 +857,13 @@ SanitizerArgs::SanitizerArgs(const ToolChain &TC, AsanOutlineInstrumentation); // As a workaround for a bug in gold 2.26 and earlier, dead stripping of -// globals in ASan is disabled by default on ELF targets. +// globals in ASan is disabled by default on most ELF targets. // See https://sourceware.org/bugzilla/show_bug.cgi?id=19002 AsanGlobalsDeadStripping = Args.hasFlag( options::OPT_fsanitize_address_globals_dead_stripping, options::OPT_fno_sanitize_address_globals_dead_stripping, !TC.getTriple().isOSBinFormatELF() || TC.getTriple().isOSFuchsia() || -TC.getTriple().isPS4()); +TC.getTriple().isPS()); AsanUseOdrIndicator = Args.hasFlag(options::OPT_fsanitize_address_use_odr_indicator, diff --git a/clang/test/Driver/fsanitize.c b/clang/test/Driver/fsanitize.c index c6135f88541b..4b03bfc9dcb7 100644 --- a/clang/test/Driver/fsanitize.c +++ b/clang/test/Driver/fsanitize.c @@ -245,6 +245,7 @@ // RUN: %clang_cl --target=x86_64-windows-msvc -fsanitize=address -fsanitize-address-globals-dead-stripping -### -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-GLOBALS // RUN: %clang_cl --target=x86_64-windows-msvc -fsanitize=address -### -- %s 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-GLOBALS // RUN: %clang -target x86_64-scei-ps4 -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-GLOBALS +// RUN: %clang -target x86_64-sie-ps5 -fsanitize=address %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ASAN-GLOBALS // CHECK-ASAN-GLOBALS: -cc1{{.*}}-fsanitize-address-globals-dead-stripping // CHECK-NO-ASAN-GLOBALS-NOT: -cc1{{.*}}-fsanitize-address-globals-dead-stripping ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 8854d12 - [PS5] Disable exceptions by default
Author: Paul Robinson Date: 2022-04-28T07:16:16-07:00 New Revision: 8854d1244c905b20dd62db3a7430043477e1ad3b URL: https://github.com/llvm/llvm-project/commit/8854d1244c905b20dd62db3a7430043477e1ad3b DIFF: https://github.com/llvm/llvm-project/commit/8854d1244c905b20dd62db3a7430043477e1ad3b.diff LOG: [PS5] Disable exceptions by default Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/clang-exception-flags.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 01380f9e1985..1f083de405f0 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -459,9 +459,9 @@ static bool addExceptionArgs(const ArgList &Args, types::ID InputType, } if (types::isCXX(InputType)) { -// Disable C++ EH by default on XCore and PS4. +// Disable C++ EH by default on XCore and PS4/PS5. bool CXXExceptionsEnabled = -Triple.getArch() != llvm::Triple::xcore && !Triple.isPS4(); +Triple.getArch() != llvm::Triple::xcore && !Triple.isPS(); Arg *ExceptionArg = Args.getLastArg( options::OPT_fcxx_exceptions, options::OPT_fno_cxx_exceptions, options::OPT_fexceptions, options::OPT_fno_exceptions); diff --git a/clang/test/Driver/clang-exception-flags.cpp b/clang/test/Driver/clang-exception-flags.cpp index a5faed228e05..af63a0ab03be 100644 --- a/clang/test/Driver/clang-exception-flags.cpp +++ b/clang/test/Driver/clang-exception-flags.cpp @@ -24,5 +24,6 @@ // RUN: %clang -### -fexceptions -fno-cxx-exceptions %s 2>&1 | FileCheck %s -check-prefix=OFF4 // OFF4-NOT: "-cc1" {{.*}} "-fcxx-exceptions" // -// RUN: %clang -### -target x86_64-scei-ps4 %s 2>&1 | FileCheck %s -check-prefix=PS4-OFF -// PS4-OFF-NOT: "-cc1" {{.*}} "-f{{(cxx-)?}}exceptions" +// RUN: %clang -### -target x86_64-scei-ps4 %s 2>&1 | FileCheck %s -check-prefix=PS-OFF +// RUN: %clang -### -target x86_64-sie-ps5 %s 2>&1 | FileCheck %s -check-prefix=PS-OFF +// PS-OFF-NOT: "-cc1" {{.*}} "-f{{(cxx-)?}}exceptions" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 451c557 - [PS5] Set default cpu to znver2, with no tuning
Author: Paul Robinson Date: 2022-04-28T07:50:37-07:00 New Revision: 451c5578b834fe3aca4e495aaf6a2f32639e86a6 URL: https://github.com/llvm/llvm-project/commit/451c5578b834fe3aca4e495aaf6a2f32639e86a6 DIFF: https://github.com/llvm/llvm-project/commit/451c5578b834fe3aca4e495aaf6a2f32639e86a6.diff LOG: [PS5] Set default cpu to znver2, with no tuning Added: Modified: clang/lib/Driver/ToolChains/Arch/X86.cpp clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/ps4-cpu-defaults.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/Arch/X86.cpp b/clang/lib/Driver/ToolChains/Arch/X86.cpp index 73df835585239..de0725b8d6de6 100644 --- a/clang/lib/Driver/ToolChains/Arch/X86.cpp +++ b/clang/lib/Driver/ToolChains/Arch/X86.cpp @@ -88,9 +88,11 @@ std::string x86::getX86TargetCPU(const Driver &D, const ArgList &Args, return Is64Bit ? "core2" : "yonah"; } - // Set up default CPU name for PS4 compilers. + // Set up default CPU name for PS4/PS5 compilers. if (Triple.isPS4()) return "btver2"; + if (Triple.isPS5()) +return "znver2"; // On Android use targets compatible with gcc if (Triple.isAndroid()) diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 1f083de405f0a..52dbe07ab3551 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -2296,10 +2296,10 @@ void Clang::AddX86TargetArgs(const ArgList &Args, // Handle -mtune. - // Default to "generic" unless -march is present or targetting the PS4. + // Default to "generic" unless -march is present or targetting the PS4/PS5. std::string TuneCPU; if (!Args.hasArg(clang::driver::options::OPT_march_EQ) && - !getToolChain().getTriple().isPS4()) + !getToolChain().getTriple().isPS()) TuneCPU = "generic"; // Override based on -mtune. diff --git a/clang/test/Driver/ps4-cpu-defaults.cpp b/clang/test/Driver/ps4-cpu-defaults.cpp index 46fa8897e6fae..8102c4b144a35 100644 --- a/clang/test/Driver/ps4-cpu-defaults.cpp +++ b/clang/test/Driver/ps4-cpu-defaults.cpp @@ -1,7 +1,10 @@ // Check that on the PS4 we default to: -// -target-cpu btver2, no exceptions and not -tune-cpu generic +// -target-cpu btver2, not -tune-cpu generic +// And on the PS5 we default to: +// -target-cpu znver2, not -tune-cpu generic -// RUN: %clang -target x86_64-scei-ps4 -c %s -### 2>&1 | FileCheck %s -// CHECK: "-target-cpu" "btver2" -// CHECK-NOT: exceptions -// CHECK-NOT: "-tune-cpu" +// RUN: %clang -target x86_64-scei-ps4 -c %s -### 2>&1 | FileCheck --check-prefixes=PS4,BOTH %s +// RUN: %clang -target x86_64-sie-ps5 -c %s -### 2>&1 | FileCheck --check-prefixes=PS5,BOTH %s +// PS4: "-target-cpu" "btver2" +// PS5: "-target-cpu" "znver2" +// BOTH-NOT: "-tune-cpu" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 501cc4a - [PS5] Rename a test to reflect its new purpose
Author: Paul Robinson Date: 2022-04-28T08:07:50-07:00 New Revision: 501cc4ae304f29e392a2b7e21c316e3abf954daa URL: https://github.com/llvm/llvm-project/commit/501cc4ae304f29e392a2b7e21c316e3abf954daa DIFF: https://github.com/llvm/llvm-project/commit/501cc4ae304f29e392a2b7e21c316e3abf954daa.diff LOG: [PS5] Rename a test to reflect its new purpose Added: clang/test/Driver/ps4-ps5-cpu-defaults.cpp Modified: Removed: clang/test/Driver/ps4-cpu-defaults.cpp diff --git a/clang/test/Driver/ps4-cpu-defaults.cpp b/clang/test/Driver/ps4-ps5-cpu-defaults.cpp similarity index 100% rename from clang/test/Driver/ps4-cpu-defaults.cpp rename to clang/test/Driver/ps4-ps5-cpu-defaults.cpp ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] db013b2 - [PS5] Defaults for -fdeclspec, -ffunction/data-sections
Author: Paul Robinson Date: 2022-04-28T10:03:46-07:00 New Revision: db013b28c3d4a92cc007c878eb4d6585ba86dd1a URL: https://github.com/llvm/llvm-project/commit/db013b28c3d4a92cc007c878eb4d6585ba86dd1a DIFF: https://github.com/llvm/llvm-project/commit/db013b28c3d4a92cc007c878eb4d6585ba86dd1a.diff LOG: [PS5] Defaults for -fdeclspec, -ffunction/data-sections Added: clang/test/Driver/ps4-ps5-toolchain.c Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/lib/Driver/ToolChains/CommonArgs.cpp Removed: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 4c22d331be03..8c68473e56a7 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6441,9 +6441,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, Args.addOptInFlag(CmdArgs, options::OPT_fborland_extensions, options::OPT_fno_borland_extensions); - // -fno-declspec is default, except for PS4. + // -fno-declspec is default, except for PS4/PS5. if (Args.hasFlag(options::OPT_fdeclspec, options::OPT_fno_declspec, - RawTriple.isPS4())) + RawTriple.isPS())) CmdArgs.push_back("-fdeclspec"); else if (Args.hasArg(options::OPT_fno_declspec)) CmdArgs.push_back("-fno-declspec"); // Explicitly disabling __declspec. diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 03a887a7527b..b646a1ddaf03 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -486,9 +486,9 @@ llvm::StringRef tools::getLTOParallelism(const ArgList &Args, const Driver &D) { return LtoJobsArg->getValue(); } -// CloudABI uses -ffunction-sections and -fdata-sections by default. +// CloudABI and PS4/PS5 use -ffunction-sections and -fdata-sections by default. bool tools::isUseSeparateSections(const llvm::Triple &Triple) { - return Triple.getOS() == llvm::Triple::CloudABI; + return Triple.getOS() == llvm::Triple::CloudABI || Triple.isPS(); } void tools::addLTOOptions(const ToolChain &ToolChain, const ArgList &Args, diff --git a/clang/test/Driver/ps4-ps5-toolchain.c b/clang/test/Driver/ps4-ps5-toolchain.c new file mode 100644 index ..308b80c6774b --- /dev/null +++ b/clang/test/Driver/ps4-ps5-toolchain.c @@ -0,0 +1,7 @@ +// PS4/PS5 miscellaneous toolchain defaults. + +// RUN: %clang -c %s -### -target x86_64-scei-ps4 2>&1 | FileCheck %s +// RUN: %clang -c %s -### -target x86_64-sie-ps5 2>&1 | FileCheck %s +// CHECK-DAG: "-ffunction-sections" +// CHECK-DAG: "-fdata-sections" +// CHECK-DAG: "-fdeclspec" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 17f3a92 - [PS5] Default to omit leaf frame pointer
Author: Paul Robinson Date: 2022-04-28T10:35:14-07:00 New Revision: 17f3a92ee5d5490e84cc81481b0947f6a9be3106 URL: https://github.com/llvm/llvm-project/commit/17f3a92ee5d5490e84cc81481b0947f6a9be3106 DIFF: https://github.com/llvm/llvm-project/commit/17f3a92ee5d5490e84cc81481b0947f6a9be3106.diff LOG: [PS5] Default to omit leaf frame pointer Added: Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/Driver/frame-pointer-elim.c Removed: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 8c68473e56a7..05034ab15f40 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -634,7 +634,7 @@ getFramePointerKind(const ArgList &Args, const llvm::Triple &Triple) { bool OmitLeafFP = Args.hasFlag(options::OPT_momit_leaf_frame_pointer, options::OPT_mno_omit_leaf_frame_pointer, - Triple.isAArch64() || Triple.isPS4() || Triple.isVE()); + Triple.isAArch64() || Triple.isPS() || Triple.isVE()); if (NoOmitFP || mustUseNonLeafFramePointerForTarget(Triple) || (!OmitFP && useFramePointerForTargetByDefault(Args, Triple))) { if (OmitLeafFP) diff --git a/clang/test/Driver/frame-pointer-elim.c b/clang/test/Driver/frame-pointer-elim.c index beb14a9a671a..79cc0ee1b18b 100644 --- a/clang/test/Driver/frame-pointer-elim.c +++ b/clang/test/Driver/frame-pointer-elim.c @@ -90,7 +90,7 @@ // WARN-OMIT-LEAF-7S-NOT: warning: optimization flag '-momit-leaf-frame-pointer' is not supported for target 'armv7s' // WARN-OMIT-LEAF-7S: "-mframe-pointer=non-leaf" -// On AArch64, PS4, and VE, default to omitting the frame pointer on leaf +// On AArch64, PS4, PS5, and VE, default to omitting the frame pointer on leaf // functions // RUN: %clang -### -target aarch64 -S %s 2>&1 | \ // RUN: FileCheck --check-prefix=KEEP-NON-LEAF %s @@ -98,6 +98,10 @@ // RUN: FileCheck --check-prefix=KEEP-NON-LEAF %s // RUN: %clang -### -target x86_64-scei-ps4 -S -O2 %s 2>&1 | \ // RUN: FileCheck --check-prefix=KEEP-NON-LEAF %s +// RUN: %clang -### -target x86_64-sie-ps5 -S %s 2>&1 | \ +// RUN: FileCheck --check-prefix=KEEP-NON-LEAF %s +// RUN: %clang -### -target x86_64-sie-ps5 -S -O2 %s 2>&1 | \ +// RUN: FileCheck --check-prefix=KEEP-NON-LEAF %s // RUN: %clang -### -target aarch64-apple-darwin -arch arm64_32 -S %s 2>&1 | \ // RUN: FileCheck --check-prefix=KEEP-NON-LEAF %s // RUN: %clang -### -target ve-unknown-linux-gnu -S %s 2>&1 | \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 214265b - [NFC] Add test for HasNativeLLVMSupport
Author: Paul Robinson Date: 2022-05-02T11:06:33-07:00 New Revision: 214265bce9dfe3a86d9e8e8869d58ee7eded20fa URL: https://github.com/llvm/llvm-project/commit/214265bce9dfe3a86d9e8e8869d58ee7eded20fa DIFF: https://github.com/llvm/llvm-project/commit/214265bce9dfe3a86d9e8e8869d58ee7eded20fa.diff LOG: [NFC] Add test for HasNativeLLVMSupport It looks like there used to be a test for this, but the test evolved in a way that caused the check for the diagnostic to be eliminated. Add a test that is obviously and specifically for that diagnostic. Added: clang/test/Driver/native-llvm.c Modified: Removed: diff --git a/clang/test/Driver/native-llvm.c b/clang/test/Driver/native-llvm.c new file mode 100644 index 0..c9543b855bc76 --- /dev/null +++ b/clang/test/Driver/native-llvm.c @@ -0,0 +1,5 @@ +// Check that clang reports an error message if -flto without -c is used +// on a toolchain that is not expecting it (HasNativeLLVMSupport() is false). + +// RUN: %clang -### -flto -target x86_64-unknown-unknown %s 2>&1 | FileCheck %s +// CHECK: error: {{.*}} unable to pass LLVM bit-code files to linker ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 2ed0123 - [PS5] Check for HasNativeLLVMSupport
Author: Paul Robinson Date: 2022-05-02T11:06:33-07:00 New Revision: 2ed0123b7fedd6360b0dc06cab9721f108123a98 URL: https://github.com/llvm/llvm-project/commit/2ed0123b7fedd6360b0dc06cab9721f108123a98 DIFF: https://github.com/llvm/llvm-project/commit/2ed0123b7fedd6360b0dc06cab9721f108123a98.diff LOG: [PS5] Check for HasNativeLLVMSupport Added: Modified: clang/test/Driver/ps4-ps5-toolchain.c Removed: diff --git a/clang/test/Driver/ps4-ps5-toolchain.c b/clang/test/Driver/ps4-ps5-toolchain.c index 308b80c6774b5..444e9df24714b 100644 --- a/clang/test/Driver/ps4-ps5-toolchain.c +++ b/clang/test/Driver/ps4-ps5-toolchain.c @@ -1,7 +1,13 @@ -// PS4/PS5 miscellaneous toolchain defaults. +/// PS4/PS5 miscellaneous toolchain behavior. // RUN: %clang -c %s -### -target x86_64-scei-ps4 2>&1 | FileCheck %s // RUN: %clang -c %s -### -target x86_64-sie-ps5 2>&1 | FileCheck %s // CHECK-DAG: "-ffunction-sections" // CHECK-DAG: "-fdata-sections" // CHECK-DAG: "-fdeclspec" + +/// Verify LTO is enabled (no diagnostic). +// RUN: %clang %s -### -target x86_64-scei-ps4 -flto 2>&1 | FileCheck %s --check-prefix=LTO +// RUN: %clang %s -### -target x86_64-sie-ps5 -flto 2>&1 | FileCheck %s --check-prefix=LTO +// LTO-NOT: error: +// LTO-NOT: unable to pass LLVM bit-code ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 2b9055c - [PS4/PS5] NFC: Use preferred predicate in a triple check
Author: Paul Robinson Date: 2022-07-12T08:10:25-07:00 New Revision: 2b9055cee657fbec1afa93da3751bb923649fbde URL: https://github.com/llvm/llvm-project/commit/2b9055cee657fbec1afa93da3751bb923649fbde DIFF: https://github.com/llvm/llvm-project/commit/2b9055cee657fbec1afa93da3751bb923649fbde.diff LOG: [PS4/PS5] NFC: Use preferred predicate in a triple check Also add a test to verify this difference in the PS4/PS5 ABIs, now that we have identified it. Added: Modified: clang/lib/Basic/TargetInfo.cpp clang/test/CodeGenCXX/uncopyable-args.cpp Removed: diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index e22ed34e7da46..6685145ea6d2e 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -503,7 +503,7 @@ bool TargetInfo::initFeatureMap( TargetInfo::CallingConvKind TargetInfo::getCallingConvKind(bool ClangABICompat4) const { if (getCXXABI() != TargetCXXABI::Microsoft && - (ClangABICompat4 || getTriple().getOS() == llvm::Triple::PS4)) + (ClangABICompat4 || getTriple().isPS4())) return CCK_ClangABI4OrPS4; return CCK_Default; } diff --git a/clang/test/CodeGenCXX/uncopyable-args.cpp b/clang/test/CodeGenCXX/uncopyable-args.cpp index 529bc3baf798d..e03c9970747a5 100644 --- a/clang/test/CodeGenCXX/uncopyable-args.cpp +++ b/clang/test/CodeGenCXX/uncopyable-args.cpp @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-unknown-unknown -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=NEWABI // RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-unknown-unknown -fclang-abi-compat=4.0 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=OLDABI // RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-scei-ps4 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=OLDABI +// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-sie-ps5 -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK --check-prefix=NEWABI // RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-windows-msvc -emit-llvm -o - %s -fms-compatibility -fms-compatibility-version=18 | FileCheck %s -check-prefix=WIN64 -check-prefix=WIN64-18 // RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -triple x86_64-windows-msvc -emit-llvm -o - %s -fms-compatibility -fms-compatibility-version=19 | FileCheck %s -check-prefix=WIN64 -check-prefix=WIN64-19 ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] dbd1ba2 - [PS5] Disable a test, same as PS4
Author: Paul Robinson Date: 2022-05-23T10:43:26-07:00 New Revision: dbd1ba28a3a435c87eb2a977028ea22e9aabf148 URL: https://github.com/llvm/llvm-project/commit/dbd1ba28a3a435c87eb2a977028ea22e9aabf148 DIFF: https://github.com/llvm/llvm-project/commit/dbd1ba28a3a435c87eb2a977028ea22e9aabf148.diff LOG: [PS5] Disable a test, same as PS4 Added: Modified: clang/test/Driver/nostdincxx.cpp Removed: Unicorn! · GitHub body { background-color: #f1f1f1; margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } .container { margin: 50px auto 40px auto; width: 600px; text-align: center; } a { color: #4183c4; text-decoration: none; } a:hover { text-decoration: underline; } h1 { letter-spacing: -1px; line-height: 60px; font-size: 60px; font-weight: 100; margin: 0px; text-shadow: 0 1px 0 #fff; } p { color: rgba(0, 0, 0, 0.5); margin: 10px 0 10px; font-size: 18px; font-weight: 200; line-height: 1.6em;} ul { list-style: none; margin: 25px 0; padding: 0; } li { display: table-cell; font-weight: bold; width: 1%; } .logo { display: inline-block; margin-top: 35px; } .logo-img-2x { display: none; } @media only screen and (-webkit-min-device-pixel-ratio: 2), only screen and ( min--moz-device-pixel-ratio: 2), only screen and ( -o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) { .logo-img-1x { display: none; } .logo-img-2x { display: inline-block; } } #suggestions { margin-top: 35px; color: #ccc; } #suggestions a { color: #66; font-weight: 200; font-size: 14px; margin: 0 10px; } No server is currently available to service your request. Sorry about that. Please try refreshing and contact us if the problem persists. https://github.com/contact";>Contact Support — https://www.githubstatus.com";>GitHub Status — https://twitter.com/githubstatus";>@githubstatus ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 217531f - [PS5] Make driver's PIC behavior match PS4
Author: Paul Robinson Date: 2022-05-23T12:50:22-07:00 New Revision: 217531f12b4b97dadb80c66ab97c71e57ae0adcf URL: https://github.com/llvm/llvm-project/commit/217531f12b4b97dadb80c66ab97c71e57ae0adcf DIFF: https://github.com/llvm/llvm-project/commit/217531f12b4b97dadb80c66ab97c71e57ae0adcf.diff LOG: [PS5] Make driver's PIC behavior match PS4 The new test is a copy of the corresponding PS4 test, with the triple etc updated, because there's currently no good way to make one lit test "iterate" with multiple targets. Added: clang/test/Driver/ps5-pic.c Modified: clang/include/clang/Basic/DiagnosticDriverKinds.td clang/lib/Driver/ToolChains/CommonArgs.cpp Removed: diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index 7961b006a9a00..3cc9565e6e8b2 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -546,8 +546,8 @@ def warn_drv_unable_to_find_directory_expected : Warning< "unable to find %0 directory, expected to be in '%1'">, InGroup, DefaultIgnore; -def warn_drv_ps4_force_pic : Warning< - "option '%0' was ignored by the PS4 toolchain, using '-fPIC'">, +def warn_drv_ps_force_pic : Warning< + "option '%0' was ignored by the %1 toolchain, using '-fPIC'">, InGroup; def warn_drv_ps_sdk_dir : Warning< diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp index 33f3df80a2a2e..45add8ad94a5f 100644 --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -1286,23 +1286,24 @@ tools::ParsePICArgs(const ToolChain &ToolChain, const ArgList &Args) { O.matches(options::OPT_fPIE) || O.matches(options::OPT_fPIC); } else { PIE = PIC = false; -if (EffectiveTriple.isPS4()) { +if (EffectiveTriple.isPS()) { Arg *ModelArg = Args.getLastArg(options::OPT_mcmodel_EQ); StringRef Model = ModelArg ? ModelArg->getValue() : ""; if (Model != "kernel") { PIC = true; -ToolChain.getDriver().Diag(diag::warn_drv_ps4_force_pic) -<< LastPICArg->getSpelling(); +ToolChain.getDriver().Diag(diag::warn_drv_ps_force_pic) +<< LastPICArg->getSpelling() +<< (EffectiveTriple.isPS4() ? "PS4" : "PS5"); } } } } } - // Introduce a Darwin and PS4-specific hack. If the default is PIC, but the - // PIC level would've been set to level 1, force it back to level 2 PIC + // Introduce a Darwin and PS4/PS5-specific hack. If the default is PIC, but + // the PIC level would've been set to level 1, force it back to level 2 PIC // instead. - if (PIC && (Triple.isOSDarwin() || EffectiveTriple.isPS4())) + if (PIC && (Triple.isOSDarwin() || EffectiveTriple.isPS())) IsPICLevelTwo |= ToolChain.isPICDefault(); // This kernel flags are a trump-card: they will disable PIC/PIE diff --git a/clang/test/Driver/ps5-pic.c b/clang/test/Driver/ps5-pic.c new file mode 100644 index 0..0396122accf40 --- /dev/null +++ b/clang/test/Driver/ps5-pic.c @@ -0,0 +1,106 @@ +// REQUIRES: x86-registered-target + +// Test the driver's control over the PIC behavior for PS5 compiler. +// These consist of tests of the relocation model flags and the +// pic level flags passed to CC1. +// +// CHECK-NO-PIC: "-mrelocation-model" "static" +// CHECK-NO-PIC-NOT: "-pic-level" +// CHECK-NO-PIC-NOT: "-pic-is-pie" +// +// CHECK-DYNAMIC-NO-PIC2: unsupported option '-mdynamic-no-pic' +// CHECK-DYNAMIC-NO-PIC2: "-mrelocation-model" "dynamic-no-pic" +// +// CHECK-PIC2: "-mrelocation-model" "pic" +// CHECK-PIC2: "-pic-level" "2" +// +// CHECK-PIE2: "-mrelocation-model" "pic" +// CHECK-PIE2: "-pic-is-pie" +// +// CHECK-NOPIC-IGNORED: using '-fPIC' +// CHECK-NOPIC-IGNORED: "-mrelocation-model" "pic" +// CHECK-NOPIC-IGNORED: "-pic-level" "2" +// +// CHECK-DIAG-PIC: option '-fno-PIC' was ignored by the PS5 toolchain, using '-fPIC' +// CHECK-DIAG-PIE: option '-fno-PIE' was ignored by the PS5 toolchain, using '-fPIC' +// CHECK-DIAG-pic: option '-fno-pic' was ignored by the PS5 toolchain, using '-fPIC' +// CHECK-DIAG-pie: option '-fno-pie' was ignored by the PS5 toolchain, using '-fPIC' +// +// CHECK-STATIC-ERR: unsupported option '-static' for target 'PS5' + +// RUN: %clang -c %s -target x86_64-sie-ps5 -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 +// RUN: %clang -c %s -target x86_64-sie-ps5 -fpic -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 +// RUN: %clang -c %s -target x86_64-sie-ps5 -fPIC -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PIC2 +// RUN: %clang -c %s -target x86_64-sie-ps5 -fpie -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PIE2 +// RUN: %clang -c %s -target x86_64-
[clang] 28432b0 - [PS5] Verify defaults to -fno-stack-size-section
Author: Paul Robinson Date: 2022-05-24T09:47:37-07:00 New Revision: 28432b0f655641df7f9d079cf69ba235038d6340 URL: https://github.com/llvm/llvm-project/commit/28432b0f655641df7f9d079cf69ba235038d6340 DIFF: https://github.com/llvm/llvm-project/commit/28432b0f655641df7f9d079cf69ba235038d6340.diff LOG: [PS5] Verify defaults to -fno-stack-size-section Added: Modified: clang/test/Driver/stack-size-section.c Removed: diff --git a/clang/test/Driver/stack-size-section.c b/clang/test/Driver/stack-size-section.c index 461f0b5c9aee..18fb55f4ac9f 100644 --- a/clang/test/Driver/stack-size-section.c +++ b/clang/test/Driver/stack-size-section.c @@ -1,4 +1,5 @@ // RUN: %clang -target x86_64-unknown %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT +// RUN: %clang -target x86_64-sie-ps5 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT // RUN: %clang -target x86_64-scei-ps4 -fno-stack-size-section %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT // CHECK-ABSENT-NOT: -fstack-size-section @@ -6,4 +7,9 @@ // RUN: %clang -target x86_64-scei-ps4 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PRESENT // CHECK-PRESENT: -fstack-size-section +// RUN: %clang -target x86_64-unknown -fstack-size-section -fno-stack-size-section -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-ABSENT +// RUN: %clang -target x86_64-unknown -fnostack-size-section -fstack-size-section -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PRESENT + int foo() { return 42; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] efebb27 - Revert "[PS5] Verify defaults to -fno-stack-size-section"
Author: Paul Robinson Date: 2022-05-24T10:00:33-07:00 New Revision: efebb27b745a0d677ad2ea9aefff242c12aef29c URL: https://github.com/llvm/llvm-project/commit/efebb27b745a0d677ad2ea9aefff242c12aef29c DIFF: https://github.com/llvm/llvm-project/commit/efebb27b745a0d677ad2ea9aefff242c12aef29c.diff LOG: Revert "[PS5] Verify defaults to -fno-stack-size-section" This reverts commit 28432b0f655641df7f9d079cf69ba235038d6340. Caused some unexpected buildbot failures. Added: Modified: clang/test/Driver/stack-size-section.c Removed: diff --git a/clang/test/Driver/stack-size-section.c b/clang/test/Driver/stack-size-section.c index 18fb55f4ac9f..461f0b5c9aee 100644 --- a/clang/test/Driver/stack-size-section.c +++ b/clang/test/Driver/stack-size-section.c @@ -1,5 +1,4 @@ // RUN: %clang -target x86_64-unknown %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT -// RUN: %clang -target x86_64-sie-ps5 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT // RUN: %clang -target x86_64-scei-ps4 -fno-stack-size-section %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT // CHECK-ABSENT-NOT: -fstack-size-section @@ -7,9 +6,4 @@ // RUN: %clang -target x86_64-scei-ps4 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PRESENT // CHECK-PRESENT: -fstack-size-section -// RUN: %clang -target x86_64-unknown -fstack-size-section -fno-stack-size-section -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-ABSENT -// RUN: %clang -target x86_64-unknown -fnostack-size-section -fstack-size-section -### 2>&1 \ -// RUN: | FileCheck %s --check-prefix=CHECK-PRESENT - int foo() { return 42; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 4a3e2af - Reland "[PS5] Verify defaults to -fno-stack-size-section"
Author: Paul Robinson Date: 2022-05-24T10:09:39-07:00 New Revision: 4a3e2aff5f849278f6c49678fd21f8ca5e59c4e7 URL: https://github.com/llvm/llvm-project/commit/4a3e2aff5f849278f6c49678fd21f8ca5e59c4e7 DIFF: https://github.com/llvm/llvm-project/commit/4a3e2aff5f849278f6c49678fd21f8ca5e59c4e7.diff LOG: Reland "[PS5] Verify defaults to -fno-stack-size-section" This reverts commit efebb27b745a0d677ad2ea9aefff242c12aef29c. Fixes typos (accidentally omitted %s from some RUN lines). Added: Modified: clang/test/Driver/stack-size-section.c Removed: diff --git a/clang/test/Driver/stack-size-section.c b/clang/test/Driver/stack-size-section.c index 461f0b5c9aee..f50c9767e707 100644 --- a/clang/test/Driver/stack-size-section.c +++ b/clang/test/Driver/stack-size-section.c @@ -1,4 +1,5 @@ // RUN: %clang -target x86_64-unknown %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT +// RUN: %clang -target x86_64-sie-ps5 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT // RUN: %clang -target x86_64-scei-ps4 -fno-stack-size-section %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-ABSENT // CHECK-ABSENT-NOT: -fstack-size-section @@ -6,4 +7,9 @@ // RUN: %clang -target x86_64-scei-ps4 %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-PRESENT // CHECK-PRESENT: -fstack-size-section +// RUN: %clang -target x86_64-unknown -fstack-size-section -fno-stack-size-section %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-ABSENT +// RUN: %clang -target x86_64-unknown -fno-stack-size-section -fstack-size-section %s -### 2>&1 \ +// RUN: | FileCheck %s --check-prefix=CHECK-PRESENT + int foo() { return 42; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 04a6e0f - [X86][Headers] change 'yields' to 'returns' in more places
Author: Paul Robinson Date: 2024-03-22T05:36:41-07:00 New Revision: 04a6e0f1634f9a53120c27a30250d26dff4ada1c URL: https://github.com/llvm/llvm-project/commit/04a6e0f1634f9a53120c27a30250d26dff4ada1c DIFF: https://github.com/llvm/llvm-project/commit/04a6e0f1634f9a53120c27a30250d26dff4ada1c.diff LOG: [X86][Headers] change 'yields' to 'returns' in more places Added: Modified: clang/lib/Headers/mmintrin.h clang/lib/Headers/smmintrin.h clang/lib/Headers/xmmintrin.h Removed: diff --git a/clang/lib/Headers/mmintrin.h b/clang/lib/Headers/mmintrin.h index 962d24738e7aa4..4e154e2d859353 100644 --- a/clang/lib/Headers/mmintrin.h +++ b/clang/lib/Headers/mmintrin.h @@ -1141,7 +1141,7 @@ _mm_xor_si64(__m64 __m1, __m64 __m2) ///[8 x i8] to determine if the element of the first vector is equal to the ///corresponding element of the second vector. /// -///The comparison yields 0 for false, 0xFF for true. +///Each comparison returns 0 for false, 0xFF for true. /// /// \headerfile /// @@ -1163,7 +1163,7 @@ _mm_cmpeq_pi8(__m64 __m1, __m64 __m2) ///[4 x i16] to determine if the element of the first vector is equal to the ///corresponding element of the second vector. /// -///The comparison yields 0 for false, 0x for true. +///Each comparison returns 0 for false, 0x for true. /// /// \headerfile /// @@ -1185,7 +1185,7 @@ _mm_cmpeq_pi16(__m64 __m1, __m64 __m2) ///[2 x i32] to determine if the element of the first vector is equal to the ///corresponding element of the second vector. /// -///The comparison yields 0 for false, 0x for true. +///Each comparison returns 0 for false, 0x for true. /// /// \headerfile /// @@ -1207,7 +1207,7 @@ _mm_cmpeq_pi32(__m64 __m1, __m64 __m2) ///[8 x i8] to determine if the element of the first vector is greater than ///the corresponding element of the second vector. /// -///The comparison yields 0 for false, 0xFF for true. +///Each comparison returns 0 for false, 0xFF for true. /// /// \headerfile /// @@ -1229,7 +1229,7 @@ _mm_cmpgt_pi8(__m64 __m1, __m64 __m2) ///[4 x i16] to determine if the element of the first vector is greater than ///the corresponding element of the second vector. /// -///The comparison yields 0 for false, 0x for true. +///Each comparison returns 0 for false, 0x for true. /// /// \headerfile /// @@ -1251,7 +1251,7 @@ _mm_cmpgt_pi16(__m64 __m1, __m64 __m2) ///[2 x i32] to determine if the element of the first vector is greater than ///the corresponding element of the second vector. /// -///The comparison yields 0 for false, 0x for true. +///Each comparison returns 0 for false, 0x for true. /// /// \headerfile /// diff --git a/clang/lib/Headers/smmintrin.h b/clang/lib/Headers/smmintrin.h index 9fb9cc9b01348c..b3fec474e35a1e 100644 --- a/clang/lib/Headers/smmintrin.h +++ b/clang/lib/Headers/smmintrin.h @@ -1188,7 +1188,7 @@ static __inline__ int __DEFAULT_FN_ATTRS _mm_testnzc_si128(__m128i __M, /// Compares each of the corresponding 64-bit values of the 128-bit ///integer vectors for equality. /// -///Each comparison yields 0x0 for false, 0x for true. +///Each comparison returns 0x0 for false, 0x for true. /// /// \headerfile /// @@ -2303,7 +2303,7 @@ static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_minpos_epu16(__m128i __V) { ///integer vectors to determine if the values in the first operand are ///greater than those in the second operand. /// -///Each comparison yields 0x0 for false, 0x for true. +///Each comparison returns 0x0 for false, 0x for true. /// /// \headerfile /// diff --git a/clang/lib/Headers/xmmintrin.h b/clang/lib/Headers/xmmintrin.h index 040194786a2799..1ef89de9c9f562 100644 --- a/clang/lib/Headers/xmmintrin.h +++ b/clang/lib/Headers/xmmintrin.h @@ -484,7 +484,7 @@ _mm_xor_ps(__m128 __a, __m128 __b) /// Compares two 32-bit float values in the low-order bits of both ///operands for equality. /// -///The comparison yields 0x0 for false, 0x for true, in the +///The comparison returns 0x0 for false, 0x for true, in the ///low-order bits of a vector [4 x float]. ///If either value in a comparison is NaN, returns false. /// @@ -509,7 +509,7 @@ _mm_cmpeq_ss(__m128 __a, __m128 __b) /// Compares each of the corresponding 32-bit float values of the ///128-bit vectors of [4 x float] for equality. /// -///Each comparison yields 0x0 for false, 0x for true. +///Each comparison returns 0x0 for false, 0x for true. ///If either value in a comparison is NaN, returns false. /// /// \headerfile @@ -531,7 +531,7 @@ _mm_cmpeq_ps(__m128 __a, __m128 __b) ///operands to determine if the va
[clang] 513b950 - Make -frewrite-includes handle -include correctly
Author: Paul Robinson Date: 2023-10-24T09:08:31-07:00 New Revision: 513b950a79d0e92af1baa969207dd296068a71b9 URL: https://github.com/llvm/llvm-project/commit/513b950a79d0e92af1baa969207dd296068a71b9 DIFF: https://github.com/llvm/llvm-project/commit/513b950a79d0e92af1baa969207dd296068a71b9.diff LOG: Make -frewrite-includes handle -include correctly The `-include "file"` option implicitly adds a leading #include to the main source; however, there's no explicit #include, which left -frewrite-includes emitting an unmatched #endif at the end of the included text. This corrects a bug in 4a16b51f. Added: Modified: clang/lib/Frontend/Rewrite/InclusionRewriter.cpp clang/test/Frontend/rewrite-includes-cli-include.c Removed: diff --git a/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp b/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp index 28f7b0b9edfc5c2..2c3a253a67d5c93 100644 --- a/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp +++ b/clang/lib/Frontend/Rewrite/InclusionRewriter.cpp @@ -444,8 +444,11 @@ void InclusionRewriter::Process(FileID FileId, if (Mod) OS << "#pragma clang module end /*" << Mod->getFullModuleName(true) << "*/\n"; - OS << "#endif /* " << getIncludedFileName(Inc) - << " expanded by -frewrite-includes */" << LocalEOL; + // There's no #include, therefore no #if, for -include files. + if (FromFile != PredefinesBuffer) { +OS << "#endif /* " << getIncludedFileName(Inc) + << " expanded by -frewrite-includes */" << LocalEOL; + } // Add line marker to indicate we're returning from an included // file. diff --git a/clang/test/Frontend/rewrite-includes-cli-include.c b/clang/test/Frontend/rewrite-includes-cli-include.c index 437bc2ffadf1960..d63f966f79ca6af 100644 --- a/clang/test/Frontend/rewrite-includes-cli-include.c +++ b/clang/test/Frontend/rewrite-includes-cli-include.c @@ -3,7 +3,6 @@ main_file_line // CHECK: {{^}}# 1 ""{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*[/\\]Inputs(/|)}}rewrite-includes2.h" 1{{$}} // CHECK-NEXT: {{^}}int included_line2;{{$}} -// CHECK-NEXT: {{^}}#endif /* rewrite-includes2.h expanded by -frewrite-includes */{{$}} // CHECK-NEXT: {{^}}# 1 "" 2{{$}} // CHECK-NEXT: {{^}}# 1 "{{.*}}rewrite-includes-cli-include.c"{{$}} // CHECK-NEXT: FileCheck ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 5ea2d4f - Avoid conflicts between debug-info and pseudo-probe profiling
Author: Paul Robinson Date: 2021-02-10T07:09:18-08:00 New Revision: 5ea2d4fa481160c9843b8651df265ce1fbfd9316 URL: https://github.com/llvm/llvm-project/commit/5ea2d4fa481160c9843b8651df265ce1fbfd9316 DIFF: https://github.com/llvm/llvm-project/commit/5ea2d4fa481160c9843b8651df265ce1fbfd9316.diff LOG: Avoid conflicts between debug-info and pseudo-probe profiling After D93264, using both -fdebug-info-for-profiling and -fpseudo-probe-for-profiling will cause the compiler to crash. Diagnose these conflicting options in the driver. Also, the existing CodeGen test was using the driver when it should be running cc1. Differential Revision: https://reviews.llvm.org/D96354 Added: clang/test/Driver/pseudo-probe.c Modified: clang/lib/Driver/ToolChains/Clang.cpp clang/test/CodeGen/pseudo-probe-emit.c Removed: diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 5df6238b211b..d2a9ea3c9ef8 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -3746,6 +3746,12 @@ static void renderDebugOptions(const ToolChain &TC, const Driver &D, ArgStringList &CmdArgs, codegenoptions::DebugInfoKind &DebugInfoKind, DwarfFissionKind &DwarfFission) { + // These two forms of profiling info can't be used together. + if (const Arg *A1 = Args.getLastArg(options::OPT_fpseudo_probe_for_profiling)) +if (const Arg *A2 = Args.getLastArg(options::OPT_fdebug_info_for_profiling)) + D.Diag(diag::err_drv_argument_not_allowed_with) + << A1->getAsString(Args) << A2->getAsString(Args); + if (Args.hasFlag(options::OPT_fdebug_info_for_profiling, options::OPT_fno_debug_info_for_profiling, false) && checkDebugInfoOption( diff --git a/clang/test/CodeGen/pseudo-probe-emit.c b/clang/test/CodeGen/pseudo-probe-emit.c index fccc8f04844d..5fe1d2384676 100644 --- a/clang/test/CodeGen/pseudo-probe-emit.c +++ b/clang/test/CodeGen/pseudo-probe-emit.c @@ -1,4 +1,4 @@ -// RUN: %clang -O2 -fexperimental-new-pass-manager -fpseudo-probe-for-profiling -g -emit-llvm -S -o - %s | FileCheck %s +// RUN: %clang_cc1 -O2 -fno-legacy-pass-manager -fpseudo-probe-for-profiling -debug-info-kind=limited -emit-llvm -o - %s | FileCheck %s // Check the generation of pseudoprobe intrinsic call diff --git a/clang/test/Driver/pseudo-probe.c b/clang/test/Driver/pseudo-probe.c new file mode 100644 index ..297992cfd1a1 --- /dev/null +++ b/clang/test/Driver/pseudo-probe.c @@ -0,0 +1,7 @@ +// RUN: %clang -### -fpseudo-probe-for-profiling %s 2>&1 | FileCheck %s --check-prefix=YESPROBE +// RUN: %clang -### -fno-pseudo-probe-for-profiling %s 2>&1 | FileCheck %s --check-prefix=NOPROBE +// RUN: %clang -### -fpseudo-probe-for-profiling -fdebug-info-for-profiling %s 2>&1 | FileCheck %s --check-prefix=CONFLICT + +// YESPROBE: -fpseudo-probe-for-profiling +// NOPROBE-NOT: -fpseudo-probe-for-profiling +// CONFLICT: invalid argument ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] e6620a3 - Fix test that was never run.
Author: Paul Robinson Date: 2021-07-30T07:59:29-07:00 New Revision: e6620a351ecb87a75eca116399c5b359e3c63cc8 URL: https://github.com/llvm/llvm-project/commit/e6620a351ecb87a75eca116399c5b359e3c63cc8 DIFF: https://github.com/llvm/llvm-project/commit/e6620a351ecb87a75eca116399c5b359e3c63cc8.diff LOG: Fix test that was never run. Commit 83df122 (r368334) added 'REQUIRES: linux' to this test, but because triples are not respected by REQUIRES, that meant it was invariably Unsupported. The correct keyword would be 'system-linux' (checking the host rather than the target). Because the test was always skipped, commit 0cfd9e5 (r375439) did not notice that the test modification was incorrect. This patch corrects the REQUIRES clause and fixes the incorrect previous patch. Found after implementing https://reviews.llvm.org/D107162 Added: Modified: clang/test/Driver/as-no-warnings.c Removed: diff --git a/clang/test/Driver/as-no-warnings.c b/clang/test/Driver/as-no-warnings.c index 4338d117a6d0..a6671c631dba 100644 --- a/clang/test/Driver/as-no-warnings.c +++ b/clang/test/Driver/as-no-warnings.c @@ -2,20 +2,22 @@ // RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,--no-warn 2>&1 | FileCheck %s /// -W is alias for --no-warn. -// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -check-prefix=CHECK-NOIAS %s +// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -check-prefix=CHECK-NOIASW %s // RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck %s // RUN: %clang %s -c -o %t.o -integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s // RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s +// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s // RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s // RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s // REQUIRES: clang-driver // REQUIRES: x86-registered-target -// REQUIRES: linux +// REQUIRES: system-linux // CHECK: "-cc1" {{.*}} "-massembler-no-warn" // CHECK-NOIAS: "--no-warn" +// CHECK-NOIASW: "-W" // CHECK-AS-NOWARN-NOT: warning: // CHECK-AS-FATAL-NOT: warning: // CHECK-AS-FATAL: error ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] c0fa174 - Add triples to try to fix a test
Author: Paul Robinson Date: 2021-07-30T08:35:42-07:00 New Revision: c0fa174d63ad68f290745aaa6600cede1ad0a25d URL: https://github.com/llvm/llvm-project/commit/c0fa174d63ad68f290745aaa6600cede1ad0a25d DIFF: https://github.com/llvm/llvm-project/commit/c0fa174d63ad68f290745aaa6600cede1ad0a25d.diff LOG: Add triples to try to fix a test Buildbot failure: https://lab.llvm.org/buildbot/#/builders/105/builds/13139 which provides no details about why it failed. Added: Modified: clang/test/Driver/as-no-warnings.c Removed: diff --git a/clang/test/Driver/as-no-warnings.c b/clang/test/Driver/as-no-warnings.c index a6671c631dba..9c2b3f096872 100644 --- a/clang/test/Driver/as-no-warnings.c +++ b/clang/test/Driver/as-no-warnings.c @@ -1,11 +1,11 @@ // RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -check-prefix=CHECK-NOIAS %s -// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,--no-warn 2>&1 | FileCheck %s +// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -integrated-as -Wa,--no-warn 2>&1 | FileCheck %s /// -W is alias for --no-warn. // RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -check-prefix=CHECK-NOIASW %s -// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck %s +// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -integrated-as -Wa,-W 2>&1 | FileCheck %s -// RUN: %clang %s -c -o %t.o -integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s +// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s // RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s // RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s // RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 9ca905b - XFAIL a test on ppc64
Author: Paul Robinson Date: 2021-07-30T09:05:14-07:00 New Revision: 9ca905b52d53c46aceb4d28e44dfbf4a815d0c68 URL: https://github.com/llvm/llvm-project/commit/9ca905b52d53c46aceb4d28e44dfbf4a815d0c68 DIFF: https://github.com/llvm/llvm-project/commit/9ca905b52d53c46aceb4d28e44dfbf4a815d0c68.diff LOG: XFAIL a test on ppc64 Buildbot failure: https://lab.llvm.org/buildbot/#/builders/105/builds/13141 which provides no details about why it failed, but the only failure reports are for ppc64 bots. Added: Modified: clang/test/Driver/as-no-warnings.c Removed: diff --git a/clang/test/Driver/as-no-warnings.c b/clang/test/Driver/as-no-warnings.c index 9c2b3f096872..77971389ee65 100644 --- a/clang/test/Driver/as-no-warnings.c +++ b/clang/test/Driver/as-no-warnings.c @@ -14,6 +14,7 @@ // REQUIRES: clang-driver // REQUIRES: x86-registered-target // REQUIRES: system-linux +// XFAIL: ppc64 // CHECK: "-cc1" {{.*}} "-massembler-no-warn" // CHECK-NOIAS: "--no-warn" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] c15d982 - XFAIL ppc => powerpc
Author: Paul Robinson Date: 2021-07-30T09:39:51-07:00 New Revision: c15d9822b3ab767d744e93d7d9c25d5f7d2faac8 URL: https://github.com/llvm/llvm-project/commit/c15d9822b3ab767d744e93d7d9c25d5f7d2faac8 DIFF: https://github.com/llvm/llvm-project/commit/c15d9822b3ab767d744e93d7d9c25d5f7d2faac8.diff LOG: XFAIL ppc => powerpc Added: Modified: clang/test/Driver/as-no-warnings.c Removed: diff --git a/clang/test/Driver/as-no-warnings.c b/clang/test/Driver/as-no-warnings.c index 77971389ee65..c785c054155c 100644 --- a/clang/test/Driver/as-no-warnings.c +++ b/clang/test/Driver/as-no-warnings.c @@ -14,7 +14,7 @@ // REQUIRES: clang-driver // REQUIRES: x86-registered-target // REQUIRES: system-linux -// XFAIL: ppc64 +// XFAIL: powerpc // CHECK: "-cc1" {{.*}} "-massembler-no-warn" // CHECK-NOIAS: "--no-warn" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 31d408f - Trim failing test
Author: Paul Robinson Date: 2021-07-30T10:51:08-07:00 New Revision: 31d408f9f94f3b97366d49c342734c195a343579 URL: https://github.com/llvm/llvm-project/commit/31d408f9f94f3b97366d49c342734c195a343579 DIFF: https://github.com/llvm/llvm-project/commit/31d408f9f94f3b97366d49c342734c195a343579.diff LOG: Trim failing test Don't try to run the non-integrated assembler; just verify that the invocations look like what we expect. Do verify that the integrated assembler handles warnings as expected. Added: Modified: clang/test/Driver/as-no-warnings.c Removed: diff --git a/clang/test/Driver/as-no-warnings.c b/clang/test/Driver/as-no-warnings.c index c785c054155c..d6b49217468a 100644 --- a/clang/test/Driver/as-no-warnings.c +++ b/clang/test/Driver/as-no-warnings.c @@ -1,20 +1,17 @@ // RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -check-prefix=CHECK-NOIAS %s -// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -integrated-as -Wa,--no-warn 2>&1 | FileCheck %s +// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,--no-warn 2>&1 | FileCheck %s /// -W is alias for --no-warn. // RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -check-prefix=CHECK-NOIASW %s -// RUN: %clang -### %s -c -o tmp.o -target i686-pc-linux-gnu -integrated-as -Wa,-W 2>&1 | FileCheck %s +// RUN: %clang -### %s -c -o tmp.o -integrated-as -Wa,-W 2>&1 | FileCheck %s -// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s -// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s -// RUN: %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,-W 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s -// RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s -// RUN: not %clang %s -c -o %t.o -target i686-pc-linux-gnu -fno-integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s +/// Make sure warnings behave properly in integrated assembler. +// RUN: %clang %s -c -o %t.o -integrated-as -Wa,--no-warn 2>&1 | FileCheck -allow-empty --check-prefix=CHECK-AS-NOWARN %s +// RUN: not %clang %s -c -o %t.o -integrated-as -Wa,--fatal-warnings 2>&1 | FileCheck --check-prefix=CHECK-AS-FATAL %s // REQUIRES: clang-driver // REQUIRES: x86-registered-target // REQUIRES: system-linux -// XFAIL: powerpc // CHECK: "-cc1" {{.*}} "-massembler-no-warn" // CHECK-NOIAS: "--no-warn" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] b8e03be - [PS4][DWARF] Explicitly set default DWARF version to 4
Author: Paul Robinson Date: 2021-11-30T08:58:40-08:00 New Revision: b8e03be88dc87303f7401ea7b9906947ac67a6db URL: https://github.com/llvm/llvm-project/commit/b8e03be88dc87303f7401ea7b9906947ac67a6db DIFF: https://github.com/llvm/llvm-project/commit/b8e03be88dc87303f7401ea7b9906947ac67a6db.diff LOG: [PS4][DWARF] Explicitly set default DWARF version to 4 Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.h Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.h b/clang/lib/Driver/ToolChains/PS4CPU.h index 82f9523f84fb8..4bedabaf267c0 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -80,6 +80,7 @@ class LLVM_LIBRARY_VISIBILITY PS4CPU : public Generic_ELF { return LangOptions::SSPStrong; } + unsigned GetDefaultDwarfVersion() const override { return 4; } llvm::DebuggerKind getDefaultDebuggerTuning() const override { return llvm::DebuggerKind::SCE; } ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 7af01fe - [lit] Remove undefined keyword from a Driver test
Author: Paul Robinson Date: 2022-10-31T13:01:05-07:00 New Revision: 7af01fe42f1634297601016cd4ef84c34cd84bca URL: https://github.com/llvm/llvm-project/commit/7af01fe42f1634297601016cd4ef84c34cd84bca DIFF: https://github.com/llvm/llvm-project/commit/7af01fe42f1634297601016cd4ef84c34cd84bca.diff LOG: [lit] Remove undefined keyword from a Driver test `clang-driver` hasn't been a valid keyword for a long time. The test fails when the keyword is removed, so added XFAIL: * to reflect the true status of the test (XFAIL not UNSUPPORTED) and filed issue #58711 to get it fixed. Added: Modified: clang/test/Driver/hip-link-bc-to-bc.hip Removed: diff --git a/clang/test/Driver/hip-link-bc-to-bc.hip b/clang/test/Driver/hip-link-bc-to-bc.hip index df858cf158522..972822b5260c2 100644 --- a/clang/test/Driver/hip-link-bc-to-bc.hip +++ b/clang/test/Driver/hip-link-bc-to-bc.hip @@ -1,4 +1,6 @@ -// REQUIRES: clang-driver, x86-registered-target, amdgpu-registered-target +// REQUIRES: x86-registered-target, amdgpu-registered-target +// See issue #58711 +// XFAIL: * // Check that clang unbundles the two bitcodes and links via llvm-link // RUN: rm -rf %t && mkdir %t ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 6288f70 - [lit] Fix typo in REQUIRES clause
Author: Paul Robinson Date: 2022-10-31T13:15:09-07:00 New Revision: 6288f70bda7438c7d249a4d54d8317172bce2b88 URL: https://github.com/llvm/llvm-project/commit/6288f70bda7438c7d249a4d54d8317172bce2b88 DIFF: https://github.com/llvm/llvm-project/commit/6288f70bda7438c7d249a4d54d8317172bce2b88.diff LOG: [lit] Fix typo in REQUIRES clause Added: Modified: clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-load-store-reversed-64bit-only.c Removed: diff --git a/clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-load-store-reversed-64bit-only.c b/clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-load-store-reversed-64bit-only.c index ba97bfa199103..8053516f60175 100644 --- a/clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-load-store-reversed-64bit-only.c +++ b/clang/test/CodeGen/PowerPC/builtins-ppc-xlcompat-load-store-reversed-64bit-only.c @@ -1,4 +1,4 @@ -// REQUIRES: powerpc-registered-target. +// REQUIRES: powerpc-registered-target // RUN: %clang_cc1 -triple powerpc64-unknown-linux-gnu \ // RUN: -emit-llvm %s -o - -target-cpu pwr7 | FileCheck %s // RUN: %clang_cc1 -triple powerpc64le-unknown-linux-gnu \ ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 016785d - [clang/xray] Convert tests to check 'target=...'
Author: Paul Robinson Date: 2022-12-21T05:19:27-08:00 New Revision: 016785d9316d8c5abc5fdf3cdb86479095bbb677 URL: https://github.com/llvm/llvm-project/commit/016785d9316d8c5abc5fdf3cdb86479095bbb677 DIFF: https://github.com/llvm/llvm-project/commit/016785d9316d8c5abc5fdf3cdb86479095bbb677.diff LOG: [clang/xray] Convert tests to check 'target=...' Part of the project to eliminate special handling for triples in lit expressions. Added: Modified: clang/test/Driver/XRay/lit.local.cfg clang/test/Driver/XRay/xray-instrument-cpu.c clang/test/Driver/XRay/xray-instrument-os.c Removed: diff --git a/clang/test/Driver/XRay/lit.local.cfg b/clang/test/Driver/XRay/lit.local.cfg index 70f9792ba3db5..1755d9ab5ce9e 100644 --- a/clang/test/Driver/XRay/lit.local.cfg +++ b/clang/test/Driver/XRay/lit.local.cfg @@ -1,6 +1,4 @@ import platform -target_triple_components = config.target_triple.split('-') -config.available_features.update(target_triple_components) # Only run the tests in platforms where XRay instrumentation is supported. supported_targets = [ @@ -13,7 +11,7 @@ supported_oses = [ 'Linux', 'FreeBSD', 'Darwin' ] -triple_set = set(target_triple_components) +triple_set = set(config.target_triple.split('-')) if len(triple_set.intersection(supported_targets)) == 0: config.unsupported = True diff --git a/clang/test/Driver/XRay/xray-instrument-cpu.c b/clang/test/Driver/XRay/xray-instrument-cpu.c index ee0e0984b36d8..a8bc2a6431335 100644 --- a/clang/test/Driver/XRay/xray-instrument-cpu.c +++ b/clang/test/Driver/XRay/xray-instrument-cpu.c @@ -1,4 +1,5 @@ // RUN: not %clang -o /dev/null -v -fxray-instrument -c %s -// XFAIL: amd64-, x86_64-, x86_64h-, arm, aarch64, arm64, powerpc64le-, mips, mipsel, mips64, mips64el +// XFAIL: target={{(amd64|x86_64|x86_64h|powerpc64le)-.*}} +// XFAIL: target={{(arm|aarch64|arm64|mips|mipsel|mips64|mips64el)-.*}} // REQUIRES: linux typedef int a; diff --git a/clang/test/Driver/XRay/xray-instrument-os.c b/clang/test/Driver/XRay/xray-instrument-os.c index 3a0397208326f..7a4f1c13cb0b1 100644 --- a/clang/test/Driver/XRay/xray-instrument-os.c +++ b/clang/test/Driver/XRay/xray-instrument-os.c @@ -1,4 +1,4 @@ // RUN: not %clang -o /dev/null -v -fxray-instrument -c %s -// XFAIL: -linux-, -freebsd, x86_64-apple-darwin, x86_64-apple-macos -// REQUIRES: amd64 || x86_64 || x86_64h || arm || aarch64 || arm64 +// XFAIL: target={{.*-(linux|freebsd).*}}, target=x86_64-apple-{{(darwin|macos).*}} +// REQUIRES: target={{(amd64|x86_64|x86_64h|arm|aarch64|arm64)-.*}} typedef int a; ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] d4959b5 - [Driver] Fix tests not to fail randomly on Windows
Author: Paul Robinson Date: 2022-12-21T09:37:12-08:00 New Revision: d4959b5a4bb888789f99a952a1304ce915dfee2f URL: https://github.com/llvm/llvm-project/commit/d4959b5a4bb888789f99a952a1304ce915dfee2f DIFF: https://github.com/llvm/llvm-project/commit/d4959b5a4bb888789f99a952a1304ce915dfee2f.diff LOG: [Driver] Fix tests not to fail randomly on Windows These used a regex that didn't guard against backslashes, so getting "lucky" with a temp dir name could make them fail. Added: Modified: clang/test/Driver/freebsd.c clang/test/Driver/fuchsia.c clang/test/Driver/netbsd.c clang/test/Driver/openbsd.c Removed: diff --git a/clang/test/Driver/freebsd.c b/clang/test/Driver/freebsd.c index 87ce46d1c1c6e..a9afff22ae848 100644 --- a/clang/test/Driver/freebsd.c +++ b/clang/test/Driver/freebsd.c @@ -212,5 +212,5 @@ // RELOCATABLE: "-r" // RELOCATABLE-NOT: "-dynamic-linker" // RELOCATABLE-NOT: "-l -// RELOCATABLE-NOT: crt{{[^./]+}}.o +// RELOCATABLE-NOT: crt{{[^./\\]+}}.o diff --git a/clang/test/Driver/fuchsia.c b/clang/test/Driver/fuchsia.c index 339fd92309796..9c023329edb5f 100644 --- a/clang/test/Driver/fuchsia.c +++ b/clang/test/Driver/fuchsia.c @@ -89,7 +89,7 @@ // CHECK-RELOCATABLE-NOT "-dynamic-linker" // CHECK-RELOCATABLE: "-r" // CHECK-RELOCATABLE-NOT: "-l -// CHECK-RELOCATABLE-NOT: crt{{[^./]+}}.o +// CHECK-RELOCATABLE-NOT: crt{{[^./\\]+}}.o // RUN: %clang -### %s --target=x86_64-unknown-fuchsia -nodefaultlibs -fuse-ld=lld 2>&1 \ // RUN: -resource-dir=%S/Inputs/resource_dir_with_per_target_subdir \ diff --git a/clang/test/Driver/netbsd.c b/clang/test/Driver/netbsd.c index 436772ab99795..52f3a33198059 100644 --- a/clang/test/Driver/netbsd.c +++ b/clang/test/Driver/netbsd.c @@ -476,4 +476,4 @@ // RELOCATABLE-NOT: "-pie" // RELOCATABLE-NOT: "-dynamic-linker" // RELOCATABLE-NOT: "-l -// RELOCATABLE-NOT: crt{{[^./]+}}.o +// RELOCATABLE-NOT: crt{{[^./\\]+}}.o diff --git a/clang/test/Driver/openbsd.c b/clang/test/Driver/openbsd.c index 3ba8a315f6e16..05d290a309c40 100644 --- a/clang/test/Driver/openbsd.c +++ b/clang/test/Driver/openbsd.c @@ -39,7 +39,7 @@ // CHECK-LD-R: "-r" // CHECK-LD-R-NOT: "-dynamic-linker" // CHECK-LD-R-NOT: "-l -// CHECK-LD-R-NOT: crt{{[^./]+}}.o +// CHECK-LD-R-NOT: crt{{[^./\\]+}}.o // CHECK-LD-S: "-cc1" "-triple" "i686-pc-openbsd" // CHECK-LD-S: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-s" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o" // CHECK-LD-T: "-cc1" "-triple" "i686-pc-openbsd" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] a26cbd0 - [Driver] Convert test to check 'target=...'
Author: Paul Robinson Date: 2023-01-04T06:46:00-08:00 New Revision: a26cbd03fe0f6f996d27f793e2107393d1888e40 URL: https://github.com/llvm/llvm-project/commit/a26cbd03fe0f6f996d27f793e2107393d1888e40 DIFF: https://github.com/llvm/llvm-project/commit/a26cbd03fe0f6f996d27f793e2107393d1888e40.diff LOG: [Driver] Convert test to check 'target=...' Part of the project to eliminate special handling for triples in lit expressions. Added: Modified: clang/test/Driver/fat-archive-unbundle-ext.c Removed: diff --git a/clang/test/Driver/fat-archive-unbundle-ext.c b/clang/test/Driver/fat-archive-unbundle-ext.c index 09b1ca1782feb..b409aa6313b1e 100644 --- a/clang/test/Driver/fat-archive-unbundle-ext.c +++ b/clang/test/Driver/fat-archive-unbundle-ext.c @@ -1,5 +1,5 @@ // REQUIRES: x86-registered-target -// UNSUPPORTED: target={{.*-windows.*}}, darwin, target={{.*}}-aix{{.*}} +// UNSUPPORTED: target={{.*-windows.*}}, target={{.*-darwin.*}}, target={{.*}}-aix{{.*}} // Generate dummy fat object // RUN: %clang -O0 -target %itanium_abi_triple %s -c -o %t.host.o ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 787876b - [unittests] Use GTEST_SKIP() instead of return when appropriate
Author: Paul Robinson Date: 2023-01-26T08:40:38-08:00 New Revision: 787876b0d592a6b4e87d00a0adb89ce87dfc11cd URL: https://github.com/llvm/llvm-project/commit/787876b0d592a6b4e87d00a0adb89ce87dfc11cd DIFF: https://github.com/llvm/llvm-project/commit/787876b0d592a6b4e87d00a0adb89ce87dfc11cd.diff LOG: [unittests] Use GTEST_SKIP() instead of return when appropriate Basically NFC: A TEST/TEST_F/etc that bails out early (usually because setup failed or some other runtime condition wasn't met) generally should use GTEST_SKIP() to report its status correctly, unless it takes steps to report another status (e.g., FAIL()). Added: Modified: clang/unittests/AST/StructuralEquivalenceTest.cpp clang/unittests/Driver/ToolChainTest.cpp clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp Removed: diff --git a/clang/unittests/AST/StructuralEquivalenceTest.cpp b/clang/unittests/AST/StructuralEquivalenceTest.cpp index 03616d7197ea8..5060301527ac7 100644 --- a/clang/unittests/AST/StructuralEquivalenceTest.cpp +++ b/clang/unittests/AST/StructuralEquivalenceTest.cpp @@ -460,7 +460,7 @@ TEST_F(StructuralEquivalenceFunctionTest, // These attributes may not be available on certain platforms. if (llvm::Triple(llvm::sys::getDefaultTargetTriple()).getArch() != llvm::Triple::x86_64) -return; +GTEST_SKIP(); auto t = makeNamedDecls("__attribute__((preserve_all)) void foo();", "__attribute__((ms_abi)) void foo();", Lang_C99); EXPECT_FALSE(testStructuralMatch(t)); @@ -469,7 +469,7 @@ TEST_F(StructuralEquivalenceFunctionTest, TEST_F(StructuralEquivalenceFunctionTest, FunctionsWithDifferentSavedRegsAttr) { if (llvm::Triple(llvm::sys::getDefaultTargetTriple()).getArch() != llvm::Triple::x86_64) -return; +GTEST_SKIP(); auto t = makeNamedDecls( "__attribute__((no_caller_saved_registers)) void foo();", " void foo();", Lang_C99); diff --git a/clang/unittests/Driver/ToolChainTest.cpp b/clang/unittests/Driver/ToolChainTest.cpp index 068c583eb89b5..4ddeadac2103f 100644 --- a/clang/unittests/Driver/ToolChainTest.cpp +++ b/clang/unittests/Driver/ToolChainTest.cpp @@ -243,7 +243,7 @@ TEST(ToolChainTest, GetTargetAndMode) { llvm::InitializeAllTargets(); std::string IgnoredError; if (!llvm::TargetRegistry::lookupTarget("x86_64", IgnoredError)) -return; +GTEST_SKIP(); ParsedClangName Res = ToolChain::getTargetAndModeFromProgramName("clang"); EXPECT_TRUE(Res.TargetPrefix.empty()); diff --git a/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp b/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp index f54c65568a66c..6983a532c7315 100644 --- a/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp +++ b/clang/unittests/Interpreter/ExceptionTests/InterpreterExceptionTest.cpp @@ -57,7 +57,7 @@ TEST(InterpreterTest, CatchException) { // Using llvm::consumeError will require typeinfo for ErrorInfoBase, we // can avoid that by going via the C interface. LLVMConsumeError(llvm::wrap(J.takeError())); - return; + GTEST_SKIP(); } } @@ -102,16 +102,16 @@ extern "C" int throw_exception() { // AIX is unsupported. if (Triple.isOSAIX()) -return; +GTEST_SKIP(); // FIXME: ARM fails due to `Not implemented relocation type!` if (Triple.isARM()) -return; +GTEST_SKIP(); // FIXME: libunwind on darwin is broken, see PR49692. if (Triple.isOSDarwin() && (Triple.getArch() == llvm::Triple::aarch64 || Triple.getArch() == llvm::Triple::aarch64_32)) -return; +GTEST_SKIP(); llvm::cantFail(Interp->ParseAndExecute(ExceptionCode)); testing::internal::CaptureStdout(); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] ecb3cd0 - [Driver] Move PS4/PS5 header search path management to the driver
Author: Paul Robinson Date: 2023-02-01T07:40:30-08:00 New Revision: ecb3cd0946a47c419efda7b92cd6f6fcc30b6be9 URL: https://github.com/llvm/llvm-project/commit/ecb3cd0946a47c419efda7b92cd6f6fcc30b6be9 DIFF: https://github.com/llvm/llvm-project/commit/ecb3cd0946a47c419efda7b92cd6f6fcc30b6be9.diff LOG: [Driver] Move PS4/PS5 header search path management to the driver This follows how OpenBSD, FreeBSD, and NetBSD now work. (See D138183 and D140817 for those cases.) It also tidies up some code duplication that wasn't exactly right. Added: Modified: clang/lib/Driver/ToolChains/PS4CPU.cpp clang/lib/Driver/ToolChains/PS4CPU.h clang/lib/Lex/InitHeaderSearch.cpp clang/test/Driver/ps4-ps5-header-search.c Removed: diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 643f815c5835a..fc5d46bc25605 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -8,6 +8,7 @@ #include "PS4CPU.h" #include "CommonArgs.h" +#include "clang/Config/config.h" #include "clang/Driver/Compilation.h" #include "clang/Driver/Driver.h" #include "clang/Driver/DriverDiagnostic.h" @@ -253,15 +254,14 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, // SDK include or lib directories. This behavior could be changed if // -Weverything or -Winvalid-or-nonexistent-directory options are passed. // If -isysroot was passed, use that as the SDK base path. - std::string PrefixDir; if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) { -PrefixDir = A->getValue(); -if (!llvm::sys::fs::exists(PrefixDir)) - D.Diag(clang::diag::warn_missing_sysroot) << PrefixDir; +SDKRootDir = A->getValue(); +if (!llvm::sys::fs::exists(SDKRootDir)) + D.Diag(clang::diag::warn_missing_sysroot) << SDKRootDir; } else -PrefixDir = std::string(SDKDir.str()); +SDKRootDir = std::string(SDKDir.str()); - SmallString<512> SDKIncludeDir(PrefixDir); + SmallString<512> SDKIncludeDir(SDKRootDir); llvm::sys::path::append(SDKIncludeDir, "target/include"); if (!Args.hasArg(options::OPT_nostdinc) && !Args.hasArg(options::OPT_nostdlibinc) && @@ -272,7 +272,7 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, << Twine(Platform, " system headers").str() << SDKIncludeDir; } - SmallString<512> SDKLibDir(SDKDir); + SmallString<512> SDKLibDir(SDKRootDir); llvm::sys::path::append(SDKLibDir, "target/lib"); if (!Args.hasArg(options::OPT_nostdlib) && !Args.hasArg(options::OPT_nodefaultlibs) && @@ -287,6 +287,42 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, getFilePaths().push_back(std::string(SDKLibDir.str())); } +void toolchains::PS4PS5Base::AddClangSystemIncludeArgs( +const ArgList &DriverArgs, +ArgStringList &CC1Args) const { + const Driver &D = getDriver(); + + if (DriverArgs.hasArg(options::OPT_nostdinc)) +return; + + if (!DriverArgs.hasArg(options::OPT_nobuiltininc)) { +SmallString<128> Dir(D.ResourceDir); +llvm::sys::path::append(Dir, "include"); +addSystemInclude(DriverArgs, CC1Args, Dir.str()); + } + + if (DriverArgs.hasArg(options::OPT_nostdlibinc)) +return; + + // Add dirs specified via 'configure --with-c-include-dirs'. + StringRef CIncludeDirs(C_INCLUDE_DIRS); + if (!CIncludeDirs.empty()) { +SmallVector dirs; +CIncludeDirs.split(dirs, ":"); +for (StringRef dir : dirs) { + StringRef Prefix = +llvm::sys::path::is_absolute(dir) ? StringRef(D.SysRoot) : ""; + addExternCSystemInclude(DriverArgs, CC1Args, Prefix + dir); +} +return; + } + + addExternCSystemInclude(DriverArgs, CC1Args, + SDKRootDir + "/target/include"); + addExternCSystemInclude(DriverArgs, CC1Args, + SDKRootDir + "/target/include_common"); +} + Tool *toolchains::PS4CPU::buildAssembler() const { return new tools::PScpu::Assembler(*this); } diff --git a/clang/lib/Driver/ToolChains/PS4CPU.h b/clang/lib/Driver/ToolChains/PS4CPU.h index 954e7d8d8d684..0866a5daa4cc6 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.h +++ b/clang/lib/Driver/ToolChains/PS4CPU.h @@ -63,6 +63,9 @@ class LLVM_LIBRARY_VISIBILITY PS4PS5Base : public Generic_ELF { const llvm::opt::ArgList &Args, StringRef Platform, const char *EnvVar); + void + AddClangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, +llvm::opt::ArgStringList &CC1Args) const override; // No support for finding a C++ standard library yet. void addLibCxxIncludePaths(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override { @@ -111,6 +114,10 @@ class LLVM_LIBRARY_VISIBILITY PS4PS5Base : public Generic_ELF { pr
[clang] 09e4449 - [PS5] Handle visibility options same as PS4
Author: Paul Robinson Date: 2023-01-17T11:27:51-08:00 New Revision: 09e4449901d7fc780806778181cf3136c1e08e98 URL: https://github.com/llvm/llvm-project/commit/09e4449901d7fc780806778181cf3136c1e08e98 DIFF: https://github.com/llvm/llvm-project/commit/09e4449901d7fc780806778181cf3136c1e08e98.diff LOG: [PS5] Handle visibility options same as PS4 This update was missed in the initial rounds of upstreaming PS5. Added: clang/test/Driver/ps4-ps5-visibility-dllstorageclass.c Modified: clang/lib/Driver/ToolChains/Clang.cpp Removed: clang/test/Driver/ps4-visibility-dllstorageclass.c diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index 5462634aa96da..212b3faa2dc74 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -6033,7 +6033,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back("-fvisibility=protected"); } - if (!RawTriple.isPS4()) + // PS4/PS5 process these options in addClangTargetOptions. + if (!RawTriple.isPS()) { if (const Arg *A = Args.getLastArg(options::OPT_fvisibility_from_dllstorageclass, options::OPT_fno_visibility_from_dllstorageclass)) { @@ -6047,6 +6048,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, options::OPT_fvisibility_externs_nodllstorageclass_EQ); } } + } if (const Arg *A = Args.getLastArg(options::OPT_mignore_xcoff_visibility)) { if (Triple.isOSAIX()) diff --git a/clang/test/Driver/ps4-visibility-dllstorageclass.c b/clang/test/Driver/ps4-ps5-visibility-dllstorageclass.c similarity index 94% rename from clang/test/Driver/ps4-visibility-dllstorageclass.c rename to clang/test/Driver/ps4-ps5-visibility-dllstorageclass.c index e7d9b122eed6d..1a54990da4764 100644 --- a/clang/test/Driver/ps4-visibility-dllstorageclass.c +++ b/clang/test/Driver/ps4-ps5-visibility-dllstorageclass.c @@ -1,4 +1,4 @@ -// Check behaviour of -fvisibility-from-dllstorageclass options for PS4 +// Check behaviour of -fvisibility-from-dllstorageclass options for PS4/PS5. // DEFINE: %{triple} = // DEFINE: %{run} = \ @@ -11,6 +11,8 @@ // DEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // // REDEFINE: %{run} = \ // REDEFINE: %clang -### -target %{triple} \ @@ -26,6 +28,8 @@ // REDEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // DEFAULTS: "-fvisibility-from-dllstorageclass" // DEFAULTS-SAME: "-fvisibility-dllexport=protected" @@ -51,6 +55,8 @@ // REDEFINE: --implicit-check-not=warning: // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // UNUSED: warning: argument unused during compilation: '-fvisibility-dllexport=hidden' // UNUSED-NEXT: warning: argument unused during compilation: '-fvisibility-nodllstorageclass=protected' @@ -71,6 +77,8 @@ // REDEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // REDEFINE: %{run} = \ // REDEFINE: %clang -### -target x86_64-scei-ps4 \ @@ -87,6 +95,8 @@ // REDEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // SOME: "-fvisibility-from-dllstorageclass" // SOME-SAME: "-fvisibility-dllexport=protected" @@ -114,6 +124,8 @@ // REDEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // REDEFINE: %{run} = \ // REDEFINE: %clang -### -target x86_64-scei-ps4 \ @@ -136,6 +148,8 @@ // REDEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass // REDEFINE: %{triple} = x86_64-scei-ps4 // RUN: %{run} +// REDEFINE: %{triple} = x86_64-sie-ps5 +// RUN: %{run} // ALL: "-fvisibility-from-dllstorageclass" // ALL-SAME: "-fvisibility-dllexport=hidden" ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] eae8d22 - [PS4] NFC: rewrite a test to use lit's DEFINE feature
Author: Paul Robinson Date: 2023-01-17T11:27:51-08:00 New Revision: eae8d22607027ddc9067ca8fa5fea1f1f6a9fb45 URL: https://github.com/llvm/llvm-project/commit/eae8d22607027ddc9067ca8fa5fea1f1f6a9fb45 DIFF: https://github.com/llvm/llvm-project/commit/eae8d22607027ddc9067ca8fa5fea1f1f6a9fb45.diff LOG: [PS4] NFC: rewrite a test to use lit's DEFINE feature Preparatory to running the same test for PS5. Added: Modified: clang/test/Driver/ps4-visibility-dllstorageclass.c Removed: diff --git a/clang/test/Driver/ps4-visibility-dllstorageclass.c b/clang/test/Driver/ps4-visibility-dllstorageclass.c index b314b5d3818a..e7d9b122eed6 100644 --- a/clang/test/Driver/ps4-visibility-dllstorageclass.c +++ b/clang/test/Driver/ps4-visibility-dllstorageclass.c @@ -1,24 +1,31 @@ // Check behaviour of -fvisibility-from-dllstorageclass options for PS4 -// RUN: %clang -### -target x86_64-scei-ps4 %s -Werror -o - 2>&1 | \ -// RUN: FileCheck %s --check-prefix=DEFAULTS \ -// RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ -// RUN: --implicit-check-not=-fvisibility-dllexport \ -// RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ -// RUN: --implicit-check-not=-fvisibility-externs-dllimport \ -// RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass - -// RUN: %clang -### -target x86_64-scei-ps4 \ -// RUN: -fno-visibility-from-dllstorageclass \ -// RUN: -fvisibility-from-dllstorageclass \ -// RUN: -Werror \ -// RUN: %s -o - 2>&1 | \ -// RUN: FileCheck %s --check-prefix=DEFAULTS \ -// RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ -// RUN: --implicit-check-not=-fvisibility-dllexport \ -// RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ -// RUN: --implicit-check-not=-fvisibility-externs-dllimport \ -// RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass +// DEFINE: %{triple} = +// DEFINE: %{run} = \ +// DEFINE: %clang -### -target %{triple} %s -Werror -o - 2>&1 | \ +// DEFINE: FileCheck %s --check-prefix=DEFAULTS \ +// DEFINE: --implicit-check-not=-fvisibility-from-dllstorageclass \ +// DEFINE: --implicit-check-not=-fvisibility-dllexport \ +// DEFINE: --implicit-check-not=-fvisibility-nodllstorageclass \ +// DEFINE: --implicit-check-not=-fvisibility-externs-dllimport \ +// DEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass +// REDEFINE: %{triple} = x86_64-scei-ps4 +// RUN: %{run} +// +// REDEFINE: %{run} = \ +// REDEFINE: %clang -### -target %{triple} \ +// REDEFINE: -fno-visibility-from-dllstorageclass \ +// REDEFINE: -fvisibility-from-dllstorageclass \ +// REDEFINE: -Werror \ +// REDEFINE: %s -o - 2>&1 | \ +// REDEFINE: FileCheck %s --check-prefix=DEFAULTS \ +// REDEFINE: --implicit-check-not=-fvisibility-from-dllstorageclass \ +// REDEFINE: --implicit-check-not=-fvisibility-dllexport \ +// REDEFINE: --implicit-check-not=-fvisibility-nodllstorageclass \ +// REDEFINE: --implicit-check-not=-fvisibility-externs-dllimport \ +// REDEFINE: --implicit-check-not=-fvisibility-externs-nodllstorageclass +// REDEFINE: %{triple} = x86_64-scei-ps4 +// RUN: %{run} // DEFAULTS: "-fvisibility-from-dllstorageclass" // DEFAULTS-SAME: "-fvisibility-dllexport=protected" @@ -26,51 +33,60 @@ // DEFAULTS-SAME: "-fvisibility-externs-dllimport=default" // DEFAULTS-SAME: "-fvisibility-externs-nodllstorageclass=default" -// RUN: %clang -### -target x86_64-scei-ps4 \ -// RUN: -fvisibility-from-dllstorageclass \ -// RUN: -fvisibility-dllexport=hidden \ -// RUN: -fvisibility-nodllstorageclass=protected \ -// RUN: -fvisibility-externs-dllimport=hidden \ -// RUN: -fvisibility-externs-nodllstorageclass=protected \ -// RUN: -fno-visibility-from-dllstorageclass \ -// RUN: %s -o - 2>&1 | \ -// RUN: FileCheck %s -check-prefix=UNUSED \ -// RUN: --implicit-check-not=-fvisibility-from-dllstorageclass \ -// RUN: --implicit-check-not=-fvisibility-dllexport \ -// RUN: --implicit-check-not=-fvisibility-nodllstorageclass \ -// RUN: --implicit-check-not=-fvisibility-externs-dllimport \ -// RUN: --implicit-check-not=-fvisibility-externs-nodllstorageclass \ -// RUN: --implicit-check-not=warning: +// REDEFINE: %{run} = \ +// REDEFINE: %clang -### -target x86_64-scei-ps4 \ +// REDEFINE: -fvisibility-from-dllstorageclass \ +// REDEFINE: -fvisibility-dllexport=hidden \ +// REDEFINE: -fvisibility-nodllstorageclass=protected \ +// REDEFINE: -fvisibility-externs-dllimport=hidden \ +// REDEFINE: -fvisibility-externs-nodllstorageclass=protected \ +// REDEFINE: -fno-visibility-from-dllstorageclass \ +// REDEFINE: %s -o - 2>&1 | \ +// REDEFINE: FileCheck %s -check-prefix=UNUSED \ +// REDEFINE: --implicit-check-not=-fvisibility-from-dllstorageclass \ +// REDEFINE: --implicit-c
[clang] 0fe88f9 - [PS4/PS5] Don't inherit base class alignment
Author: Paul Robinson Date: 2022-06-10T13:15:17-07:00 New Revision: 0fe88f9679ff6df5a7cce7e89038602c35a5e272 URL: https://github.com/llvm/llvm-project/commit/0fe88f9679ff6df5a7cce7e89038602c35a5e272 DIFF: https://github.com/llvm/llvm-project/commit/0fe88f9679ff6df5a7cce7e89038602c35a5e272.diff LOG: [PS4/PS5] Don't inherit base class alignment Added: Modified: clang/lib/AST/RecordLayoutBuilder.cpp clang/test/SemaCXX/alignment-of-derived-class.cpp Removed: diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index 6e775baed147f..6f3ede2ce42a7 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/lib/AST/RecordLayoutBuilder.cpp @@ -1261,7 +1261,9 @@ ItaniumRecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) { (!HasExternalLayout || Offset == CharUnits::Zero()) && EmptySubobjects->CanPlaceBaseAtOffset(Base, CharUnits::Zero())) { setSize(std::max(getSize(), Layout.getSize())); -UpdateAlignment(BaseAlign, UnpackedAlignTo, PreferredBaseAlign); +// On PS4/PS5, don't update the alignment, to preserve compatibility. +if (!Context.getTargetInfo().getTriple().isPS()) + UpdateAlignment(BaseAlign, UnpackedAlignTo, PreferredBaseAlign); return CharUnits::Zero(); } diff --git a/clang/test/SemaCXX/alignment-of-derived-class.cpp b/clang/test/SemaCXX/alignment-of-derived-class.cpp index 28c1fa9144b78..ab28bc0a235f1 100644 --- a/clang/test/SemaCXX/alignment-of-derived-class.cpp +++ b/clang/test/SemaCXX/alignment-of-derived-class.cpp @@ -2,7 +2,7 @@ // expected-no-diagnostics // Test that the alignment of a empty direct base class is correctly -// inherited by the derived class. +// inherited by the derived class, and correctly not inherited on PS4/PS5. struct A { } __attribute__ ((aligned(16))); @@ -12,22 +12,38 @@ static_assert(__alignof(A) == 16, "A should be aligned to 16 bytes"); struct B1 : public A { }; +#if defined(__SCE__) +static_assert(__alignof(B1) == 1, "B1 should be aligned to 1 byte"); +#else static_assert(__alignof(B1) == 16, "B1 should be aligned to 16 bytes"); +#endif struct B2 : public A { } __attribute__ ((aligned(2))); +#if defined(__SCE__) +static_assert(__alignof(B2) == 2, "B2 should be aligned to 2 bytes"); +#else static_assert(__alignof(B2) == 16, "B2 should be aligned to 16 bytes"); +#endif struct B3 : public A { } __attribute__ ((aligned(4))); +#if defined(__SCE__) +static_assert(__alignof(B3) == 4, "B3 should be aligned to 4 bytes"); +#else static_assert(__alignof(B3) == 16, "B3 should be aligned to 16 bytes"); +#endif struct B4 : public A { } __attribute__ ((aligned(8))); +#if defined(__SCE__) +static_assert(__alignof(B4) == 8, "B4 should be aligned to 8 bytes"); +#else static_assert(__alignof(B4) == 16, "B4 should be aligned to 16 bytes"); +#endif struct B5 : public A { } __attribute__ ((aligned(16))); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] d8dda57 - [PS5] Default to -fno-rtti
Author: Paul Robinson Date: 2022-05-25T06:48:21-07:00 New Revision: d8dda57ae7798a052e52ef5979980e815d2e4bc5 URL: https://github.com/llvm/llvm-project/commit/d8dda57ae7798a052e52ef5979980e815d2e4bc5 DIFF: https://github.com/llvm/llvm-project/commit/d8dda57ae7798a052e52ef5979980e815d2e4bc5.diff LOG: [PS5] Default to -fno-rtti Added: Modified: clang/lib/Driver/ToolChain.cpp clang/test/Driver/rtti-options.cpp Removed: diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp index efbf2442acfc..eb3117e689d8 100644 --- a/clang/lib/Driver/ToolChain.cpp +++ b/clang/lib/Driver/ToolChain.cpp @@ -67,8 +67,8 @@ static ToolChain::RTTIMode CalculateRTTIMode(const ArgList &Args, return ToolChain::RM_Disabled; } - // -frtti is default, except for the PS4 and DriverKit. - bool NoRTTI = Triple.isPS4() || Triple.isDriverKit(); + // -frtti is default, except for the PS4/PS5 and DriverKit. + bool NoRTTI = Triple.isPS() || Triple.isDriverKit(); return NoRTTI ? ToolChain::RM_Disabled : ToolChain::RM_Enabled; } diff --git a/clang/test/Driver/rtti-options.cpp b/clang/test/Driver/rtti-options.cpp index e1d37d35bb68..5a8a9fe43c74 100644 --- a/clang/test/Driver/rtti-options.cpp +++ b/clang/test/Driver/rtti-options.cpp @@ -22,6 +22,7 @@ // RUN: %clang -### -c -target x86_64-unknown-linux -fsanitize=undefined %s 2>&1 | FileCheck -check-prefix=CHECK-OK %s // RUN: %clang -### -c -target x86_64-unknown-linux -fsanitize=undefined -frtti %s 2>&1 | FileCheck -check-prefix=CHECK-OK %s // RUN: %clang -### -c -target x86_64-scei-ps4 -fsanitize=vptr %s 2>&1 | FileCheck -check-prefix=CHECK-SAN-WARN %s +// RUN: %clang -### -c -target x86_64-sie-ps5 -fsanitize=vptr %s 2>&1 | FileCheck -check-prefix=CHECK-SAN-WARN %s // Exceptions + no/default rtti // RUN: %clang -### -c -target x86_64-unknown-unknown -fcxx-exceptions -fno-rtti %s 2>&1 | FileCheck -check-prefix=CHECK-OK %s @@ -35,6 +36,7 @@ // -f{no-,}rtti/default // RUN: %clang -### -c -target x86_64-scei-ps4 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RTTI %s +// RUN: %clang -### -c -target x86_64-sie-ps5 %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RTTI %s // RUN: %clang -### -c -target x86_64-unknown-unknown -frtti %s 2>&1 | FileCheck -check-prefix=CHECK-RTTI %s // RUN: %clang -### -c -target x86_64-unknown-unknown -fno-rtti %s 2>&1 | FileCheck -check-prefix=CHECK-NO-RTTI %s // RUN: %clang -### -c -target x86_64-unknown-unknown %s 2>&1 | FileCheck -check-prefix=CHECK-RTTI %s ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 634c8ef - [PS5] Allow dllimport/dllexport same as PS4
Author: Paul Robinson Date: 2022-05-26T07:01:30-07:00 New Revision: 634c8ef69a836f3436d027b03965965bad6f3ff0 URL: https://github.com/llvm/llvm-project/commit/634c8ef69a836f3436d027b03965965bad6f3ff0 DIFF: https://github.com/llvm/llvm-project/commit/634c8ef69a836f3436d027b03965965bad6f3ff0.diff LOG: [PS5] Allow dllimport/dllexport same as PS4 Added: Modified: clang/include/clang/Basic/TargetInfo.h clang/lib/Sema/SemaTemplate.cpp clang/test/CodeGen/ps4-dllimport-dllexport.c clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp clang/test/CodeGenCXX/ps4-dllstorage-vtable-rtti.cpp clang/test/CodeGenCXX/windows-implicit-dllexport-template-specialization.cpp clang/test/CodeGenCXX/windows-itanium-dllexport.cpp clang/test/Sema/dllimport.c clang/test/SemaCXX/dllexport.cpp clang/test/SemaCXX/dllimport.cpp llvm/include/llvm/ADT/Triple.h Removed: diff --git a/clang/include/clang/Basic/TargetInfo.h b/clang/include/clang/Basic/TargetInfo.h index 470d153d845de..e4b5f0b751c48 100644 --- a/clang/include/clang/Basic/TargetInfo.h +++ b/clang/include/clang/Basic/TargetInfo.h @@ -1195,12 +1195,12 @@ class TargetInfo : public virtual TransferrableTargetInfo, /// Microsoft C++ code using dllimport/export attributes? virtual bool shouldDLLImportComdatSymbols() const { return getTriple().isWindowsMSVCEnvironment() || - getTriple().isWindowsItaniumEnvironment() || getTriple().isPS4(); + getTriple().isWindowsItaniumEnvironment() || getTriple().isPS(); } // Does this target have PS4 specific dllimport/export handling? virtual bool hasPS4DLLImportExport() const { -return getTriple().isPS4() || +return getTriple().isPS() || // Windows Itanium support allows for testing the SCEI flavour of // dllimport/export handling on a Windows system. (getTriple().isWindowsItaniumEnvironment() && diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp index 4a42969c34d3f..b11b97e12403c 100644 --- a/clang/lib/Sema/SemaTemplate.cpp +++ b/clang/lib/Sema/SemaTemplate.cpp @@ -9760,7 +9760,7 @@ DeclResult Sema::ActOnExplicitInstantiation( if (!getDLLAttr(Def) && getDLLAttr(Specialization) && (Context.getTargetInfo().shouldDLLImportComdatSymbols() && - !Context.getTargetInfo().getTriple().isPS4())) { + !Context.getTargetInfo().getTriple().isPS())) { // An explicit instantiation definition can add a dll attribute to a // template with a previous instantiation declaration. MinGW doesn't // allow this. @@ -9778,7 +9778,7 @@ DeclResult Sema::ActOnExplicitInstantiation( !PreviouslyDLLExported && Specialization->hasAttr(); if (Old_TSK == TSK_ImplicitInstantiation && NewlyDLLExported && (Context.getTargetInfo().shouldDLLImportComdatSymbols() && - !Context.getTargetInfo().getTriple().isPS4())) { + !Context.getTargetInfo().getTriple().isPS())) { // An explicit instantiation definition can add a dll attribute to a // template with a previous implicit instantiation. MinGW doesn't allow // this. We limit clang to only adding dllexport, to avoid potentially diff --git a/clang/test/CodeGen/ps4-dllimport-dllexport.c b/clang/test/CodeGen/ps4-dllimport-dllexport.c index a945000e7e323..efcdc4d7a5c48 100644 --- a/clang/test/CodeGen/ps4-dllimport-dllexport.c +++ b/clang/test/CodeGen/ps4-dllimport-dllexport.c @@ -1,9 +1,5 @@ -// RUN: %clang_cc1 \ -// RUN: -triple x86_64-scei-ps4 \ -// RUN: -fdeclspec \ -// RUN: -Werror \ -// RUN: -emit-llvm %s -o - | \ -// RUN: FileCheck %s +// RUN: %clang_cc1 -triple x86_64-scei-ps4 -fdeclspec -Werror -emit-llvm %s -o - | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-sie-ps5 -fdeclspec -Werror -emit-llvm %s -o - | FileCheck %s __declspec(dllexport) int export_int; diff --git a/clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp b/clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp index f0327567d5d08..432ef7835ddc5 100644 --- a/clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp +++ b/clang/test/CodeGenCXX/dllexport-vtable-thunks.cpp @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -triple x86_64-windows-gnu -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS="dso_local dllexport" // RUN: %clang_cc1 -triple x86_64-windows-itanium -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS="dso_local dllexport" // RUN: %clang_cc1 -triple x86_64-scei-ps4-fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS=dllexport +// RUN: %clang_cc1 -triple x86_64-sie-ps5 -fdeclspec -emit-llvm -o - %s | FileCheck %s -DDSO_ATTRS=dllexport struct __declspec(dllexport) A { virtual void m(); diff --git a/clang/test/CodeGenCXX/ps4-dllstorage-vtable-rtti.cpp b/clang/test/CodeGenCXX/ps4-dllstorage-vtable-rtti.cpp index 87d0686d34980.
[clang] 10555a8 - [PS5] Tweak dllexport test
Author: Paul Robinson Date: 2022-05-31T08:22:15-07:00 New Revision: 10555a82df22bf67a9c30165e952b44969b46b6f URL: https://github.com/llvm/llvm-project/commit/10555a82df22bf67a9c30165e952b44969b46b6f DIFF: https://github.com/llvm/llvm-project/commit/10555a82df22bf67a9c30165e952b44969b46b6f.diff LOG: [PS5] Tweak dllexport test Post-commit review pointed out that both PS4 and PS5 were using the same -std argument, better to use different ones just in case. Added: Modified: clang/test/SemaCXX/dllexport.cpp Removed: diff --git a/clang/test/SemaCXX/dllexport.cpp b/clang/test/SemaCXX/dllexport.cpp index 4aa1427563a2e..7d8bfdadbb839 100644 --- a/clang/test/SemaCXX/dllexport.cpp +++ b/clang/test/SemaCXX/dllexport.cpp @@ -4,7 +4,7 @@ // RUN: %clang_cc1 -triple x86_64-mingw32 -fsyntax-only -fms-extensions -verify -std=c++11 -Wunsupported-dll-base-class-template %s // RUN: %clang_cc1 -triple i686-windows-itanium -fsyntax-only -fms-extensions -verify -std=c++11 -Wunsupported-dll-base-class-template -DWI %s // RUN: %clang_cc1 -triple x86_64-windows-itanium -fsyntax-only -fms-extensions -verify -std=c++1y -Wunsupported-dll-base-class-template -DWI %s -// RUN: %clang_cc1 -triple x86_64-scei-ps4-fsyntax-only -fdeclspec -verify -std=c++1y -Wunsupported-dll-base-class-template -DWI %s +// RUN: %clang_cc1 -triple x86_64-scei-ps4-fsyntax-only -fdeclspec -verify -std=c++11 -Wunsupported-dll-base-class-template -DWI %s // RUN: %clang_cc1 -triple x86_64-sie-ps5 -fsyntax-only -fdeclspec -verify -std=c++1y -Wunsupported-dll-base-class-template -DWI %s // Helper structs to make templates more expressive. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 5d005d8 - Refactor PS4OSTargetInfo into a base class and PS4 subclass; prep for PS5
Author: Paul Robinson Date: 2022-06-01T13:30:29-07:00 New Revision: 5d005d8256ecd7d57c72e24e7169c4e3d40a773a URL: https://github.com/llvm/llvm-project/commit/5d005d8256ecd7d57c72e24e7169c4e3d40a773a DIFF: https://github.com/llvm/llvm-project/commit/5d005d8256ecd7d57c72e24e7169c4e3d40a773a.diff LOG: Refactor PS4OSTargetInfo into a base class and PS4 subclass; prep for PS5 Added: Modified: clang/lib/Basic/Targets/OSTargets.h Removed: diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index e9832977c7fe8..cf317f58540e3 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -541,8 +541,9 @@ class LLVM_LIBRARY_VISIBILITY PS3PPUTargetInfo : public OSTargetInfo { } }; +// Common base class for PS4/PS5 targets. template -class LLVM_LIBRARY_VISIBILITY PS4OSTargetInfo : public OSTargetInfo { +class LLVM_LIBRARY_VISIBILITY PSOSTargetInfo : public OSTargetInfo { protected: void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, MacroBuilder &Builder) const override { @@ -552,36 +553,49 @@ class LLVM_LIBRARY_VISIBILITY PS4OSTargetInfo : public OSTargetInfo { DefineStd(Builder, "unix", Opts); Builder.defineMacro("__ELF__"); Builder.defineMacro("__SCE__"); -Builder.defineMacro("__ORBIS__"); } public: - PS4OSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + PSOSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : OSTargetInfo(Triple, Opts) { this->WCharType = TargetInfo::UnsignedShort; -// On PS4, TLS variable cannot be aligned to more than 32 bytes (256 bits). +// On PS4/PS5, TLS variable cannot be aligned to more than 32 bytes (256 +// bits). this->MaxTLSAlign = 256; -// On PS4, do not honor explicit bit field alignment, +// On PS4/PS5, do not honor explicit bit field alignment, // as in "__attribute__((aligned(2))) int b : 1;". this->UseExplicitBitFieldAlignment = false; -switch (Triple.getArch()) { -default: -case llvm::Triple::x86_64: - this->MCountName = ".mcount"; - this->NewAlign = 256; - this->SuitableAlign = 256; - break; -} +this->MCountName = ".mcount"; +this->NewAlign = 256; +this->SuitableAlign = 256; } + TargetInfo::CallingConvCheckResult checkCallingConvention(CallingConv CC) const override { return (CC == CC_C) ? TargetInfo::CCCR_OK : TargetInfo::CCCR_Error; } }; +// PS4 Target +template +class LLVM_LIBRARY_VISIBILITY PS4OSTargetInfo : public PSOSTargetInfo { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, +MacroBuilder &Builder) const override { +// Start with base class defines. +PSOSTargetInfo::getOSDefines(Opts, Triple, Builder); + +Builder.defineMacro("__ORBIS__"); + } + +public: + PS4OSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : PSOSTargetInfo(Triple, Opts) {} +}; + // RTEMS Target template class LLVM_LIBRARY_VISIBILITY RTEMSTargetInfo : public OSTargetInfo { ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 8869ba3 - [PS5] Add PS5OSTargetInfo class, update affected tests
Author: Paul Robinson Date: 2022-06-01T13:30:29-07:00 New Revision: 8869ba366268c644200784b15c4e6b8efe891397 URL: https://github.com/llvm/llvm-project/commit/8869ba366268c644200784b15c4e6b8efe891397 DIFF: https://github.com/llvm/llvm-project/commit/8869ba366268c644200784b15c4e6b8efe891397.diff LOG: [PS5] Add PS5OSTargetInfo class, update affected tests Added: Modified: clang/lib/Basic/LangStandards.cpp clang/lib/Basic/Targets.cpp clang/lib/Basic/Targets/OSTargets.h clang/test/Preprocessor/init.c clang/test/Sema/wchar.c clang/unittests/Tooling/RecursiveASTVisitorTests/LambdaExpr.cpp Removed: diff --git a/clang/lib/Basic/LangStandards.cpp b/clang/lib/Basic/LangStandards.cpp index a21898dd3c627..5bacc3b164960 100644 --- a/clang/lib/Basic/LangStandards.cpp +++ b/clang/lib/Basic/LangStandards.cpp @@ -61,8 +61,8 @@ LangStandard::Kind clang::getDefaultLanguageStandard(clang::Language Lang, if (CLANG_DEFAULT_STD_C != LangStandard::lang_unspecified) return CLANG_DEFAULT_STD_C; -// The PS4 uses C99 as the default C standard. -if (T.isPS4()) +// The PS4 and PS5 use C99 as the default C standard. +if (T.isPS()) return LangStandard::lang_gnu99; return LangStandard::lang_gnu17; case Language::ObjC: diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index 85c73abde1826..2d6ef998485ae 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -592,6 +592,8 @@ TargetInfo *AllocateTarget(const llvm::Triple &Triple, return new NaClTargetInfo(Triple, Opts); case llvm::Triple::PS4: return new PS4OSTargetInfo(Triple, Opts); +case llvm::Triple::PS5: + return new PS5OSTargetInfo(Triple, Opts); default: return new X86_64TargetInfo(Triple, Opts); } diff --git a/clang/lib/Basic/Targets/OSTargets.h b/clang/lib/Basic/Targets/OSTargets.h index cf317f58540e3..a814f681b1468 100644 --- a/clang/lib/Basic/Targets/OSTargets.h +++ b/clang/lib/Basic/Targets/OSTargets.h @@ -596,6 +596,23 @@ class LLVM_LIBRARY_VISIBILITY PS4OSTargetInfo : public PSOSTargetInfo { : PSOSTargetInfo(Triple, Opts) {} }; +// PS5 Target +template +class LLVM_LIBRARY_VISIBILITY PS5OSTargetInfo : public PSOSTargetInfo { +protected: + void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple, +MacroBuilder &Builder) const override { +// Start with base class defines. +PSOSTargetInfo::getOSDefines(Opts, Triple, Builder); + +Builder.defineMacro("__PROSPERO__"); + } + +public: + PS5OSTargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) + : PSOSTargetInfo(Triple, Opts) {} +}; + // RTEMS Target template class LLVM_LIBRARY_VISIBILITY RTEMSTargetInfo : public OSTargetInfo { diff --git a/clang/test/Preprocessor/init.c b/clang/test/Preprocessor/init.c index 07b5fb86c45c2..61324fd5e43d8 100644 --- a/clang/test/Preprocessor/init.c +++ b/clang/test/Preprocessor/init.c @@ -1241,7 +1241,8 @@ // TCE:#define __tce__ 1 // TCE:#define tce 1 // -// RUN: %clang_cc1 -E -dM -ffreestanding -fgnuc-version=4.2.1 -triple=x86_64-scei-ps4 < /dev/null | FileCheck -match-full-lines -check-prefix PS4 %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64-scei-ps4 < /dev/null | FileCheck --match-full-lines --check-prefixes=PS4,PS4ONLY %s +// RUN: %clang_cc1 -E -dM -ffreestanding -triple=x86_64-sie-ps5 < /dev/null | FileCheck --match-full-lines --check-prefixes=PS4,PS5ONLY %s // // PS4:#define _LP64 1 // PS4:#define __BIGGEST_ALIGNMENT__ 32 @@ -1311,8 +1312,9 @@ // PS4:#define __LP64__ 1 // PS4:#define __MMX__ 1 // PS4:#define __NO_MATH_INLINES 1 -// PS4:#define __ORBIS__ 1 +// PS4ONLY:#define __ORBIS__ 1 // PS4:#define __POINTER_WIDTH__ 64 +// PS5ONLY:#define __PROSPERO__ 1 // PS4:#define __PTRDIFF_MAX__ 9223372036854775807L // PS4:#define __PTRDIFF_TYPE__ long int // PS4:#define __PTRDIFF_WIDTH__ 64 @@ -1357,7 +1359,8 @@ // PS4:#define __x86_64__ 1 // PS4:#define unix 1 // -// RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=x86_64-scei-ps4 < /dev/null | FileCheck -match-full-lines -check-prefix PS4-CXX %s +// RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=x86_64-scei-ps4 < /dev/null | FileCheck --match-full-lines --check-prefix PS4-CXX %s +// RUN: %clang_cc1 -x c++ -E -dM -ffreestanding -triple=x86_64-sie-ps5 < /dev/null | FileCheck --match-full-lines --check-prefix PS4-CXX %s // PS4-CXX:#define __STDCPP_DEFAULT_NEW_ALIGNMENT__ 32UL // // RUN: %clang_cc1 -E -dM -triple=x86_64-pc-mingw32 < /dev/null | FileCheck -match-full-lines -check-prefix X86-64-DECLSPEC %s diff --git a/clang/test/Sema/wchar.c b/clang/test/Sema/wchar.c index 5566207e50d7f..fa32ae6512fce 100644 --- a/clang/test/Sema/wchar.c +++ b/clang/test/Sema/wchar.c @@ -4,8 +4,8 @@ typedef __WCHAR_TYPE__ wchar_t; #if defined(_WIN32) || defined(_M_IX86) || d
[clang] b2c6251 - [PS5] Support r and y specifiers of freebsd_kernel_printf format strings
Author: Paul Robinson Date: 2022-06-02T06:27:11-07:00 New Revision: b2c6251c06700bfe8a69b780cb27928d3ba029db URL: https://github.com/llvm/llvm-project/commit/b2c6251c06700bfe8a69b780cb27928d3ba029db DIFF: https://github.com/llvm/llvm-project/commit/b2c6251c06700bfe8a69b780cb27928d3ba029db.diff LOG: [PS5] Support r and y specifiers of freebsd_kernel_printf format strings Added: Modified: clang/lib/AST/FormatString.cpp clang/test/Sema/format-strings-freebsd.c Removed: diff --git a/clang/lib/AST/FormatString.cpp b/clang/lib/AST/FormatString.cpp index 102bcca96a389..4977aaa513195 100644 --- a/clang/lib/AST/FormatString.cpp +++ b/clang/lib/AST/FormatString.cpp @@ -760,7 +760,7 @@ bool FormatSpecifier::hasValidLengthModifier(const TargetInfo &Target, return true; case ConversionSpecifier::FreeBSDrArg: case ConversionSpecifier::FreeBSDyArg: - return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS4(); + return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS(); default: return false; } @@ -795,7 +795,7 @@ bool FormatSpecifier::hasValidLengthModifier(const TargetInfo &Target, return true; case ConversionSpecifier::FreeBSDrArg: case ConversionSpecifier::FreeBSDyArg: - return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS4(); + return Target.getTriple().isOSFreeBSD() || Target.getTriple().isPS(); default: return false; } diff --git a/clang/test/Sema/format-strings-freebsd.c b/clang/test/Sema/format-strings-freebsd.c index 965d7c287be65..64b526eb2f076 100644 --- a/clang/test/Sema/format-strings-freebsd.c +++ b/clang/test/Sema/format-strings-freebsd.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -fsyntax-only -verify -triple i386-unknown-freebsd %s // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-unknown-freebsd %s // RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-scei-ps4 %s +// RUN: %clang_cc1 -fsyntax-only -verify -triple x86_64-sie-ps5 %s // Test FreeBSD kernel printf extensions. int freebsd_kernel_printf(const char *, ...) __attribute__((__format__(__freebsd_kprintf__, 1, 2))); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 5a6352b - Tidy up `pragma comment lib` handling and testing
Author: Paul Robinson Date: 2022-06-02T07:52:26-07:00 New Revision: 5a6352bc70fb0f309de22ea75ef132f32d8be9b4 URL: https://github.com/llvm/llvm-project/commit/5a6352bc70fb0f309de22ea75ef132f32d8be9b4 DIFF: https://github.com/llvm/llvm-project/commit/5a6352bc70fb0f309de22ea75ef132f32d8be9b4.diff LOG: Tidy up `pragma comment lib` handling and testing A bit of historical research shows that over the years: Commit 99efc036 added `pragma comment lib` support for PS4. Commit fd4db533 added `pragma comment lib` support for all ELF targets. Commit 1d16515f reworked dependent-library support for all ELF targets. The upshot is that some PS4-specific code became dead, and the testing became somewhat fragmented. I've removed the dead code and combined the previous PS4-specific and linux-specific tests for the diagnostics into one generic ELF test. Also added a couple of PS5 runs while I was in there. Added: clang/test/Preprocessor/pragma-comment-elf.c Modified: clang/lib/Parse/ParsePragma.cpp clang/test/CodeGen/pragma-comment.c Removed: clang/test/Preprocessor/pragma-comment-linux.c clang/test/Preprocessor/pragma_ps4.c diff --git a/clang/lib/Parse/ParsePragma.cpp b/clang/lib/Parse/ParsePragma.cpp index f8e311c7c35ad..c94640c31c500 100644 --- a/clang/lib/Parse/ParsePragma.cpp +++ b/clang/lib/Parse/ParsePragma.cpp @@ -3027,14 +3027,6 @@ void PragmaCommentHandler::HandlePragma(Preprocessor &PP, return; } - // On PS4, issue a warning about any pragma comments other than - // #pragma comment lib. - if (PP.getTargetInfo().getTriple().isPS4() && Kind != PCK_Lib) { -PP.Diag(Tok.getLocation(), diag::warn_pragma_comment_ignored) - << II->getName(); -return; - } - // Read the optional string if present. PP.Lex(Tok); std::string ArgumentString; diff --git a/clang/test/CodeGen/pragma-comment.c b/clang/test/CodeGen/pragma-comment.c index 25675d94c5a4d..a4746f5c47bf6 100644 --- a/clang/test/CodeGen/pragma-comment.c +++ b/clang/test/CodeGen/pragma-comment.c @@ -4,6 +4,7 @@ // RUN: %clang_cc1 %s -triple thumbv7-linux-gnueabihf -fms-extensions -emit-llvm -o - | FileCheck -check-prefix ELF %s --implicit-check-not llvm.linker.options // RUN: %clang_cc1 %s -triple i686-pc-linux -fms-extensions -emit-llvm -o - | FileCheck -check-prefix ELF %s --implicit-check-not llvm.linker.options // RUN: %clang_cc1 %s -triple x86_64-scei-ps4 -fms-extensions -emit-llvm -o - | FileCheck -check-prefix ELF %s --implicit-check-not llvm.linker.options +// RUN: %clang_cc1 %s -triple x86_64-sie-ps5 -fms-extensions -emit-llvm -o - | FileCheck -check-prefix ELF %s --implicit-check-not llvm.linker.options // RUN: %clang_cc1 %s -triple aarch64-windows-msvc -fms-extensions -emit-llvm -o - | FileCheck %s #pragma comment(lib, "msvcrt.lib") diff --git a/clang/test/Preprocessor/pragma_ps4.c b/clang/test/Preprocessor/pragma-comment-elf.c similarity index 79% rename from clang/test/Preprocessor/pragma_ps4.c rename to clang/test/Preprocessor/pragma-comment-elf.c index 63651b6a96fb1..7b84aba51a0da 100644 --- a/clang/test/Preprocessor/pragma_ps4.c +++ b/clang/test/Preprocessor/pragma-comment-elf.c @@ -1,6 +1,8 @@ -// RUN: %clang_cc1 %s -triple x86_64-scei-ps4 -fsyntax-only -verify -fms-extensions +// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -triple x86_64-scei-ps4 +// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -triple x86_64-sie-ps5 +// RUN: %clang_cc1 %s -fsyntax-only -verify -fms-extensions -triple i686-unknown-linux-gnu -// On PS4, issue a diagnostic that pragma comments are ignored except: +// On ELF targets, issue a diagnostic that pragma comments are ignored except: // #pragma comment lib #pragma comment(lib) diff --git a/clang/test/Preprocessor/pragma-comment-linux.c b/clang/test/Preprocessor/pragma-comment-linux.c deleted file mode 100644 index fcac049f46e83..0 --- a/clang/test/Preprocessor/pragma-comment-linux.c +++ /dev/null @@ -1,5 +0,0 @@ -// RUN: %clang_cc1 -triple i686-unknown-linux-gnu -fsyntax-only -verify %s -Wunknown-pragmas - -#pragma comment(linker, "") -// expected-warning@-1 {{'#pragma comment linker' ignored}} - ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] cc756f9 - [PS5] Classify __m64 as integer, matching PS4 ABI
Author: Paul Robinson Date: 2022-06-02T11:00:53-07:00 New Revision: cc756f91c3803a7f91868ecf64929a90399cb4bb URL: https://github.com/llvm/llvm-project/commit/cc756f91c3803a7f91868ecf64929a90399cb4bb DIFF: https://github.com/llvm/llvm-project/commit/cc756f91c3803a7f91868ecf64929a90399cb4bb.diff LOG: [PS5] Classify __m64 as integer, matching PS4 ABI Added: Modified: clang/lib/CodeGen/TargetInfo.cpp clang/test/CodeGen/X86/3dnow-builtins.c Removed: diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 4b7b301594d77..0f4987efae758 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -2364,7 +2364,7 @@ class X86_64ABIInfo : public SwiftABIInfo { return false; const llvm::Triple &Triple = getTarget().getTriple(); -if (Triple.isOSDarwin() || Triple.getOS() == llvm::Triple::PS4) +if (Triple.isOSDarwin() || Triple.isPS()) return false; if (Triple.isOSFreeBSD() && Triple.getOSMajorVersion() >= 10) return false; diff --git a/clang/test/CodeGen/X86/3dnow-builtins.c b/clang/test/CodeGen/X86/3dnow-builtins.c index 71a46c9b44b5c..af754b71555c4 100644 --- a/clang/test/CodeGen/X86/3dnow-builtins.c +++ b/clang/test/CodeGen/X86/3dnow-builtins.c @@ -1,5 +1,6 @@ // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-unknown-unknown -target-feature +3dnowa -emit-llvm -o - -Wall -Werror | FileCheck %s -check-prefix=GCC -check-prefix=CHECK // RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-scei-ps4 -target-feature +3dnowa -emit-llvm -o - -Wall -Werror | FileCheck %s -check-prefix=PS4 -check-prefix=CHECK +// RUN: %clang_cc1 -ffreestanding %s -triple=x86_64-sie-ps5 -target-feature +3dnowa -emit-llvm -o - -Wall -Werror | FileCheck %s -check-prefix=PS4 -check-prefix=CHECK #include ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] dc5175a - [PS5] Make passing unions in registers match PS4 ABI
Author: Paul Robinson Date: 2022-06-02T11:00:54-07:00 New Revision: dc5175adef0804eb396690ea3fe35c6d450e6e64 URL: https://github.com/llvm/llvm-project/commit/dc5175adef0804eb396690ea3fe35c6d450e6e64 DIFF: https://github.com/llvm/llvm-project/commit/dc5175adef0804eb396690ea3fe35c6d450e6e64.diff LOG: [PS5] Make passing unions in registers match PS4 ABI Added: Modified: clang/lib/CodeGen/TargetInfo.cpp clang/test/CodeGen/X86/avx-union.c Removed: diff --git a/clang/lib/CodeGen/TargetInfo.cpp b/clang/lib/CodeGen/TargetInfo.cpp index 0f4987efae75..5e97a946782c 100644 --- a/clang/lib/CodeGen/TargetInfo.cpp +++ b/clang/lib/CodeGen/TargetInfo.cpp @@ -3131,7 +3131,7 @@ void X86_64ABIInfo::classify(QualType Ty, uint64_t OffsetBase, Class &Lo, unsigned idx = 0; bool UseClang11Compat = getContext().getLangOpts().getClangABICompat() <= LangOptions::ClangABI::Ver11 || -getContext().getTargetInfo().getTriple().isPS4(); +getContext().getTargetInfo().getTriple().isPS(); bool IsUnion = RT->isUnionType() && !UseClang11Compat; for (RecordDecl::field_iterator i = RD->field_begin(), e = RD->field_end(); diff --git a/clang/test/CodeGen/X86/avx-union.c b/clang/test/CodeGen/X86/avx-union.c index 386d8cc32ec4..65fd62cf45bf 100644 --- a/clang/test/CodeGen/X86/avx-union.c +++ b/clang/test/CodeGen/X86/avx-union.c @@ -5,6 +5,7 @@ // RUN: %clang_cc1 -no-opaque-pointers -w -ffreestanding -triple x86_64-linux-gnu -target-feature +avx -fclang-abi-compat=10.0 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK-LEGACY,AVX // RUN: %clang_cc1 -no-opaque-pointers -w -ffreestanding -triple x86_64-linux-gnu -target-feature +avx512f -fclang-abi-compat=11.0 -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK-LEGACY,AVX512-LEGACY // RUN: %clang_cc1 -no-opaque-pointers -w -ffreestanding -triple x86_64-scei-ps4 -target-feature +avx -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-LEGACY +// RUN: %clang_cc1 -no-opaque-pointers -w -ffreestanding -triple x86_64-sie-ps5 -target-feature +avx -emit-llvm -o - %s | FileCheck %s --check-prefix=CHECK-LEGACY // This tests verifies that a union parameter should pass by a vector regitster whose first eightbyte is SSE and the other eightbytes are SSEUP. ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] bb7835e - [PS5] Apply 'packed' attribute to base classes, matching PS4 ABI
Author: Paul Robinson Date: 2022-06-02T12:26:26-07:00 New Revision: bb7835e2a7fbb12d711736862e75497c83a45be2 URL: https://github.com/llvm/llvm-project/commit/bb7835e2a7fbb12d711736862e75497c83a45be2 DIFF: https://github.com/llvm/llvm-project/commit/bb7835e2a7fbb12d711736862e75497c83a45be2.diff LOG: [PS5] Apply 'packed' attribute to base classes, matching PS4 ABI Added: Modified: clang/lib/AST/RecordLayoutBuilder.cpp clang/test/CodeGenCXX/alignment.cpp Removed: diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index 8827e956fc2f4..30f9d84a9dfdd 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/lib/AST/RecordLayoutBuilder.cpp @@ -1223,7 +1223,7 @@ ItaniumRecordLayoutBuilder::LayoutBase(const BaseSubobjectInfo *Base) { // Per GCC's documentation, it only applies to non-static data members. return (Packed && ((Context.getLangOpts().getClangABICompat() <= LangOptions::ClangABI::Ver6) || - Context.getTargetInfo().getTriple().isPS4() || + Context.getTargetInfo().getTriple().isPS() || Context.getTargetInfo().getTriple().isOSAIX())) ? CharUnits::One() : UnpackedAlign; diff --git a/clang/test/CodeGenCXX/alignment.cpp b/clang/test/CodeGenCXX/alignment.cpp index ffa4d873b5d76..98ce2fa28540f 100644 --- a/clang/test/CodeGenCXX/alignment.cpp +++ b/clang/test/CodeGenCXX/alignment.cpp @@ -1,6 +1,7 @@ // RUN: %clang_cc1 -no-opaque-pointers %s -emit-llvm -o - -triple=x86_64-apple-darwin10 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-NOCOMPAT // RUN: %clang_cc1 -no-opaque-pointers %s -emit-llvm -o - -triple=x86_64-apple-darwin10 -fclang-abi-compat=6.0 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V6COMPAT // RUN: %clang_cc1 -no-opaque-pointers %s -emit-llvm -o - -triple=x86_64-scei-ps4 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V6COMPAT +// RUN: %clang_cc1 -no-opaque-pointers %s -emit-llvm -o - -triple=x86_64-sie-ps5 | FileCheck %s --check-prefix=CHECK --check-prefix=CHECK-V6COMPAT extern int int_source(); extern void int_sink(int x); ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 30b7ffe - [PS5] Pack non-POD members in packed structs, matching PS4 ABI
Author: Paul Robinson Date: 2022-06-02T12:26:26-07:00 New Revision: 30b7ffe74e66aa0c33c689429c593f261c2c9d13 URL: https://github.com/llvm/llvm-project/commit/30b7ffe74e66aa0c33c689429c593f261c2c9d13 DIFF: https://github.com/llvm/llvm-project/commit/30b7ffe74e66aa0c33c689429c593f261c2c9d13.diff LOG: [PS5] Pack non-POD members in packed structs, matching PS4 ABI Added: Modified: clang/lib/AST/RecordLayoutBuilder.cpp clang/test/SemaCXX/class-layout.cpp Removed: diff --git a/clang/lib/AST/RecordLayoutBuilder.cpp b/clang/lib/AST/RecordLayoutBuilder.cpp index 30f9d84a9dfdd..6e775baed147f 100644 --- a/clang/lib/AST/RecordLayoutBuilder.cpp +++ b/clang/lib/AST/RecordLayoutBuilder.cpp @@ -1891,7 +1891,7 @@ void ItaniumRecordLayoutBuilder::LayoutField(const FieldDecl *D, bool FieldPacked = (Packed && (!FieldClass || FieldClass->isPOD() || Context.getLangOpts().getClangABICompat() <= LangOptions::ClangABI::Ver14 || - Target.isPS4() || Target.isOSDarwin())) || + Target.isPS() || Target.isOSDarwin())) || D->hasAttr(); AlignRequirementKind AlignRequirement = AlignRequirementKind::None; diff --git a/clang/test/SemaCXX/class-layout.cpp b/clang/test/SemaCXX/class-layout.cpp index 940966950d8be..f81e526d0e2ad 100644 --- a/clang/test/SemaCXX/class-layout.cpp +++ b/clang/test/SemaCXX/class-layout.cpp @@ -2,6 +2,7 @@ // RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -fsyntax-only -verify -std=c++11 -Wno-inaccessible-base // RUN: %clang_cc1 -triple x86_64-apple-darwin%s -fsyntax-only -verify -std=c++11 -Wno-inaccessible-base -DCLANG_ABI_COMPAT=14 // RUN: %clang_cc1 -triple x86_64-scei-ps4%s -fsyntax-only -verify -std=c++11 -Wno-inaccessible-base -DCLANG_ABI_COMPAT=6 +// RUN: %clang_cc1 -triple x86_64-sie-ps5 %s -fsyntax-only -verify -std=c++11 -Wno-inaccessible-base -DCLANG_ABI_COMPAT=6 // RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -fsyntax-only -verify -std=c++11 -Wno-inaccessible-base -fclang-abi-compat=6 -DCLANG_ABI_COMPAT=6 // RUN: %clang_cc1 -triple x86_64-unknown-unknown %s -fsyntax-only -verify -std=c++11 -Wno-inaccessible-base -fclang-abi-compat=14 -DCLANG_ABI_COMPAT=14 // expected-no-diagnostics ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] aa1cdf8 - [PS5] Ignore 'packed' on one-byte bitfields, matching PS4
Author: Paul Robinson Date: 2022-06-02T14:41:18-07:00 New Revision: aa1cdf87b5a97c2476a80f3aa6ac5af3e5ec0494 URL: https://github.com/llvm/llvm-project/commit/aa1cdf87b5a97c2476a80f3aa6ac5af3e5ec0494 DIFF: https://github.com/llvm/llvm-project/commit/aa1cdf87b5a97c2476a80f3aa6ac5af3e5ec0494.diff LOG: [PS5] Ignore 'packed' on one-byte bitfields, matching PS4 Added: Modified: clang/lib/Sema/SemaDeclAttr.cpp clang/test/Sema/struct-packed-align.c Removed: diff --git a/clang/lib/Sema/SemaDeclAttr.cpp b/clang/lib/Sema/SemaDeclAttr.cpp index 466ca1b573be..b629fcb91b25 100644 --- a/clang/lib/Sema/SemaDeclAttr.cpp +++ b/clang/lib/Sema/SemaDeclAttr.cpp @@ -1404,9 +1404,9 @@ static void handlePackedAttr(Sema &S, Decl *D, const ParsedAttr &AL) { FD->isBitField() && S.Context.getTypeAlign(FD->getType()) <= 8); -if (S.getASTContext().getTargetInfo().getTriple().isPS4()) { +if (S.getASTContext().getTargetInfo().getTriple().isPS()) { if (BitfieldByteAligned) -// The PS4 target needs to maintain ABI backwards compatibility. +// The PS4/PS5 targets need to maintain ABI backwards compatibility. S.Diag(AL.getLoc(), diag::warn_attribute_ignored_for_field_of_type) << AL << FD->getType(); else diff --git a/clang/test/Sema/struct-packed-align.c b/clang/test/Sema/struct-packed-align.c index 03b012e34028..2a60f368479a 100644 --- a/clang/test/Sema/struct-packed-align.c +++ b/clang/test/Sema/struct-packed-align.c @@ -1,6 +1,7 @@ // RUN: %clang_cc1 %s -fsyntax-only -verify // RUN: %clang_cc1 %s -fsyntax-only -triple=x86_64-windows-coff -verify // RUN: %clang_cc1 %s -fsyntax-only -triple=x86_64-scei-ps4 -verify +// RUN: %clang_cc1 %s -fsyntax-only -triple=x86_64-sie-ps5 -verify // Packed structs. struct s { @@ -147,9 +148,9 @@ extern int n2[__alignof(struct nS) == 1 ? 1 : -1]; // See the documentation of -Wpacked-bitfield-compat for more information. struct packed_chars { char a : 8, b : 8, c : 8, d : 4; -#ifdef __ORBIS__ - // Test for pre-r254596 clang behavior on the PS4 target. PS4 must maintain - // ABI backwards compatibility. +#ifdef __SCE__ + // Test for pre-r254596 clang behavior on the PS4/PS5 targets, which must + // maintain ABI backwards compatibility. char e : 8 __attribute__((packed)); // expected-warning@-1 {{'packed' attribute ignored for field of type 'char'}} #else @@ -159,11 +160,11 @@ struct packed_chars { char f : 4, g : 8, h : 8, i : 8; }; -#if (defined(_WIN32) || defined(__ORBIS__)) && !defined(__declspec) // _MSC_VER is unavailable in cc1. +#if (defined(_WIN32) || defined(__SCE__)) && !defined(__declspec) // _MSC_VER is unavailable in cc1. // On Windows clang uses MSVC compatible layout in this case. // -// Additionally, test for pre-r254596 clang behavior on the PS4 target. PS4 -// must maintain ABI backwards compatibility. +// Additionally, test for pre-r254596 clang behavior on the PS4/PS5 targets. +// They must maintain ABI backwards compatibility. extern int o1[sizeof(struct packed_chars) == 9 ? 1 : -1]; extern int o2[__alignof(struct packed_chars) == 1 ? 1 : -1]; #elif defined(_AIX) ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[clang] 6c30b78 - Reland "[PS4/PS5] Tidy up driver warnings finding the SDK"
Author: Paul Robinson Date: 2023-07-17T13:57:08-07:00 New Revision: 6c30b7886919eb19289f5ed9216e72de9700c9fb URL: https://github.com/llvm/llvm-project/commit/6c30b7886919eb19289f5ed9216e72de9700c9fb DIFF: https://github.com/llvm/llvm-project/commit/6c30b7886919eb19289f5ed9216e72de9700c9fb.diff LOG: Reland "[PS4/PS5] Tidy up driver warnings finding the SDK" Instead of warning possibly up to 3 times about the same problem, warn only about the actual missing directories. This reverts commit 9b3323d39f635db870de958f067c672f54d7b192. The warning will stay DefaultIgnore upstream, because a variety of tests aren't expecting it and updating the tests isn't worth the effort. Added: Modified: clang/include/clang/Basic/DiagnosticDriverKinds.td clang/lib/Driver/ToolChains/PS4CPU.cpp clang/test/Driver/frame-pointer-elim.c clang/test/Driver/ps4-ps5-visibility-dllstorageclass.c Removed: diff --git a/clang/include/clang/Basic/DiagnosticDriverKinds.td b/clang/include/clang/Basic/DiagnosticDriverKinds.td index d10262826bf292..1b69324d073ab5 100644 --- a/clang/include/clang/Basic/DiagnosticDriverKinds.td +++ b/clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -575,17 +575,13 @@ def err_drv_unsupported_fpatchable_function_entry_argument : Error< "the second argument of '-fpatchable-function-entry' must be smaller than the first argument">; def warn_drv_unable_to_find_directory_expected : Warning< - "unable to find %0 directory, expected to be in '%1'">, + "unable to find %0 directory, expected to be in '%1' found via %2">, InGroup, DefaultIgnore; def warn_drv_ps_force_pic : Warning< "option '%0' was ignored by the %1 toolchain, using '-fPIC'">, InGroup; -def warn_drv_ps_sdk_dir : Warning< - "environment variable '%0' is set, but points to invalid or nonexistent directory '%1'">, - InGroup; - def err_drv_defsym_invalid_format : Error<"defsym must be of the form: sym=value: %0">; def err_drv_defsym_invalid_symval : Error<"value is not an integer: %0">; def warn_drv_msvc_not_found : Warning< diff --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp index 37006dc5d7ed8b..2f43d33bf0f1c8 100644 --- a/clang/lib/Driver/ToolChains/PS4CPU.cpp +++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp @@ -256,30 +256,23 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, D.Diag(clang::diag::err_drv_unsupported_opt_for_target) << "-static" << Platform; - // Determine where to find the PS4/PS5 libraries. We use the EnvVar - // if it exists; otherwise use the driver's installation path, which - // should be /host_tools/bin. - - SmallString<512> SDKDir; - if (const char *EnvValue = getenv(EnvVar)) { -if (!llvm::sys::fs::exists(EnvValue)) - D.Diag(clang::diag::warn_drv_ps_sdk_dir) << EnvVar << EnvValue; -SDKDir = EnvValue; - } else { -SDKDir = D.Dir; -llvm::sys::path::append(SDKDir, "/../../"); - } - - // By default, the driver won't report a warning if it can't find the - // SDK include or lib directories. This behavior could be changed if - // -Weverything or -Winvalid-or-nonexistent-directory options are passed. + // Determine where to find the PS4/PS5 libraries. // If -isysroot was passed, use that as the SDK base path. + // If not, we use the EnvVar if it exists; otherwise use the driver's + // installation path, which should be /host_tools/bin. + SmallString<80> Whence; if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) { SDKRootDir = A->getValue(); if (!llvm::sys::fs::exists(SDKRootDir)) D.Diag(clang::diag::warn_missing_sysroot) << SDKRootDir; - } else -SDKRootDir = std::string(SDKDir.str()); +Whence = A->getSpelling(); + } else if (const char *EnvValue = getenv(EnvVar)) { +SDKRootDir = EnvValue; +Whence = { "environment variable '", EnvVar, "'" }; + } else { +SDKRootDir = D.Dir + "/../../"; +Whence = "compiler's location"; + } SmallString<512> SDKIncludeDir(SDKRootDir); llvm::sys::path::append(SDKIncludeDir, "target/include"); @@ -289,7 +282,7 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, !Args.hasArg(options::OPT__sysroot_EQ) && !llvm::sys::fs::exists(SDKIncludeDir)) { D.Diag(clang::diag::warn_drv_unable_to_find_directory_expected) -<< Twine(Platform, " system headers").str() << SDKIncludeDir; +<< Twine(Platform, " system headers").str() << SDKIncludeDir << Whence; } SmallString<512> SDKLibDir(SDKRootDir); @@ -301,7 +294,7 @@ toolchains::PS4PS5Base::PS4PS5Base(const Driver &D, const llvm::Triple &Triple, !Args.hasArg(options::OPT_emit_ast) && !llvm::sys::fs::exists(SDKLibDir)) { D.Diag(clang::diag::warn_drv_unable_to_find_directory_expected) -<< Twine(Platform, " system libraries").str() << SDKLibD
[clang] 775d6df - [Headers][doc] Add SHA1/SHA256 intrinsic descriptions
Author: Paul Robinson Date: 2023-07-21T14:26:47-07:00 New Revision: 775d6df6a5f2fbe8d4ad6174badc2ef553ada6e3 URL: https://github.com/llvm/llvm-project/commit/775d6df6a5f2fbe8d4ad6174badc2ef553ada6e3 DIFF: https://github.com/llvm/llvm-project/commit/775d6df6a5f2fbe8d4ad6174badc2ef553ada6e3.diff LOG: [Headers][doc] Add SHA1/SHA256 intrinsic descriptions Differential revision: https://reviews.llvm.org/D155861 Added: Modified: clang/lib/Headers/shaintrin.h Removed: diff --git a/clang/lib/Headers/shaintrin.h b/clang/lib/Headers/shaintrin.h index 08b1fb1dc16a36..232e1fa298230f 100644 --- a/clang/lib/Headers/shaintrin.h +++ b/clang/lib/Headers/shaintrin.h @@ -17,39 +17,167 @@ /* Define the default attributes for the functions in this file. */ #define __DEFAULT_FN_ATTRS __attribute__((__always_inline__, __nodebug__, __target__("sha"), __min_vector_width__(128))) +/// Performs four iterations of the inner loop of the SHA-1 message digest +///algorithm using the starting SHA-1 state (A, B, C, D) from the 128-bit +///vector of [4 x i32] in \a V1 and the next four 32-bit elements of the +///message from the 128-bit vector of [4 x i32] in \a V2. Note that the +///SHA-1 state variable E must have already been added to \a V2 +///(\c _mm_sha1nexte_epu32() can perform this step). Returns the updated +///SHA-1 state (A, B, C, D) as a 128-bit vector of [4 x i32]. +/// +///The SHA-1 algorithm has an inner loop of 80 iterations, twenty each +///with a diff erent combining function and rounding constant. This +///intrinsic performs four iterations using a combining function and +///rounding constant selected by \a M[1:0]. +/// +/// \headerfile +/// +/// \code +/// __m128i _mm_sha1rnds4_epu32(__m128i V1, __m128i V2, const int M); +/// \endcode +/// +/// This intrinsic corresponds to the \c SHA1RNDS4 instruction. +/// +/// \param V1 +///A 128-bit vector of [4 x i32] containing the initial SHA-1 state. +/// \param V2 +///A 128-bit vector of [4 x i32] containing the next four elements of +///the message, plus SHA-1 state variable E. +/// \param M +///An immediate value where bits [1:0] select among four possible +///combining functions and rounding constants (not specified here). +/// \returns A 128-bit vector of [4 x i32] containing the updated SHA-1 state. #define _mm_sha1rnds4_epu32(V1, V2, M) \ __builtin_ia32_sha1rnds4((__v4si)(__m128i)(V1), (__v4si)(__m128i)(V2), (M)) +/// Calculates the SHA-1 state variable E from the SHA-1 state variables in +///the 128-bit vector of [4 x i32] in \a __X, adds that to the next set of +///four message elements in the 128-bit vector of [4 x i32] in \a __Y, and +///returns the result. +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c SHA1NEXTE instruction. +/// +/// \param __X +///A 128-bit vector of [4 x i32] containing the current SHA-1 state. +/// \param __Y +///A 128-bit vector of [4 x i32] containing the next four elements of the +///message. +/// \returns A 128-bit vector of [4 x i32] containing the updated SHA-1 +///values. static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sha1nexte_epu32(__m128i __X, __m128i __Y) { return (__m128i)__builtin_ia32_sha1nexte((__v4si)__X, (__v4si)__Y); } +/// Performs an intermediate calculation for deriving the next four SHA-1 +///message elements using previous message elements from the 128-bit +///vectors of [4 x i32] in \a __X and \a __Y, and returns the result. +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c SHA1MSG1 instruction. +/// +/// \param __X +///A 128-bit vector of [4 x i32] containing previous message elements. +/// \param __Y +///A 128-bit vector of [4 x i32] containing previous message elements. +/// \returns A 128-bit vector of [4 x i32] containing the derived SHA-1 +///elements. static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sha1msg1_epu32(__m128i __X, __m128i __Y) { return (__m128i)__builtin_ia32_sha1msg1((__v4si)__X, (__v4si)__Y); } +/// Performs the final calculation for deriving the next four SHA-1 message +///elements using previous message elements from the 128-bit vectors of +///[4 x i32] in \a __X and \a __Y, and returns the result. +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c SHA1MSG2 instruction. +/// +/// \param __X +///A 128-bit vector of [4 x i32] containing an intermediate result. +/// \param __Y +///A 128-bit vector of [4 x i32] containing previous message values. +/// \returns A 128-bit vector of [4 x i32] containing the updated SHA-1 +///values. static __inline__ __m128i __DEFAULT_FN_ATTRS _mm_sha1msg2_epu32(__m128i __X, __m128i __Y) { return (__m128i)__builtin_ia32_sha1msg2((__v4si)__X, (__v4si)__Y); } +/// Performs two rounds of SHA-256 operation using the following inputs: a +///
[clang] 69593aa - [Headers][doc] Add misc non-AVX2 intrinsic descriptions
Author: Paul Robinson Date: 2023-07-24T10:51:18-07:00 New Revision: 69593aa5c054cec6be6b822c073ccdc63748a68d URL: https://github.com/llvm/llvm-project/commit/69593aa5c054cec6be6b822c073ccdc63748a68d DIFF: https://github.com/llvm/llvm-project/commit/69593aa5c054cec6be6b822c073ccdc63748a68d.diff LOG: [Headers][doc] Add misc non-AVX2 intrinsic descriptions Adds descriptions for adxintrin.h, bmi2intrin.h, clflushoptintrin.h, clzerointrin.h, rdseedintrin.h, and xsavecintrin.h. Differential revision: https://reviews.llvm.org/D155859 Added: Modified: clang/lib/Headers/adxintrin.h clang/lib/Headers/bmi2intrin.h clang/lib/Headers/clflushoptintrin.h clang/lib/Headers/clzerointrin.h clang/lib/Headers/rdseedintrin.h clang/lib/Headers/xsavecintrin.h Removed: diff --git a/clang/lib/Headers/adxintrin.h b/clang/lib/Headers/adxintrin.h index 4382530fa6c04f..20f6211e567b30 100644 --- a/clang/lib/Headers/adxintrin.h +++ b/clang/lib/Headers/adxintrin.h @@ -28,7 +28,31 @@ extern "C" { #endif -/* Intrinsics that are available only if __ADX__ defined */ +/* Intrinsics that are available only if __ADX__ is defined. */ + +/// Adds unsigned 32-bit integers \a __x and \a __y, plus 0 or 1 as indicated +///by the carry flag \a __cf. Stores the unsigned 32-bit sum in the memory +///at \a __p, and returns the 8-bit carry-out (carry flag). +/// +/// \code{.operation} +/// temp := (__cf == 0) ? 0 : 1 +/// Store32(__p, __x + __y + temp) +/// result := CF +/// \endcode +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c ADCX instruction. +/// +/// \param __cf +///The 8-bit unsigned carry flag; any non-zero value indicates carry. +/// \param __x +///A 32-bit unsigned addend. +/// \param __y +///A 32-bit unsigned addend. +/// \param __p +///Pointer to memory for storing the sum. +/// \returns The 8-bit unsigned carry-out value. __INLINE unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx"))) _addcarryx_u32(unsigned char __cf, unsigned int __x, unsigned int __y, @@ -37,6 +61,29 @@ __INLINE unsigned char } #ifdef __x86_64__ +/// Adds unsigned 64-bit integers \a __x and \a __y, plus 0 or 1 as indicated +///by the carry flag \a __cf. Stores the unsigned 64-bit sum in the memory +///at \a __p, and returns the 8-bit carry-out (carry flag). +/// +/// \code{.operation} +/// temp := (__cf == 0) ? 0 : 1 +/// Store64(__p, __x + __y + temp) +/// result := CF +/// \endcode +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c ADCX instruction. +/// +/// \param __cf +///The 8-bit unsigned carry flag; any non-zero value indicates carry. +/// \param __x +///A 64-bit unsigned addend. +/// \param __y +///A 64-bit unsigned addend. +/// \param __p +///Pointer to memory for storing the sum. +/// \returns The 8-bit unsigned carry-out value. __INLINE unsigned char __attribute__((__always_inline__, __nodebug__, __target__("adx"))) _addcarryx_u64(unsigned char __cf, unsigned long long __x, @@ -45,7 +92,31 @@ __INLINE unsigned char } #endif -/* Intrinsics that are also available if __ADX__ undefined */ +/* Intrinsics that are also available if __ADX__ is undefined. */ + +/// Adds unsigned 32-bit integers \a __x and \a __y, plus 0 or 1 as indicated +///by the carry flag \a __cf. Stores the unsigned 32-bit sum in the memory +///at \a __p, and returns the 8-bit carry-out (carry flag). +/// +/// \code{.operation} +/// temp := (__cf == 0) ? 0 : 1 +/// Store32(__p, __x + __y + temp) +/// result := CF +/// \endcode +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c ADC instruction. +/// +/// \param __cf +///The 8-bit unsigned carry flag; any non-zero value indicates carry. +/// \param __x +///A 32-bit unsigned addend. +/// \param __y +///A 32-bit unsigned addend. +/// \param __p +///Pointer to memory for storing the sum. +/// \returns The 8-bit unsigned carry-out value. __INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u32(unsigned char __cf, unsigned int __x, unsigned int __y, @@ -54,6 +125,29 @@ __INLINE unsigned char __DEFAULT_FN_ATTRS _addcarry_u32(unsigned char __cf, } #ifdef __x86_64__ +/// Adds unsigned 64-bit integers \a __x and \a __y, plus 0 or 1 as indicated +///by the carry flag \a __cf. Stores the unsigned 64-bit sum in the memory +///at \a __p, and returns the 8-bit carry-out (carry flag). +/// +/// \code{.operation} +/// temp := (__cf == 0) ? 0 : 1 +/// Store64(__p, __x + __y + temp) +/// result := CF +/// \endcode +/// +/// \headerfile +/// +/// This intrinsic corresponds to the \c ADC instruction. +/// +/// \param __cf +///The 8-bit unsigned carry flag; any non-zero value indicates carry. +/// \param __x +///A 64
[clang] 7abb5fc - [DWARF] Make sure file entry for artificial functions has an MD5 checksum
Author: Paul Robinson Date: 2023-07-24T10:53:10-07:00 New Revision: 7abb5fc618cec66841a8280d2a099a4c9c8cb91b URL: https://github.com/llvm/llvm-project/commit/7abb5fc618cec66841a8280d2a099a4c9c8cb91b DIFF: https://github.com/llvm/llvm-project/commit/7abb5fc618cec66841a8280d2a099a4c9c8cb91b.diff LOG: [DWARF] Make sure file entry for artificial functions has an MD5 checksum The DIFile cache was keyed on a string pointer instead of string content, which was causing misses and resulted in an entry without a checksum. In DWARF v5 if any checksum is missing, we can't write any to the output file, so this had consequences. Fixes https://github.com/llvm/llvm-project/issues/63955 Differential revision: https://reviews.llvm.org/D155991 Added: Modified: clang/lib/CodeGen/CGDebugInfo.h clang/test/CodeGenCXX/debug-info-function-context.cpp Removed: diff --git a/clang/lib/CodeGen/CGDebugInfo.h b/clang/lib/CodeGen/CGDebugInfo.h index 58ee6dd64c4fc3..1fd08626358b93 100644 --- a/clang/lib/CodeGen/CGDebugInfo.h +++ b/clang/lib/CodeGen/CGDebugInfo.h @@ -148,7 +148,7 @@ class CGDebugInfo { llvm::BumpPtrAllocator DebugInfoNames; StringRef CWDName; - llvm::DenseMap DIFileCache; + llvm::StringMap DIFileCache; llvm::DenseMap SPCache; /// Cache declarations relevant to DW_TAG_imported_declarations (C++ /// using declarations and global alias variables) that aren't covered diff --git a/clang/test/CodeGenCXX/debug-info-function-context.cpp b/clang/test/CodeGenCXX/debug-info-function-context.cpp index 40a6643e71f924..8d3309f42748dc 100644 --- a/clang/test/CodeGenCXX/debug-info-function-context.cpp +++ b/clang/test/CodeGenCXX/debug-info-function-context.cpp @@ -1,4 +1,5 @@ -// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -triple x86_64-pc-linux-gnu %s -o - | FileCheck %s +// RUN: %clang_cc1 -emit-llvm -debug-info-kind=limited -triple x86_64-pc-linux-gnu %s \ +// RUN: -dwarf-version=5 -main-file-name %s -o - | FileCheck %s struct C { void member_function(); @@ -21,11 +22,17 @@ void global_namespace_function() { global_variable.member_function(); } int global_namespace_variable = 1; } +// Generate the artificial global functions to initialize a global. +int global_initialized_variable = C::static_member_function(); + // Check that the functions that belong to C have C as a context and the // functions that belong to the namespace have it as a context, and the global -// function has the file as a context. +// functions (user-defined and artificial) have the file as a context. -// CHECK: ![[FILE:[0-9]+]] = !DIFile(filename: "{{.*}}context.cpp", +// The first DIFile is for the CU, the second is what everything else uses. +// We're using DWARF v5 so both should have MD5 checksums. +// CHECK: !DIFile(filename: "{{.*}}context.cpp",{{.*}} checksumkind: CSK_MD5 +// CHECK: ![[FILE:[0-9]+]] = !DIFile(filename: "{{.*}}context.cpp",{{.*}} checksumkind: CSK_MD5 // CHECK: ![[C:[0-9]+]] = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "C", // CHECK: ![[NS:.*]] = !DINamespace(name: "ns" // CHECK: !DISubprogram(name: "member_function",{{.*}} scope: ![[C]],{{.*}} DISPFlagDefinition @@ -35,3 +42,6 @@ int global_namespace_variable = 1; // CHECK: !DISubprogram(name: "global_function",{{.*}} scope: ![[FILE]],{{.*}} DISPFlagDefinition // CHECK: !DISubprogram(name: "global_namespace_function",{{.*}} scope: ![[NS]],{{.*}} DISPFlagDefinition + +// CHECK: !DISubprogram(name: "__cxx_global_var_init",{{.*}} scope: ![[FILE]],{{.*}} DISPFlagDefinition +// CHECK: !DISubprogram(linkageName: "_GLOBAL__sub_I_{{.*}}",{{.*}} scope: ![[FILE]],{{.*}} DISPFlagDefinition ___ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits