Page MenuHomePhabricator

regehr (John Regehr)
User

Projects

User does not belong to any projects.

User Details

User Since
Sep 23 2015, 2:21 AM (207 w, 6 d)

Recent Activity

Jul 16 2019

regehr committed rL366239: add June 2019 minutes.
add June 2019 minutes
Jul 16 2019, 11:19 AM

Jul 7 2019

regehr added a comment to D64215: Add a transform pass to make the executable semantics of poison explicit in the IR.

I'll just add that we (my students and I) are interested in making the UB semantics easily pluggable / switchable. They'll still (almost certainly) be in C++, but we'd like to factor these out so at least they're cleanly separated and easily swapped out.

Jul 7 2019, 12:52 PM · Restricted Project

Jun 19 2019

regehr added a comment to D63423: [Diagnostics] Diagnose misused xor as pow.

I am also in the "be a bit conservative at first and see how things shake out" camp, but it's y'all doing the hard work here, not me :)

Jun 19 2019, 10:49 AM · Restricted Project, Restricted Project

Jun 17 2019

regehr added a comment to D63423: [Diagnostics] Diagnose misused xor as pow.

The only remaining question is, as your said, whether or not to diagnose xors in macros. @regerh @jfb ?

Jun 17 2019, 3:27 PM · Restricted Project, Restricted Project
regehr added a comment to D63423: [Diagnostics] Diagnose misused xor as pow.

Just wanted to say that I think I agree with the design choices here!

Jun 17 2019, 12:01 PM · Restricted Project, Restricted Project

May 15 2019

regehr committed rL360856: correct month now.
correct month now
May 15 2019, 9:51 PM
regehr committed rL360855: oops html typo.
oops html typo
May 15 2019, 9:51 PM
regehr committed rL360854: add may minutes.
add may minutes
May 15 2019, 9:51 PM

May 4 2019

regehr committed rL359972: oops html typo.
oops html typo
May 4 2019, 1:07 PM
regehr committed rL359971: add Nov 18, add notes about a few meetings that did not happen.
add Nov 18, add notes about a few meetings that did not happen
May 4 2019, 1:07 PM

Apr 17 2019

regehr committed rL358598: add minutes.
add minutes
Apr 17 2019, 10:03 AM

Dec 29 2018

regehr added inline comments to D56155: [docs] cttz and ctlz return poison, not undef, when argument is 0.
Dec 29 2018, 4:10 PM

Nov 20 2018

regehr committed rL347379: [LVI] run transfer function for binary operator even when the RHS isn't a….
[LVI] run transfer function for binary operator even when the RHS isn't a…
Nov 20 2018, 9:26 PM
regehr closed D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.
Nov 20 2018, 9:26 PM
regehr updated the diff for D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

tweak spacing

Nov 20 2018, 9:23 PM
regehr updated the diff for D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

refactor a bit-- getRangeForOperand() now returns an optional since it can fail

Nov 20 2018, 8:30 PM
regehr updated the diff for D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

eliminate tabs

Nov 20 2018, 9:26 AM
regehr updated the diff for D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

factor out the getRangeForOperand() code

Nov 20 2018, 9:22 AM
regehr updated the diff for D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

Refresh patch, and fix a test broken by increased LVI precision.

Nov 20 2018, 8:57 AM

Nov 17 2018

pranavk awarded rL347148: tighten up a couple of assertions. hitting the BitPosition == BitWidth case… a Like token.
Nov 17 2018, 8:38 PM
regehr committed rL347148: tighten up a couple of assertions. hitting the BitPosition == BitWidth case….
tighten up a couple of assertions. hitting the BitPosition == BitWidth case…
Nov 17 2018, 5:54 PM

Nov 1 2018

regehr added a comment to D53949: [clang][CodeGen] Implicit Conversion Sanitizer: discover the world of CompoundAssign operators.

Regarding ++ and --, I think for now it's fine to just document that these aren't instrumented.

Nov 1 2018, 8:32 AM · Restricted Project, Restricted Project

Oct 31 2018

regehr added a comment to D53949: [clang][CodeGen] Implicit Conversion Sanitizer: discover the world of CompoundAssign operators.

I do not agree that ++ is performed on the original type. The C99 standard (6.5.3.1.2) appears to be very clear on this point: "The expression ++E is equivalent to (E+=1)."

Oct 31 2018, 2:14 PM · Restricted Project, Restricted Project
regehr added a comment to D53949: [clang][CodeGen] Implicit Conversion Sanitizer: discover the world of CompoundAssign operators.

This patch doesn't appear to yet fix the "x++" or "x--" cases.

