Page MenuHomePhabricator

joerg (Joerg Sonnenberger)
User

Projects

User does not belong to any projects.

User Details

User Since
Nov 23 2012, 10:16 AM (447 w, 3 d)

Recent Activity

Today

joerg added a comment to D100118: [clang] Add support for new builtin __arithmetic_fence to control floating point optimization, and new clang option fprotect-parens.

Thanks, that's better. The clang front-end option is not directly relevant for the semantic of the intrinsic, so it would be better to explicitly specify it was not being fuseable unless the operand degenerates into a single operand. Otherwise the specification sounds reasonable.

Mon, Jun 21, 5:04 AM · Restricted Project, Restricted Project

Sun, Jun 13

joerg added a comment to D88460: Strlen loop idiom recognition.

Please make sure at the very least that it doesn't get matched if a function named strlen and also test for that.

Sun, Jun 13, 5:18 PM · Restricted Project

Tue, Jun 8

joerg added a comment to D103906: Do not generate calls to the 128-bit function __multi3() on 32-bit ARM..

We inherited the lack of int128_t support on 32bit platforms from GCC. IMO we should fix that, the only tricky one is division.

Tue, Jun 8, 12:56 PM · Restricted Project

Fri, Jun 4

joerg added inline comments to D100118: [clang] Add support for new builtin __arithmetic_fence to control floating point optimization, and new clang option fprotect-parens.
Fri, Jun 4, 4:44 PM · Restricted Project, Restricted Project

Wed, May 26

joerg added inline comments to D103184: Reland "[AArch64] handle -Wa,-march=".
Wed, May 26, 6:23 PM · Restricted Project

Sun, May 23

joerg committed rGcb1511645170: [libc++] use more early returns for consistency (authored by joerg).
[libc++] use more early returns for consistency
Sun, May 23, 2:11 PM
joerg closed D96983: [libc++] use more early returns for consistency.
Sun, May 23, 2:11 PM · Restricted Project
joerg committed rG30c413cda010: [SPARC] recognize the "rd %pc, reg" special form (authored by joerg).
[SPARC] recognize the "rd %pc, reg" special form
Sun, May 23, 1:55 PM
joerg closed D96312: [SPARC] recognize the "rd %pc, reg" special form.
Sun, May 23, 1:55 PM · Restricted Project

May 20 2021

joerg committed rG80836ee519eb: [SPARCv9] allow stw as alias for st (authored by joerg).
[SPARCv9] allow stw as alias for st
May 20 2021, 6:30 AM
joerg closed D96313: [SPARCv9] allow stw as alias for st.
May 20 2021, 6:29 AM · Restricted Project

May 12 2021

joerg added a comment to D102367: [LowerConstantIntrinsics] reuse isManifestLogic from ConstantFolding.

One of the mots important use cases of __builtin_constant_p is ensuring that inline assembler variants that require immediate arguments are DCE'ed. There are some other use cases where it is used for compile-time assertions of invariants, so we do want to be as correct as possible. All that said, I fully agree that is.constant(undef) should fold to false as it is consistent with the immarg parameter attribute and other places. Even stronger, I would argue that it applies even to is.constant(freeze undef).

May 12 2021, 7:59 PM · Restricted Project

Apr 23 2021

joerg added a comment to D101122: introduce flag -fsanitize-address-detect-stack-use-after-return-mode. No functional change..

There are two approaches that work for reviewing: starting from clang and going down or starting from compiler-rt and going up the layers. I'd prefer to do the latter as it means meaningful testing can be done easier. There are two natural steps here: clang flag+IR generation is one, llvm codegen and compiler-rt is the other. The clang step should include tests that ensure that proper IR is generated for the different flag combination (including documentation for the IR changes). The LLVM step should ensure that the different attributes (either function or module scope) are correctly lowered in the instrumentation pass and unit tests on the compiler-rt side to do functional testing. The unit testing might also be done as a third step if it goes the full way from C to binary code.

Apr 23 2021, 5:53 AM · Restricted Project, Restricted Project

