[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-18 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. @thakis @hans What do you both think of the latest version? I would like to get this merged Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-15 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 452757. steplong added a comment. - Clang-format test The regex isn't optimal since it will still accept strings that aren't "Num Args: 1\n" or "Num Args: 2\n" such as "Num Args: \n2\n" Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-15 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/lib/Driver/ToolChains/Clang.cpp:6649 + } else if (IsCPP17Onwards) { +CmdArgs.push_back("-faligned-allocation"); } thakis wrote: > Do we want to do this in the driver? From what I understand, we already do

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-15 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 452655. steplong added a comment. - Update unit test to see if this regex works Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641 Files:

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-11 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 452062. steplong added a comment. - Change (1|2) to [12]. Test is failing because () isn't supported Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641 Files:

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-02 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 449303. steplong added a comment. - Add necessary includes to use EXPECT_THAT and MatchesRegex Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641 Files:

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-08-01 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 449140. steplong added a comment. Herald added a subscriber: steakhal. - Change unittest to match Num Args 1 or 2 I won't merge this. Just want to see if this passes the unittest Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D128649: [clang-cl] Handle some pragma alloc_text corner cases handled by MSVC

2022-06-29 Thread Stephen Long via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGf382545b2ba8: [clang-cl] Handle some pragma alloc_text corner cases handled by MSVC (authored by steplong). Repository: rG LLVM Github Monorepo

[PATCH] D128649: [clang-cl] Handle some pragma alloc_text corner cases handled by MSVC

2022-06-28 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 440618. steplong added a comment. - Rework logic for rejecting non-functions and non-extern C functions when C++ Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D128649/new/ https://reviews.llvm.org/D128649

[PATCH] D128649: [clang-cl] Handle some pragma alloc_text corner cases handled by MSVC

2022-06-27 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 440344. steplong added a comment. - Error for c also Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D128649/new/ https://reviews.llvm.org/D128649 Files: clang/include/clang/Basic/DiagnosticSemaKinds.td

[PATCH] D128649: [clang-cl] Handle some pragma alloc_text corner cases handled by MSVC

2022-06-27 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. > Isn't the question whether `f` is considered "extern C" in the end or not? I > thought `isExternC()` checks that? Are you saying it would return false for > `f` in your example? Yup, `isExternC()` is returning false for that case because there's "static". > I'm

[PATCH] D128649: [clang-cl] Accept a pragma alloc_text corner case accepted by MSVC

2022-06-27 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 440268. steplong added a comment. - Use `getCanonicalDecl()`. This does make us reject (MSVC rejects it already because of conflicting declarations): static void f(); extern "C" { static void f(); } static void f() {} - Error if not function decl

[PATCH] D128649: [clang-cl] Accept a pragma alloc_text corner case accepted by MSVC

2022-06-27 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. This does make us accept, but MSVC doesn't: static void f(); extern "C" { static void f(); } #pragma alloc_text(c, f); static void f() {} MSVC and GCC fail with an error for conflicting declaration. GCC: https://godbolt.org/z/Tavvx88E4 MSVC:

[PATCH] D128649: [clang-cl] Accept a pragma alloc_text corner case accepted by MSVC