Oct 31 2018, 2:02 PM · Restricted Project, Restricted Project
regehr added a comment to D53949: [clang][CodeGen] Implicit Conversion Sanitizer: discover the world of CompoundAssign operators.

I can test this and write a few test cases.

Oct 31 2018, 1:56 PM · Restricted Project, Restricted Project

Oct 5 2018

regehr committed rL343861: add sep 14 minutes.
add sep 14 minutes
Oct 5 2018, 10:06 AM

Sep 14 2018

regehr committed rL342243: oops add link too, I forgot that svn doesn't commit outside of the subdir where….
oops add link too, I forgot that svn doesn't commit outside of the subdir where…
Sep 14 2018, 9:28 AM
regehr committed rL342242: add august 3 minutes.
add august 3 minutes
Sep 14 2018, 9:24 AM

Apr 6 2018

regehr committed rL329432: add minutes that we approved today.
add minutes that we approved today
Apr 6 2018, 10:36 AM
regehr committed rL329406: and update the link.
and update the link
Apr 6 2018, 8:48 AM
regehr committed rL329405: oops upload the right minutes.
oops upload the right minutes
Apr 6 2018, 8:48 AM
regehr committed rL329396: add minutes.
add minutes
Apr 6 2018, 7:45 AM

Aug 4 2017

regehr committed rL310080: add missing minutes.
add missing minutes
Aug 4 2017, 10:56 AM

Jul 25 2017

regehr added a comment to D35858: [RFC] [LLVM] [LazyValueInfo] Introduce getRecurringEdgeValue to handle simple recurrence.

Could you please quantify the effect that this has on compile time? Time for an optimized -j1 compile of LLVM itself is reasonable. Also it would be nice to know what effect this has on generated code.

Jul 25 2017, 3:54 PM

Jun 7 2017

regehr added a comment to D33305: [ubsan] Add a check for pointer overflow UB.

Well, my second program should subtract a multiple of sizeof(T). But anyway, my view is that this is a real overflow and a nasty consequence of the unsigned size_t and the usual arithmetic conversions and I don't think we want to try to poke a hole in UBSan to allow this idiom unless it turns out to be extremely common.

Jun 7 2017, 9:29 AM
regehr added a comment to D33305: [ubsan] Add a check for pointer overflow UB.

Sorry, let's go with this example instead, which makes it clear that the program is attempting to do something completely sensible:

Jun 7 2017, 8:51 AM
regehr added a comment to D33305: [ubsan] Add a check for pointer overflow UB.

I'm taking a look. For reference here's the test program I'm using.

Jun 7 2017, 8:27 AM
regehr abandoned D20322: [ubsan] add pointer overflow checking.
Jun 7 2017, 6:35 AM

Jun 5 2017

regehr added a comment to D33910: [ubsan] Detect invalid unsigned pointer index expression (clang).

I'm afraid I don't have a better name for this.

Jun 5 2017, 1:04 PM
regehr added inline comments to D33911: [ubsan] Detect invalid unsigned pointer index expression (compiler-rt).
Jun 5 2017, 1:03 PM

May 9 2017

regehr added a comment to D20322: [ubsan] add pointer overflow checking.
In D20322#750381, @vsk wrote:

Hi @dtzWill, I have some time to work on this, and would be happy to implement the changes suggested by @rsmith. Let me know if it's all right for me to take a stab at this.

May 9 2017, 5:35 PM

Apr 7 2017

regehr committed rL299778: add march minutes.
add march minutes
Apr 7 2017, 9:38 AM

Mar 9 2017

regehr committed rL297419: ok add the file now.
ok add the file now
Mar 9 2017, 3:17 PM
regehr committed rL297418: add september board meeting minutes.
add september board meeting minutes
Mar 9 2017, 3:14 PM
regehr committed rL297417: add missing minutes for Oct, Jan, Feb.
add missing minutes for Oct, Jan, Feb
Mar 9 2017, 3:09 PM

Feb 9 2017

regehr added a comment to D29369: [ubsan] Omit superflous overflow checks for promoted arithmetic (PR20193).

Paging @dtzWill

Feb 9 2017, 6:28 AM

Feb 1 2017

regehr added a comment to D29437: [ubsan] Detect signed overflow UB in remainder operations.

Does this check need to be sensitive to the dialect of C/C++ that the user asked for? I know that it used to be the case that the standard could be read either way for this case, but as you observe it is now unambiguously UB.

Feb 1 2017, 9:10 PM
regehr added a comment to D29369: [ubsan] Omit superflous overflow checks for promoted arithmetic (PR20193).

Out of curiosity, how many of these superfluous checks are not subsequently eliminated by InstCombine?

Feb 1 2017, 8:53 PM