Apr 22 2021

joerg added a comment to D101122: introduce flag -fsanitize-address-detect-stack-use-after-return-mode. No functional change..

This review doesn't make sense to me. Why add a flag that isn't affecting anything? Why add a flag that isn't even tested?

Apr 22 2021, 5:55 PM · Restricted Project, Restricted Project

Apr 21 2021

joerg added a comment to D93031: Enable fexec-charset option .

"Keeping the original spelling around" would assume that the input is not using a stateful encoding. That seems worse as assumption than giving the canonical output in UTF-8 and shifting the problem to the user's editor?

Apr 21 2021, 6:29 PM · Restricted Project, Restricted Project

Apr 7 2021

joerg added a comment to D100054: Handle flags such as -m32 when computing the prefix for programs/runtime libs.

This sounds wrong. If you are using 'x86_64-freebsd' as triple and -m32, it should still call 'x86_64-freebsd-ld', but it is the responsibility of the driver to ensure that also the right set of linker flags are passed as well. Compare netbsd::Linker::ConstructJob for one way to handle this.

Apr 7 2021, 2:12 PM · Restricted Project

Mar 31 2021

joerg committed rG9f4022ffeb20: [libc++] Avoid <climits> dependency in <thread> (authored by joerg).
[libc++] Avoid <climits> dependency in <thread>
Mar 31 2021, 6:29 AM
joerg closed D99516: [libc++] Avoid <climits> dependency in <thread>.
Mar 31 2021, 6:29 AM · Restricted Project

Mar 30 2021

joerg added a comment to D99516: [libc++] Avoid <climits> dependency in <thread>.

Yeah, I hit a compilation error somewhere depending on the include error. I forgot the details, this has been sitting around in my tree for while.

Mar 30 2021, 12:58 PM · Restricted Project

Mar 29 2021

joerg added inline comments to D99516: [libc++] Avoid <climits> dependency in <thread>.
Mar 29 2021, 11:10 AM · Restricted Project
joerg requested review of D99516: [libc++] Avoid <climits> dependency in <thread>.
Mar 29 2021, 9:44 AM · Restricted Project

Mar 28 2021

joerg added a comment to D98574: [Sparc] Define the same macros for -mcpu=v9 as GCC on Linux and the BSDs.

The NetBSD part looks ok, but also lacks proper testing. I'm not sure anyone but Linux cares at all otherwise as they lack 32bit SPARC support.

Mar 28 2021, 12:59 PM · Restricted Project

Mar 10 2021

joerg added inline comments to D98097: [libc++] "Merged wording" for D98077 and D96986.
Mar 10 2021, 1:46 PM · Restricted Project

Mar 8 2021

joerg abandoned D96986: [libc++] Drop template layer when using vsnprintf.
Mar 8 2021, 11:38 AM · Restricted Project

Mar 5 2021

joerg added a comment to D98097: [libc++] "Merged wording" for D98077 and D96986.

That covers my case. I'm not completely happy with the need to rethrow, but the alternatives are much worse. It's a bit sad that we can't optimize it away, too.

Mar 5 2021, 7:00 PM · Restricted Project
joerg added inline comments to D96986: [libc++] Drop template layer when using vsnprintf.
Mar 5 2021, 4:05 PM · Restricted Project

Feb 18 2021

joerg requested review of D96986: [libc++] Drop template layer when using vsnprintf.
Feb 18 2021, 12:14 PM · Restricted Project
joerg requested review of D96983: [libc++] use more early returns for consistency.
Feb 18 2021, 11:58 AM · Restricted Project
joerg committed rGa77e91801604: libcxx: use early returns (authored by joerg).
libcxx: use early returns
Feb 18 2021, 10:44 AM
joerg closed D96955: libcxx: use early returns.
Feb 18 2021, 10:43 AM · Restricted Project
joerg added inline comments to D96955: libcxx: use early returns.
Feb 18 2021, 6:56 AM · Restricted Project
joerg abandoned D96895: libcxx: use early returns.