2022-06-27 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a project: All. steplong requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. MSVC's pragma alloc_text accepts a function that was redeclared in a non extern-C context if the previous declaration was

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-24 Thread Stephen Long via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rG186bea3750d6: [MSVC] Add initial support for MSVC pragma optimize (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-24 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 439738. steplong added a comment. - Run pre-merge checks again after abandoning dependent patch D126984 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125723/new/

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-22 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 439097. steplong added a comment. - Fix up docs Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125723/new/ https://reviews.llvm.org/D125723 Files: clang/docs/LanguageExtensions.rst

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-22 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. Hi, I'll land this on Friday. Let me know if there are any comments. Also, I'm not sure how to rebase it on top of main. At the moment, it's still on top of D126984 (i.e. stack has one open) Repository: rG LLVM Github Monorepo

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-21 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. Hmm, a StaticAnalyzer unit test is failing. It looks it is expecting `"test.CXXDeallocator: NumArgs: 1\n"`, but getting `"test.CXXDeallocator: NumArgs: 2\n". I'm assuming it is because sized deallocation is enabled on default for MSVC now Repository: rG LLVM

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-21 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 438778. steplong added a comment. Whoops, this is a clang-tidy test, so `-target` won't work here. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641 Files:

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-06-21 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. I tried the following: FunctionDecl *FD = ND->getAsFunction(); DeclContext *DC = ND->getDeclContext(); DEBUG_WITH_TYPE("foo", llvm::dbgs() << "[FOO] DC->isExternCContext() : " << DC->isExternCContext() << "\n"); DEBUG_WITH_TYPE("foo",

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-06-21 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126559#3598950 , @hans wrote: >> Oh I see, that makes sense. We aren't accepting >> https://godbolt.org/z/9Yej9vhYd. Do you know of a way to get the `NamedDecl` >> with `extern "C"` instead of the second declaration? > >

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-21 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 438682. steplong added a comment. Herald added a project: clang-tools-extra. - Add `-target x86_64-unknown-linux` to `misc-new-delete-overloads.cpp` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-06-21 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126559#3598885 , @hans wrote: >> Ignoring the `pragma alloc_text`, it looks like GCC compiles the following >> `foo` with C linkage vs LLVM which compiles with C++ linkage (foo's name is >> mangled): > > The mangled name

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-20 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. It looks like misc-new-delete-overloads.cpp is failing on line 20: 1 // RUN: %check_clang_tidy %s misc-new-delete-overloads %t 2 3 typedef decltype(sizeof(int)) size_t; 4 5 struct S { 6 // CHECK-MESSAGES: :[[@LINE+1]]:9: warning: declaration of

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 438437. steplong added a comment. - Remove DEFAULT from test Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641 Files: clang/lib/Driver/ToolChains/Clang.cpp

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-06-20 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. Hmm, it looks like MSVC is accepting: extern "C" { static void foo(); } static int foo(); #pragma alloc_text("s", foo) static void foo() {} Ignoring the `pragma alloc_text`, it looks like GCC compiles the following `foo` with C linkage vs LLVM which

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-15 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 437280. steplong added a comment. - Fix docs Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125723/new/ https://reviews.llvm.org/D125723 Files: clang/docs/LanguageExtensions.rst

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-15 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/docs/LanguageExtensions.rst:3800 +``g``, ``t``, and ``y``. Clang's current implementation of the pragma behaves in +the same way as the clang pragma. All functions between ``off`` and ``on`` will +be decorated with the

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-15 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 437260. steplong added a comment. - Add documentation on difference btwn MSVC and Clang's implementation of pragma optimize Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125723/new/

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-15 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 437243. steplong added a comment. `https://docs.microsoft.com/en-us/cpp/build/reference/zc-sizeddealloc-enable-global-sized-dealloc-functions?view=msvc-170` says it implements this by default starting on MSVC 2015. I don't have an older version of MSVC, so

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-15 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/docs/ReleaseNotes.rst:304 + all functions following the pragma. At the moment, only an empty list is + supported. xbolva00 wrote: > xbolva00 wrote: > > So to sum up.. #pragma optimize("", off) disables all

[PATCH] D125723: [MSVC] Add initial support for MSVC pragma optimize

2022-06-15 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 437153. steplong added a comment. - Fix docs - Clean up code Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125723/new/ https://reviews.llvm.org/D125723 Files: clang/docs/ReleaseNotes.rst

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-14 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436985. steplong added a comment. - Change logic for /Zc:alignedNew and /Zc:sizedDealloc - Add tests for different /std:c++ Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/

[PATCH] D125723: [MSVC] Add support for MSVC pragma optimize

2022-06-14 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436954. steplong edited the summary of this revision. steplong added a comment. - Change logic to only handle empty optimization list - Fixup doc and tests Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D127641: [clang-cl][MSVC] Enable /Zc:alignedNew for C++17 and /Zc:sizedDealloc by default

2022-06-14 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/lib/Driver/ToolChains/Clang.cpp:6641 // by default. if (Arg *A = Args.getLastArg(options::OPT_faligned_allocation, options::OPT_fno_aligned_allocation, There's a check here

[PATCH] D127641: [clang-cl][MSVC] Add default /Zc conformance arguments

2022-06-14 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436860. steplong added a comment. Herald added a subscriber: MaskRay. - Only enable /Zc:alignedNew and /Zc:sizedDealloc Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/

[PATCH] D126984: [clang] Add support for optimize function attribute

2022-06-14 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. > I appreciate your patience while we figure out the right approach here; we > don't usually have this many false starts when working through a feature > review. :-) No worries, I appreciate the community doing the due diligence. Repository: rG LLVM Github

[PATCH] D126984: [clang] Add support for optimize function attribute

2022-06-14 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. I'm open to tabling this and just implementing support for an empty optimization list for the pragma (i.e. `#pragma optimize("", on | off)`). For our use case, at the moment, we only see the pragma being used this way. Repository: rG LLVM Github Monorepo CHANGES

[PATCH] D127641: [clang-cl][MSVC] Add default /Zc conformance arguments

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436592. steplong added a comment. - Ignore /Zc:wchar_t Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127641/new/ https://reviews.llvm.org/D127641 Files: clang/include/clang/Driver/Options.td

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436551. steplong added a comment. - Remove -Og, and all non-zero optimization levels - Fix up docs - Modified tests to reflect -Og and non-zero opt level change Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D127519: [clang-cl] Accept /FA[c][s][u], but ignore the arguments

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGd4245ed67ce4: [clang-cl] Accept /FA[c][s][u], but ignore the arguments (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE

[PATCH] D125719: [Attribute] Add attribute NeverOptimizeNone

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong abandoned this revision. steplong added a comment. Abandoning in favor of D126984 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125719/new/ https://reviews.llvm.org/D125719

[PATCH] D125720: [Attribute] Add clang frame_pointer attribute

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong abandoned this revision. steplong added a comment. Abandoning in favor of D126984 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125720/new/ https://reviews.llvm.org/D125720

[PATCH] D125722: [Attribute] Add clang optsize attribute

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong abandoned this revision. steplong added a comment. Abandoning in favor of D126984 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D125722/new/ https://reviews.llvm.org/D125722

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
This revision was landed with ongoing or failed builds. This revision was automatically updated to reflect the committed changes. Closed by commit rGee6ad7af45a0: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. >> and even for the MSVC pragma `#pragma optimize("t", on)`, what are we >> supporting if the user compiles their code with `-O0`? because right now we >> won't optimize anything with `-O0` > > @steplong -- what are your thoughts on this? Hmm, I think I'm ok with

[PATCH] D125723: [MSVC] Add support for MSVC pragma optimize

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/include/clang/Sema/Sema.h:768 + /// (i.e. `ModifyFnAttributeMSPragmaOptimze()` does nothing) + bool MSPragmaOptimizeIsOn = true; + This might be confusing. `ModifyFnAttributeMSPragmaOptimize()` adds optnone to

[PATCH] D125723: [MSVC] Add support for MSVC pragma optimize

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436476. steplong added a comment. - Parse the string in the pragma - Some of the tests should fail. I'll fix them up once D126984 looks good Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436443. steplong added a comment. - Add llvm::Attribute::MinSize when OptimizeAttr::Oz - Add test for checking minsize Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126984/new/

[PATCH] D127519: [clang-cl] Accept /FA[c][s][u], but ignore the arguments

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436436. steplong added a comment. - Removed SLASH_FA_joined and made SLASH_FA a CLJoined - Add some /FAcsu tests. Just copies of /FA tests, but passing /FAcsu Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 436394. steplong added a comment. - Rebase patch Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127452/new/ https://reviews.llvm.org/D127452 Files: clang/include/clang/Driver/Options.td

[PATCH] D127641: [clang-cl][MSVC] Add default /Zc conformance arguments

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong added reviewers: rnk, hans, thakis. steplong added a comment. I'm not sure how to check for `/std:` at this stage to turn on arguments like `/Zc:alignedNew` Comment at: clang/test/Driver/cl-zc.cpp:98 // thread safe statics are off for versions < 19. // RUN:

[PATCH] D127641: [clang-cl][MSVC] Add default /Zc conformance arguments

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a project: All. steplong requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. This patch doesn't turn on all the "on by default" /Zc arguments, but this should be a good enough starting point.

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-13 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. Hmm do you know how I can restart the pre-merge checks? It looks like the x64 debian openmp tests failed. I don't think this patch is related, but I want to make sure Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/test/CodeGen/attr-optimize.c:4 + +__attribute__((optimize("O0"))) void f1(void) {} +// O2: @f1{{.*}}[[ATTR_OPTNONE:#[0-9]+]] xbolva00 wrote: > No support for > ``` > __attribute__ ((__optimize__ (0))) > ``` > >

[PATCH] D127519: [clang-cl] Accept /FA[c][s][u], but ignore the arguments

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong added reviewers: rnk, hans. steplong added a comment. I'm not sure which test file to modify and how to test this. I do see it generating the `.asm` file now when I pass `/FAsc`, not the `.codd` file though since we are ignoring the `c` argument. Repository: rG LLVM Github Monorepo

[PATCH] D127519: [clang-cl] Accept /FA[c][s][u], but ignore the arguments

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a project: All. steplong requested review of this revision. Herald added subscribers: cfe-commits, MaskRay. Herald added a project: clang. Previously, /FAsc would emit a warning. Now, it will just do what /FA does.

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126984#3574077 , @aeubanks wrote: > In D126984#3574046 , @aaron.ballman > wrote: > >> In D126984#3571573 , @aeubanks >> wrote: >> >>> IIRC

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126984#3571573 , @aeubanks wrote: > IIRC in the past there was a strong preference to not have the pass manager > support this sort of thing > if you want to support this, there should be an RFC for how the optimization >

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 435910. steplong added a comment. - Change helptext for /external:W0 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127452/new/ https://reviews.llvm.org/D127452 Files: clang/include/clang/Driver/Options.td

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 435901. steplong added a comment. - Move tests to cl-options.c - Map /external:W0 to -Wno-system-headers Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D127452/new/ https://reviews.llvm.org/D127452 Files:

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-10 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/test/Driver/cl-zc.cpp:106 // DllExportInlines-NOT: "-fno-dllexport-inlines" +// RUN: %clang_cl /external:W1 /c -### -- %s 2>&1 | FileCheck -check-prefix=EXTERNAL_Wn %s hans wrote: > This is not the right test

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-09 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. I don't think /external:Wn behaves exactly like -Wsystem-headers. /external:Wn applies /Wn to the system headers, while -Wsystem-headers applies whatever is on the command line to the system headers. I think /external:Wn behaves more like: // foo.c #pragma clang

[PATCH] D127452: [clang-cl][MSVC] Map /external:Wn n=1-4 to -Wsystem-headers

2022-06-09 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a project: All. steplong requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D127452 Files: clang/include/clang/Driver/Options.td

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-09 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 435680. steplong added a comment. - Added release notes on attribute Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126984/new/ https://reviews.llvm.org/D126984 Files: clang/docs/ReleaseNotes.rst

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-08 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126984#3567822 , @aaron.ballman wrote: > Two final (I hope) nits! One is in the code, the other is that this should > have a release note for the new attribute. Assuming precommit CI pipeline > passes, then I think this

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-08 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 435313. steplong added a comment. - Add Arg when creating Attr Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126984/new/ https://reviews.llvm.org/D126984 Files: clang/include/clang/Basic/Attr.td

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-08 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 435264. steplong added a comment. Herald added a subscriber: jdoerfert. - Fix up docs and comments - Fix failing pragma-attribute-supported-attributes-list.test - Remove debug print - Change to StringMap Repository: rG LLVM Github Monorepo CHANGES SINCE

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-07 Thread Stephen Long via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGe3a6784ac967: [clang-cl] Add support for /kernel (authored by pzheng, committed by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126719/new/

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-06 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/lib/Sema/SemaDeclAttr.cpp:4841-4850 + StringRef Level; + // Check if argument is prefixed with "-O" or "O" + if (Arg.str().rfind("-O", 0) == 0) +Level = Arg.substr(2); + else if (Arg.str().rfind("O", 0) == 0) +Level =

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-06 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 434639. steplong added a comment. - Added docs for attribute - Changed attribute to use Enum - Optsize includes -Og, -Oz, and -Ofast - Change to warning instead of error Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-06 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 434459. steplong added a comment. - Clang-formatted patch Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126719/new/ https://reviews.llvm.org/D126719 Files: clang/include/clang/Basic/LangOptions.def

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-03 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 434122. steplong added a comment. - Whoops missed a "/" in the test Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126719/new/ https://reviews.llvm.org/D126719 Files:

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-03 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 434107. steplong added a comment. - Change to SupportedArches.insert() - Add logic that errors if /kernel and /GR - Add test for /kernel and /EHsc (silently override /EHsc. Only errors when trying to use exceptions in src code) and /kernel and /GR (fails

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-03 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/lib/CodeGen/CGCall.cpp:2169 +HasOptnone = TargetDecl->hasAttr() || + (TargetDecl->hasAttr() && + TargetDecl->getAttr()->getLevel() == "0"); I don't think this is the most

[PATCH] D126984: [clang] Add initial support for gcc's optimize function attribute

2022-06-03 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a reviewer: aaron.ballman. Herald added a project: All. steplong requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. At the moment, it only supports a string argument that refers to the optimization

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-01 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 433502. steplong added a comment. - Change UnsupportedArches to SupportedArches Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126719/new/ https://reviews.llvm.org/D126719 Files:

[PATCH] D125723: [MSVC] Add support for MSVC pragma optimize

2022-06-01 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. Appreciate the help! It's not clear to me how to go from the strings "Os", "foo1", "foo2", "foo3" to adding "-Os -ffoo1 -ffoo2 -ffoo3" to the compilation line for that function Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-01 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126719#3548469 , @thakis wrote: > It also says `/kernel` is passed on to the linker. Do you know how the linker distinguishes objects created by /kernel vs non-/kernel? At the moment, we are just using MSVC's linker to

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-06-01 Thread Stephen Long via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGa5b056fe49a9: [MSVC] Fix pragma alloc_text failing for C files (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126559/new/

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-06-01 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 433389. steplong added a comment. Herald added a subscriber: ormris. - Reject /kernel and /arch combinations for x64 and x86 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126719/new/

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-05-31 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126719#3548469 , @thakis wrote: > What does cl do if both `/kernel` and (eg) `/EHsc` is passed (try both > orders)? Same question for `/kernel /GR`. From my experiments, cl doesn't complain and happily compiles the code if

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-05-31 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 433194. steplong added a comment. - Handle static C/C++ functions and C functions in general Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126559/new/ https://reviews.llvm.org/D126559 Files:

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-05-31 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 433185. steplong added a comment. - Test that exceptions aren't enabled with /kernel Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126719/new/ https://reviews.llvm.org/D126719 Files:

[PATCH] D126719: [clang-cl] Add support for /kernel

2022-05-31 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a project: All. steplong requested review of this revision. Herald added subscribers: cfe-commits, MaskRay. Herald added a project: clang. MSVC defines _KERNEL_MODE when /kernel is passed. Also, /kernel disables RTTI and C++ exception handling.

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-05-31 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. It looks like MSVC also accepts // foo.c static void foo(); #pragma alloc_text("hello", foo) void foo() {} and // foo.cpp extern "C" { static void foo(); #pragma alloc_text("hello", foo) void foo() {} } Do you know of a way I can check whether a

[PATCH] D125723: [MSVC] Add support for MSVC pragma optimize

2022-05-31 Thread Stephen Long via Phabricator via cfe-commits
steplong added inline comments. Comment at: clang/lib/Sema/SemaAttr.cpp:1207-1213 + FD->addAttr(FramePointerAttr::CreateImplicit(Context, Kind)); +} + +void Sema::AddOptsize(FunctionDecl *FD, SourceLocation Loc) { + FD->dropAttr(); + OptimizeSizeAttr::Kind Kind =

[PATCH] D126559: [MSVC] Fix pragma alloc_text failing for C files

2022-05-27 Thread Stephen Long via Phabricator via cfe-commits
steplong created this revision. Herald added a project: All. steplong requested review of this revision. Herald added a project: clang. Herald added a subscriber: cfe-commits. `isExternCContext()` is returning false for functions in C files Change-Id: I51cccb476aa19dc0a0a78e951d7f482befdb78ca

[PATCH] D126024: [MSVC, ARM64] Add __readx18 intrinsics

2022-05-23 Thread Stephen Long via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG4f1e64b54f59: [MSVC, ARM64] Add __readx18 intrinsics (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126024/new/

[PATCH] D126024: [MSVC, ARM64] Add __readx18 intrinsics

2022-05-23 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 431392. steplong added a comment. - Rebased patch on top of main Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126024/new/ https://reviews.llvm.org/D126024 Files:

[PATCH] D126023: [MSVC, ARM64] Add __writex18 intrinsics

2022-05-23 Thread Stephen Long via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rG3e0be5610ff0: [MSVC, ARM64] Add __writex18 intrinsics (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126023/new/

[PATCH] D126024: [MSVC, ARM64] Add __readx18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 431021. steplong added a comment. - Use `CharUnits::One()` instead of `getTypeAlignInChars()` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126024/new/ https://reviews.llvm.org/D126024 Files:

[PATCH] D126023: [MSVC, ARM64] Add __writex18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 431019. steplong added a comment. - Switch to `CharUnits::One()` instead of `getContext().getTypeInChars()` Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126023/new/ https://reviews.llvm.org/D126023 Files:

[PATCH] D126023: [MSVC, ARM64] Add __writex18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 431013. steplong added a comment. - Changed addrspace(256) to the default addrspace 0 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126023/new/ https://reviews.llvm.org/D126023 Files:

[PATCH] D126024: [MSVC, ARM64] Add __readx18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 431011. steplong added a comment. - Change addrspace(256) to the default addrspace 0 Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D126024/new/ https://reviews.llvm.org/D126024 Files:

[PATCH] D126023: [MSVC, ARM64] Add __writex18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong added a comment. In D126023#3528077 , @rnk wrote: > I was unable to find any documentation for the meaning of AArch64 > addrspace(256), and I wasn't able to figure it out after studying the code in > llvm/lib/Target/AArch64 for ten minutes or

[PATCH] D126024: [MSVC, ARM64] Add __readx18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 430994. steplong added a comment. The assembly for LLVM is now: __readx18byte: ldrbw0, [x18, w0, uxtw] __readx18word: ldrhw0, [x18, w0, uxtw] __readx18dword: ldr w0, [x18, w0, uxtw] __readx18qword: ldr

[PATCH] D126023: [MSVC, ARM64] Add __writex18 intrinsics

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
steplong updated this revision to Diff 430979. steplong added a comment. The assembly for LLVM now looks like: __writex18byte: strbw1, [x18, w0, uxtw] ret __writex18word: strhw1, [x18, w0, uxtw]

[PATCH] D124701: [clang] Honor __attribute__((no_builtin("foo"))) on functions

2022-05-20 Thread Stephen Long via Phabricator via cfe-commits
This revision was automatically updated to reflect the committed changes. Closed by commit rGae80024fbe51: [clang] Honor __attribute__((no_builtin(foo))) on functions (authored by steplong). Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D124701/new/

  1   2   >