Nov 18 2016

regehr added a comment to D20322: [ubsan] add pointer overflow checking.

I had some deadlines to get through, but now I'll get back to updating this patch, hopefully in a few days!

Nov 18 2016, 7:36 PM

Jun 8 2016

regehr added a comment to D21010: Replace the implementation of ConstantRange::binaryAnd..

I've looked at the code and I agree that the implementation is sound and is precise for non-wrapped inputs.

Jun 8 2016, 1:28 PM

Jun 6 2016

regehr added a comment to D21010: Replace the implementation of ConstantRange::binaryAnd..

Also see section 3.5 of this paper (by the authors of the code above):

Jun 6 2016, 1:40 AM
regehr added a comment to D21010: Replace the implementation of ConstantRange::binaryAnd..

Great to see some work going on here!

Jun 6 2016, 1:37 AM

May 30 2016

regehr added inline comments to D20669: [ConstantRange / SCEV] generalize overflow checking for ConstantRanges.
May 30 2016, 11:51 PM

May 27 2016

regehr updated the diff for D19867: [LVI] Teach LVI to see through x.with.overflow calls.

rebase and bump

May 27 2016, 2:38 AM

May 26 2016

regehr retitled D20669: [ConstantRange / SCEV] generalize overflow checking for ConstantRanges from to [ConstantRange / SCEV] generalize overflow checking for ConstantRanges.
May 26 2016, 2:22 AM
regehr abandoned D19110: remove unnecessary integer overflow checks.
May 26 2016, 1:34 AM

May 18 2016

regehr updated the diff for D20323: [ubsan] runtime support for pointer overflow checking.

Fix borked test. Thanks folks!

May 18 2016, 12:44 AM
regehr added a comment to D20322: [ubsan] add pointer overflow checking.

I should add a note about testing:

May 18 2016, 12:22 AM
regehr updated the diff for D20322: [ubsan] add pointer overflow checking.

updated patch from Will:

May 18 2016, 12:15 AM

May 17 2016

regehr abandoned D20327: [InstCombine] transform multiplication overflow check written as a > (UINT_MAX /u b) to umul.with.overflow.
May 17 2016, 12:11 PM
regehr added a comment to D20327: [InstCombine] transform multiplication overflow check written as a > (UINT_MAX /u b) to umul.with.overflow.

Hi guys, I don't know the best place for this-- just wanted to implement it since Rich Felker, author of Musl libc, was complaining that the transformation is missing. If this isn't the right place I'm happy to close this out.

May 17 2016, 12:10 PM
regehr retitled D20327: [InstCombine] transform multiplication overflow check written as a > (UINT_MAX /u b) to umul.with.overflow from to [InstCombine] transform multiplication overflow check written as a > (UINT_MAX /u b) to umul.with.overflow.
May 17 2016, 6:16 AM
regehr added a child revision for D20323: [ubsan] runtime support for pointer overflow checking: D20322: [ubsan] add pointer overflow checking.
May 17 2016, 5:00 AM
regehr added a parent revision for D20322: [ubsan] add pointer overflow checking: D20323: [ubsan] runtime support for pointer overflow checking.
May 17 2016, 5:00 AM
regehr retitled D20323: [ubsan] runtime support for pointer overflow checking from to [ubsan] runtime support for pointer overflow checking.
May 17 2016, 4:59 AM
regehr retitled D20322: [ubsan] add pointer overflow checking from to [ubsan] add pointer overflow checking.
May 17 2016, 4:56 AM

May 12 2016