Resummited

Feb 18 2021, 6:34 AM
joerg requested review of D96955: libcxx: use early returns.
Feb 18 2021, 6:34 AM · Restricted Project
joerg abandoned D80679: Avoid hidden <climits> dependency in <thread>.
Feb 18 2021, 6:21 AM

Feb 17 2021

joerg added a comment to D96901: [libunwind] Add support for PC reg column in arm64.

Registers_arm64::jumpto in UnwindRegistersRestore.S.

Feb 17 2021, 6:35 PM · Restricted Project, Restricted Project
joerg added a comment to D96901: [libunwind] Add support for PC reg column in arm64.

Let me rephrase then. The restore code explicitly ends in "ret x30". It cannot set "pc" separate from "x30" in the current form. I'm not saying that the DWARF register shouldn't be supported, but this change doesn't do that.

Feb 17 2021, 6:13 PM · Restricted Project, Restricted Project
joerg added a comment to D96901: [libunwind] Add support for PC reg column in arm64.

I don't get this change. The restore code is literally returning by jumping to x30, so how is splitting PC and LR supposed to work?

Feb 17 2021, 5:53 PM · Restricted Project, Restricted Project
joerg committed rG2628e9146120: [NetBSD] Use cortex-a8 as default CPU for ARMv7 (authored by joerg).
[NetBSD] Use cortex-a8 as default CPU for ARMv7
Feb 17 2021, 5:03 PM
joerg updated subscribers of D96895: libcxx: use early returns.
Feb 17 2021, 1:18 PM
joerg requested review of D96895: libcxx: use early returns.
Feb 17 2021, 1:18 PM

Feb 8 2021

joerg requested review of D96313: [SPARCv9] allow stw as alias for st.
Feb 8 2021, 7:43 PM · Restricted Project
joerg requested review of D96312: [SPARC] recognize the "rd %pc, reg" special form.
Feb 8 2021, 7:42 PM · Restricted Project
joerg updated the diff for D96311: [SPARC] Recognize the prefetch instruction.
Feb 8 2021, 7:41 PM · Restricted Project
joerg requested review of D96311: [SPARC] Recognize the prefetch instruction.
Feb 8 2021, 7:39 PM · Restricted Project
joerg accepted D47458: [Sparc] Support relocatable expressions in the assembler.

The test case needs to be resorted, so that the DOTEXPR test comes last, but otherwise this change works for me.

Feb 8 2021, 4:04 PM · Restricted Project
joerg accepted D77737: [SPARC] Recognize and handle the %lm(sym) operator.

I have one concern about sparc-relocations.s, but that is not specific to the change at hand. IMO we should also have a variant of all the relocations with a fixed values of sym to test that the right bits are actually set. That would also make comparing the fixup handling easier e.g. to GNU as.

Feb 8 2021, 7:38 AM · Restricted Project

Feb 5 2021

joerg committed rG917976471068: SPARCv9: recognize SIR trap instruction (authored by joerg).
SPARCv9: recognize SIR trap instruction
Feb 5 2021, 5:04 PM
joerg added a comment to D96070: [clang] [driver] Enable static linking to libc++.

I can't speak for other systems, but forcing libpthread to be linked is in general not desirable as it creates a non-trivial runtime cost, especially when <thread> is not used. That's still a pretty common use case of C++.

Feb 5 2021, 1:49 AM · Restricted Project

Feb 4 2021

joerg added a comment to D96070: [clang] [driver] Enable static linking to libc++.

The NetBSD part is most definitely not acceptable.

Feb 4 2021, 1:52 PM · Restricted Project

Jan 30 2021

joerg added a comment to D94355: [Passes] Add relative lookup table converter pass.

First of all, I find this patch to be nearly impossible to read. It seems to mix a lot of refactoring with a functional change, making it very hard to focus on the core.

Jan 30 2021, 5:32 AM · Restricted Project, Restricted Project

Jan 15 2021

joerg added a comment to D94355: [Passes] Add relative lookup table converter pass.

It might be specific to the jump table case, but it should be instructional on how to do it. One important point is that it avoids inter-section relocations, which are a problem at least on MIPS.

Jan 15 2021, 6:06 AM · Restricted Project, Restricted Project
joerg added a comment to D94355: [Passes] Add relative lookup table converter pass.

Some targets already do this. Please check that you don't create regressions, especially on PowerPC.

Jan 15 2021, 5:25 AM · Restricted Project, Restricted Project

Nov 30 2020

joerg added a comment to D92307: [analyzer][StdLibraryFunctionsChecker] Fix typos in summaries of mmap and mmap64.

off_t is s signed type. Please fix the description.

Nov 30 2020, 5:17 AM · Restricted Project

Nov 23 2020

joerg added a comment to D91968: llvm/ADT/StringExtras.h hexDigitValue - Init of integer buffer.

Do we really want to change the code here? It is perfectly well defined behavior.

Nov 23 2020, 11:52 AM · Restricted Project

Nov 19 2020

joerg added a comment to D91760: [Driver] Default Generic_GCC aarch64 to use -fasynchronous-unwind-tables.

The difference is whether we promise to be instruction precise or not. I'm not sure we do or want to promise that as default.

Nov 19 2020, 2:55 PM · Restricted Project
joerg added a comment to D91760: [Driver] Default Generic_GCC aarch64 to use -fasynchronous-unwind-tables.

I have no problem with the change, but please adjust the description to take about -funwind-tables. I don't think we do async by default, at least not by design.

Nov 19 2020, 1:58 PM · Restricted Project

Oct 29 2020

joerg added a comment to D90231: [GVN] Don't replace argument to @llvm.is.constant.*().

"It compiles with GCC" is not really helpful as argument because the observed behavior depends on a lot of internals. It is quite frankly impossible to be 100% identical to GCC's behavior. What LLVM guarantees is:
(1) Folding to false happens as late as reasonable possible. It happens most importantly after the first round of function and loop optimizations.
(2) Folding to true happens as part of constant folding etc as early as the condition is evaluated.
(3) The result is propagated to derived expression and those are folded recursively, including dead code elimination. This happens even for -O0.

Oct 29 2020, 4:45 AM · Restricted Project

Oct 28 2020

joerg added a comment to D90231: [GVN] Don't replace argument to @llvm.is.constant.*().

I completely agree with Roman that this patch is very undesirable since it has a high chance of breaking other reasonable uses of the intrinsic. In fact, I would say that the observed behavior here is perfectly reasonable under the definition of @lllvm.is.constant. The original code for LLVM at least should be just __builtin_constant_p(b) && b > -129 && b < 128).

Oct 28 2020, 5:39 AM · Restricted Project

Oct 27 2020

joerg added a comment to D90201: Try reading a smaller chunk when (p)read fails.

You can do an anon-mapping with size+pagesize in that case and map over it with MAP_FIXED.

Oct 27 2020, 11:51 AM · Restricted Project

Oct 15 2020

joerg added a comment to D88712: [CGBuiltin] Respect asm labels and redefine_extname for builtins with specialized emitting.

Disabling builtin handling when asm is enabled would be a major annoyance for NetBSD. The interaction between symbol renaming and TLI is complicated. There are cases where it would make perfect sense and others were it would be harmful. Example of the latter is the way SSP is implemented by inline functions that call a prototype renamed back to the original symbol name.

Oct 15 2020, 1:28 PM · Restricted Project

Sep 16 2020

joerg accepted D87615: [X86] Fix stack alignment on 32-bit Solaris/x86.

I'm still curious about the source of the vptr diff, but that's a minor question, otherwise. LGTM

Sep 16 2020, 3:08 PM · Restricted Project, Restricted Project, Restricted Project

Sep 14 2020

joerg requested changes to D87615: [X86] Fix stack alignment on 32-bit Solaris/x86.

I don't think this is the right place for this at all. Look at X86Subtarget::initSubtargetFeatures please.