regehr committed rL269346.
May 12 2016, 2:01 PM
regehr closed D20151: [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs by committing rL269346.
May 12 2016, 2:01 PM
regehr updated the diff for D20151: [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs.

fix misspelling

May 12 2016, 1:33 AM
regehr added a comment to D20151: [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs.
May 12 2016, 1:27 AM
regehr updated the diff for D20151: [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs.

revise wording as suggested by Sanjoy

May 12 2016, 1:27 AM

May 11 2016

regehr added inline comments to D20151: [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs.
May 11 2016, 12:20 PM
regehr updated the diff for D19867: [LVI] Teach LVI to see through x.with.overflow calls.

Oops-- instead of

May 11 2016, 6:29 AM
regehr set the repository for D19867: [LVI] Teach LVI to see through x.with.overflow calls to rL LLVM.
May 11 2016, 6:26 AM
regehr added a comment to D19867: [LVI] Teach LVI to see through x.with.overflow calls.

I have a small, well-defined program that gets compiled into a crash by clang -O2 -fsanitize=signed-integer-overflow -fsanitize-trap=signed-integer-overflow. So either there's a bug in this patch or else teaching LLVM to see through overflow intrinsics is exposing a bug elsewhere. I'll narrow it down.

May 11 2016, 4:39 AM
regehr added a comment to D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

A few more reps of the build completed, and it's more like a 6 second slowdown on an 1.5-hour non-parallel build.

May 11 2016, 1:46 AM
regehr retitled D20151: [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs from to [Docs] clarify that the x.with.overflow intrinsics have defined behavior for all inputs.
May 11 2016, 1:16 AM

May 9 2016

regehr updated the diff for D19867: [LVI] Teach LVI to see through x.with.overflow calls.

Address Philip's feedback and rebase. Thanks for the comments!

May 9 2016, 12:58 PM

May 8 2016

regehr added inline comments to D19867: [LVI] Teach LVI to see through x.with.overflow calls.
May 8 2016, 1:59 PM
regehr added inline comments to D19867: [LVI] Teach LVI to see through x.with.overflow calls.
May 8 2016, 1:17 PM
regehr added a comment to D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

Looks like this patch makes a -j1 build of LLVM + Clang about 4 seconds slower on a Haswell-E. The total build takes about 87 minutes. The effect is robust across repetitions. I can give more details if anyone wants.

May 8 2016, 12:15 PM

May 6 2016

regehr added a comment to D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant.

Do we have a standard benchmark for measuring effect on compile time? If I was going to be somewhat careful about it I'd do a single-threaded build of LLVM using itself, then repeat enough times to get statistical significance. Is that good enough? Overkill? Is there something other than LLVM that I should be building? I have SPEC 2006 handy but an not sure it's widely available.

May 6 2016, 12:31 AM

May 3 2016

regehr retitled D19867: [LVI] Teach LVI to see through x.with.overflow calls from to [LVI] Teach LVI to see through x.with.overflow calls.
May 3 2016, 7:11 AM
regehr retitled D19859: [LVI] run transfer function for binary operator even when the RHS isn't a constant from to [LVI] run transfer function for binary operator even when the RHS isn't a constant.
May 3 2016, 2:37 AM

May 2 2016

regehr committed rL268291.
May 2 2016, 1:04 PM
regehr closed D19179: export ConstantRange from LVI by committing rL268291.
May 2 2016, 1:04 PM
regehr updated the diff for D19179: export ConstantRange from LVI.

rebase

May 2 2016, 12:58 PM

Apr 30 2016

regehr updated the diff for D19179: export ConstantRange from LVI.

Rebase.

Apr 30 2016, 3:16 PM

Apr 28 2016

regehr abandoned D19485: fix major imprecision in LazyValueInfo.

Mostly subsumed by changes implemented by Philip; I'll introduce the remaining changes (taking advantage of LVI information on both sides of a binop) in a different revision.

Apr 28 2016, 8:35 AM

Apr 25 2016

regehr accepted D19492: [LVI] Infer local facts from unary expressions.

LGTM

Apr 25 2016, 1:18 PM
regehr added a comment to D19485: fix major imprecision in LazyValueInfo.

Hi Philip, since this is a relatively straightforward change (or should be) and you're knee deep in the code anyway, I would certainly not be offended if you pushed whatever parts of this into the code base yourself in whatever order makes the most sense.

Apr 25 2016, 12:16 PM
regehr retitled D19485: fix major imprecision in LazyValueInfo from to fix major imprecision in LazyValueInfo.
Apr 25 2016, 9:00 AM

Apr 19 2016

regehr updated the diff for D19110: remove unnecessary integer overflow checks.

Added tests.

Apr 19 2016, 5:01 AM
regehr added a comment to D19179: export ConstantRange from LVI.

I agree that tests would be good, thanks for confirming that I hadn't simply failed to spot the infrastructure I should be using to do that...

Apr 19 2016, 4:13 AM
regehr added a comment to D19179: export ConstantRange from LVI.
Apr 19 2016, 4:09 AM
regehr updated the diff for D19179: export ConstantRange from LVI.

Addresses Philip's comments. Thanks!

Apr 19 2016, 4:08 AM

Apr 15 2016

regehr retitled D19179: export ConstantRange from LVI from to export ConstantRange from LVI.
Apr 15 2016, 2:12 PM
regehr updated the diff for D19110: remove unnecessary integer overflow checks.

Formatting fixes.

Apr 15 2016, 1:42 PM

Apr 14 2016

regehr retitled D19110: remove unnecessary integer overflow checks from to remove unnecessary integer overflow checks.
Apr 14 2016, 6:18 AM

Apr 10 2016

regehr accepted D18684: [SCEV] See through op.with.overflow intrinsics.

Looks great.

Apr 10 2016, 1:15 AM