Sep 14 2020, 11:29 AM · Restricted Project, Restricted Project, Restricted Project

Aug 25 2020

joerg added inline comments to D86406: Speedup llvm-dwarfdump 3.9x.
Aug 25 2020, 10:18 AM · Restricted Project
joerg added a comment to D86406: Speedup llvm-dwarfdump 3.9x.

Can you change raw_fd_ostream::has_colors to memoize the result of FileDescriptorHasColors(FD) instead? That should give most of the performance gain without breaking the abstractions as much.

Aug 25 2020, 4:59 AM · Restricted Project

Aug 10 2020

joerg added a comment to D85691: lld: link libatomic if needed for Timer.

This issue is on my long term TODO list. If there are no 64bit atomics, it is a really stupid idea to use them for timekeeping. I think for the use case of Timer, just splitting it into second and subsecond with explicit overflow handling is perfectly reasonable and does not affect the correctness of the normal use as the aggregates are only accessed on completion?

Aug 10 2020, 4:40 PM · Restricted Project

Jun 13 2020

joerg added a comment to D77737: [SPARC] Recognize and handle the %lm(sym) operator.

Please don't change the style of the code, it messes up review and the full source. Please split the introduction and testing of the new relocation into one patch and using a different set of relocations to implement large code model. The latter part needs at least a test as well?

Jun 13 2020, 11:46 AM · Restricted Project

Jun 3 2020

joerg added a comment to D80300: [Driver] Add DEFAULT_DYLD_PREFIX and DEFAULT_RPATH to complement DEFAULT_SYSROOT.

I don't agree with the justification at all, but it also seems that noone else cares about the build option creep here.

Jun 3 2020, 6:33 AM · Restricted Project

May 27 2020

joerg created D80679: Avoid hidden <climits> dependency in <thread>.
May 27 2020, 5:29 PM

May 21 2020

joerg added a comment to D80300: [Driver] Add DEFAULT_DYLD_PREFIX and DEFAULT_RPATH to complement DEFAULT_SYSROOT.

I see that more as a short-coming in the existing DEFAULT_SYSROOT behavior and less an argument for making more cases like it. So the general idea is that for turnkey toolchains,
we want to allow customizing the "default" target of the toolchain to hard-code options like --sysroot, --target, -Wl,-rpath etc. Those are all related, so when using a different target, they no longer make sense. One way to deal with all those options in a consistent manner is hook into the logic for determining the current target, if none is explicitly specified on the command line or implicit from the executable name, then prepend some additional flags on the command line based on some cmake variable or so. This flags shouldn't trigger the unused argument warnings, so you can always pass -Wl,-rpath, --sysroot etc, independent of whether the compiler is in preprocessing / compile / assemble / link mode. That seems to be a more general and systematic approach than adding many additional build-time options.

May 21 2020, 12:26 PM · Restricted Project
joerg added a comment to D80300: [Driver] Add DEFAULT_DYLD_PREFIX and DEFAULT_RPATH to complement DEFAULT_SYSROOT.

I do agree with the feature request, but I'm not sure about the implementation. It doesn't seem to work well with the cross-compiling support in the driver as clearly shown by the amount of tests that need patching. Is cross-compiling a concern for you at all? Otherwise I would suggest going a slightly different route and use default values iff no "-target" or "target-command" mechanism is active. Might need a way to temporarily disable unused flag warnings, but that way would be pretty much toolchain independent?

May 21 2020, 9:08 AM · Restricted Project

May 13 2020

joerg accepted D79915: [SVE] Restore broken LLVM-C ABI compatability.

LGTM

May 13 2020, 6:02 PM · Restricted Project

May 3 2020

joerg added a comment to D79309: [llvm-objdump] -d: delete spaces among raw instruction bytes.

ARM's data detection only works for unstripped binaries. Other architectures often don't even have such markers at all.

May 3 2020, 4:59 PM · Restricted Project
joerg added a comment to D79309: [llvm-objdump] -d: delete spaces among raw instruction bytes.

The more compact output is a lot harder to read when you have to find embedded data. I wouldn't mind dropping half the spaces to have columns of 4 hex digits, but anything more is really hard to read.

May 3 2020, 4:27 PM · Restricted Project
joerg added a comment to D79309: [llvm-objdump] -d: delete spaces among raw instruction bytes.

I'm not sure about this change. It might make sense on x86, but many RISC architectures love to put data into the instruction stream and being able to pick them out is quite important for understanding the disassembly.

May 3 2020, 3:24 PM · Restricted Project

Apr 15 2020

joerg accepted D78205: [builtins] Fix unprototypes function declaration.

LGTM

Apr 15 2020, 7:37 AM · Restricted Project

Apr 14 2020

joerg committed rG9d2d6e71f096: Emit Objective-C constructors as writable (authored by joerg).
Emit Objective-C constructors as writable
Apr 14 2020, 2:06 PM

Apr 8 2020

joerg added a comment to D77697: libc++: adjust modulemap for non-modular C.

@ldionne I was updating libc++ from d42baff45d9700a199982ba0ac04dbc6c6d911bb and LLVM itself from 38aebe5c04ab4cb3695dc1bcc60b9a7b55215aff to 3d1424bc7a0e9a6f9887727e2bc93a10f50e1709 when it started failing. It likely has been present for a while.

Apr 8 2020, 2:41 PM · Restricted Project
joerg added a comment to D77697: libc++: adjust modulemap for non-modular C.

This fixes the module build of clang for me.

Apr 8 2020, 3:12 AM · Restricted Project

Apr 5 2020

joerg added a comment to rL254199: Revert Sparc and SparcV9 to external assembler. Now that the CPU.

If no (inline) assembler is involved, you can likely get away with IAS. Just to give two trivial examples that are not handled by IAS right now:

Apr 5 2020, 10:40 AM

Apr 3 2020

joerg committed rG98f77828a98f: Avoid using std::max_align_t in pre-C++11 mode (authored by joerg).
Avoid using std::max_align_t in pre-C++11 mode
Apr 3 2020, 4:49 PM
joerg closed D73245: Avoid using std::max_align_t in pre-C++11 mode.
Apr 3 2020, 4:49 PM · Restricted Project
joerg added a comment to D73245: Avoid using std::max_align_t in pre-C++11 mode.

Louis, did I answer your questions?

Apr 3 2020, 8:35 AM · Restricted Project

Mar 28 2020

joerg added a comment to D76151: [MC][X86] Allow SHT_PROGBITS for .eh_frame on x86-64.

We tend to test push .section and .pushsection in this file, so it would be nice to continue doing that.

Mar 28 2020, 5:44 PM · Restricted Project
joerg accepted D76151: [MC][X86] Allow SHT_PROGBITS for .eh_frame on x86-64.

Can you add a variation with .pushsection for @progbits and @nobits? Otherwise LGTM.

Mar 28 2020, 4:08 PM · Restricted Project
joerg committed rG09d402185394: Fix compatibility for __builtin_stdarg_start (authored by joerg).
Fix compatibility for __builtin_stdarg_start
Mar 28 2020, 3:36 PM
joerg retitled D73245: Avoid using std::max_align_t in pre-C++11 mode from Depend stddef.h to provide max_align_t for C++11 and provide better fallback in <new> to Avoid using std::max_align_t in pre-C++11 mode.
Mar 28 2020, 3:36 PM · Restricted Project
joerg added a comment to D73245: Avoid using std::max_align_t in pre-C++11 mode.

Ping?

Mar 28 2020, 3:04 PM · Restricted Project

Mar 24 2020

joerg accepted D76721: Clarify use of llvm_unreachable in the coding standard.

This summarizes the IRC discussion.

Mar 24 2020, 1:28 PM

Mar 21 2020

joerg added inline comments to D73245: Avoid using std::max_align_t in pre-C++11 mode.
Mar 21 2020, 2:57 PM · Restricted Project

Mar 20 2020

joerg added inline comments to D73245: Avoid using std::max_align_t in pre-C++11 mode.
Mar 20 2020, 1:34 PM · Restricted Project
joerg added a comment to D75799: [Intrinsic] Give "is.constant" the "convergent" attribute.

The original code has a functional dependency between sz and bytes and whether they can be constant evaluated. But the code doesn't express that. I don't think we can enforce that in any sensible way. There are valid use cases after all where partial inlining would result in entirely sensible decisions, just think about the more typical case of __builtin_constant_p selecting between inline asm taking immediate operands and one taking register/memory operands. That's why I am saying that I consider it a lot more useful to provide reliable building blocks to express the dependency and make sure they work.

Mar 20 2020, 8:38 AM · Restricted Project

Mar 19 2020

joerg added a comment to D75799: [Intrinsic] Give "is.constant" the "convergent" attribute.

...in the outer condition, I meant.

Mar 19 2020, 6:39 PM · Restricted Project
joerg added a comment to D75799: [Intrinsic] Give "is.constant" the "convergent" attribute.

Yes, builtin_expect is just noise here. The point I wanted to make is that both sz and bytes should be used in builtin_constant_p in the other condition.

Mar 19 2020, 6:39 PM · Restricted Project
joerg added a comment to D75799: [Intrinsic] Give "is.constant" the "convergent" attribute.

IMO the root of the problem here is that the branches are mixing predicated variables (bytes) with non-predicated variables (sz). If users want deterministic behavior here, that shouldn't be done.

Mar 19 2020, 5:22 AM · Restricted Project

Mar 18 2020

joerg added a comment to D75799: [Intrinsic] Give "is.constant" the "convergent" attribute.

I was discussing this with Bill off-list to get a better idea of the original test case. Basically, with the new constant intrinsic pass, we can provide a stronger semantic: the default LLVM pass chain always constant folds expressions involving is.constant and performs DCE trivially dead branches resulting from the former folding. This means that if the original expression is adjusted from:

if (__builtin_expect(!!(sz >= 0 && sz < bytes), 0)) {
    if (!__builtin_constant_p(bytes))
    ...
}

to the functionally equivalent:

if (!(__builtin_constant_p(sz) && __builtin_constant_p(bytes) && sz >= 0 && sz >= bytes) && __builtin_expect(!!(sz >= 0 && sz < bytes), 0)) {
    if (!__builtin_constant_p(bytes))
    ...
}

then we can actually ensure proper DCE even with -O0 in the default pass chain. That depends over all on two properties:

  • If __builtin_constant_p is constant folded by clang, it must DCE the appropiate places.
  • the constant intrinsic pass is run

With -O1 or higher, this should work in general.

Mar 18 2020, 6:28 PM · Restricted Project

Mar 17 2020

joerg closed D76186: Fix compatibility for __builtin_stdarg_start.

Committed as 0b999f76575f0196d3cd01c0781b2513b0a1af15 without link.

Mar 17 2020, 4:46 PM
joerg updated the diff for D73245: Avoid using std::max_align_t in pre-C++11 mode.

Require __STDCPP_NEW_ALIGNMENT__ in C++03 mode. Prefer it over max_align_t in a number of tests when allocation alignment is desired. Adjust some tests to do minimal sanity checking of the alignment for C++03 only. Add an explicit check that __STDCPP_NEW_ALIGNMENT__ is more general than max_align_t if both are present.

Mar 17 2020, 4:13 PM · Restricted Project

Mar 16 2020

joerg added a comment to D76151: [MC][X86] Allow SHT_PROGBITS for .eh_frame on x86-64.

This looks much better than the in-tree state, thanks.

Mar 16 2020, 1:40 PM · Restricted Project

Mar 15 2020

joerg added reviewers for D76186: Fix compatibility for __builtin_stdarg_start: rjmccall, rsmith.
Mar 15 2020, 7:28 AM

Mar 14 2020

joerg created D76186: Fix compatibility for __builtin_stdarg_start.
Mar 14 2020, 3:02 PM