rtrieu (Richard Trieu)
User

Projects

User does not belong to any projects.

User Details

User Since
Jul 11 2012, 7:44 PM (266 w, 3 d)

Recent Activity

Tue, Aug 8

rtrieu committed rL310435: Allow operator delete to be an invalid Decl..
Allow operator delete to be an invalid Decl.
Tue, Aug 8, 7:04 PM

Fri, Aug 4

rtrieu committed rL310158: [ODRHash] Treat some non-templated classes as templated..
[ODRHash] Treat some non-templated classes as templated.
Fri, Aug 4, 5:55 PM

Jul 21 2017

rtrieu committed rL308783: Inline variable into assert to fix unused warning..
Inline variable into assert to fix unused warning.
Jul 21 2017, 2:30 PM
rtrieu committed rL308777: Fix tblgen error.
Fix tblgen error
Jul 21 2017, 1:32 PM

Jul 20 2017

rtrieu committed rL308714: Fix tblgen error..
Fix tblgen error.
Jul 20 2017, 9:58 PM

Jul 14 2017

rtrieu committed rL308077: [ODRHash] Revert r307743 which reverted r307720.
[ODRHash] Revert r307743 which reverted r307720
Jul 14 2017, 7:55 PM

Jul 13 2017

rtrieu committed rL307986: [ODRHash] Avoid taking the types of FunctionDecl's.
[ODRHash] Avoid taking the types of FunctionDecl's
Jul 13 2017, 6:37 PM

Jul 11 2017

rtrieu committed rL307743: [ODRHash] Revert r307720 to fix buildbot..
[ODRHash] Revert r307720 to fix buildbot.
Jul 11 2017, 5:38 PM
rtrieu committed rL307720: [ODRHash] Support more method types..
[ODRHash] Support more method types.
Jul 11 2017, 3:11 PM

Jul 9 2017

rtrieu committed rL307458: [ODRHash] Support FriendDecl.
[ODRHash] Support FriendDecl
Jul 9 2017, 6:19 AM

Jun 30 2017

rtrieu committed rL306926: [ODRHash] Revert r305104 - Skip inline namespaces when hashing..
[ODRHash] Revert r305104 - Skip inline namespaces when hashing.
Jun 30 2017, 7:00 PM
rtrieu committed rL306904: [ODRHash] Support Type TemplateArgument.
[ODRHash] Support Type TemplateArgument
Jun 30 2017, 3:41 PM

Jun 29 2017

rtrieu committed rL306753: [ODRHash] Improve typedef handling..
[ODRHash] Improve typedef handling.
Jun 29 2017, 3:53 PM
rtrieu added a comment to D34810: [Sema] -Wcomma should not warn for expressions that return void.

Reid is correct, the whitelisted expressions was greatly reduced during code review so only casts to void would disable the warning. While the last review did not have the description updated to reflect this, the committed code does have an accurate description. What is the reason to exclude void expressions now? For the function case, it is more consistent to warn on all function calls since we can't determine if a function returns void just by looking at the call site.

Jun 29 2017, 3:06 PM

Jun 20 2017

rtrieu committed rL305872: [ODRHash] Supply more information when generic error message is emitted..
[ODRHash] Supply more information when generic error message is emitted.
Jun 20 2017, 6:43 PM

Jun 15 2017

rtrieu committed rL305543: [ODRHash] Hash VarDecl members..
[ODRHash] Hash VarDecl members.
Jun 15 2017, 7:45 PM

Jun 14 2017

rtrieu committed rL305440: [ODRHash] Hash TemplateArgument::Pack and TemplateTypeParmType.
[ODRHash] Hash TemplateArgument::Pack and TemplateTypeParmType
Jun 14 2017, 6:35 PM

Jun 13 2017

rtrieu committed rL305362: [ODRHash] Remove debugging code from r305361.
[ODRHash] Remove debugging code from r305361
Jun 13 2017, 8:20 PM
rtrieu committed rL305361: [ODRHash] Hash Template and TemplateExpansion in TemplateArgument..
[ODRHash] Hash Template and TemplateExpansion in TemplateArgument.
Jun 13 2017, 8:18 PM
rtrieu committed rL305360: [ODRHash] Hash Expr for TemplateArgument::Expression.
[ODRHash] Hash Expr for TemplateArgument::Expression
Jun 13 2017, 6:45 PM
rtrieu committed rL305328: [ODRHash] Add TemplateArgument kind to hash..
[ODRHash] Add TemplateArgument kind to hash.
Jun 13 2017, 3:22 PM

Jun 12 2017

rtrieu committed rL305238: [ODRHash] Add diagnostic messages for typedef and type alias..
[ODRHash] Add diagnostic messages for typedef and type alias.
Jun 12 2017, 2:59 PM

Jun 9 2017

rtrieu committed rL305130: Revert r305110 to fix buildbot.
Revert r305110 to fix buildbot
Jun 9 2017, 4:04 PM
rtrieu committed rL305110: [ODRHash] Add support for TemplateArgument types..
[ODRHash] Add support for TemplateArgument types.
Jun 9 2017, 2:00 PM
rtrieu committed rL305104: [ODRHash] Skip inline namespaces when hashing..
[ODRHash] Skip inline namespaces when hashing.
Jun 9 2017, 1:12 PM

Jun 7 2017

rtrieu committed rL304962: [ODRHash] Make diagnostic message more readable..
[ODRHash] Make diagnostic message more readable.
Jun 7 2017, 9:48 PM
rtrieu committed rL304956: [ODRHash] Change the fall-back diagnostic error..
[ODRHash] Change the fall-back diagnostic error.
Jun 7 2017, 5:57 PM

Jun 2 2017

rtrieu committed rL304618: Revert r304592.
Revert r304592
Jun 2 2017, 5:11 PM
rtrieu committed rL304592: [ODRHash] Add support for TemplateArgument types..
[ODRHash] Add support for TemplateArgument types.
Jun 2 2017, 1:35 PM

Jun 1 2017

rtrieu committed rL304519: Minor fixes to for-loop warning..
Minor fixes to for-loop warning.
Jun 1 2017, 9:25 PM

May 30 2017

rtrieu committed rL304261: [ODRHash] Support TemplateSpecializationType.
[ODRHash] Support TemplateSpecializationType
May 30 2017, 5:32 PM

May 25 2017

rtrieu committed rL303934: "*" => "+" to avoid matching on empty string..
"*" => "+" to avoid matching on empty string.
May 25 2017, 4:25 PM
rtrieu committed rL303932: Make test/Driver/baremetal.cpp work when output directory isn't named 'bin'..
Make test/Driver/baremetal.cpp work when output directory isn't named 'bin'.
May 25 2017, 4:03 PM

May 19 2017

rtrieu committed rL303459: [ODRHash] Revert r303450 to fix buildbot.
[ODRHash] Revert r303450 to fix buildbot
May 19 2017, 3:49 PM
rtrieu committed rL303450: [ODRHash] Support TemplateName and TemplateArgument.
[ODRHash] Support TemplateName and TemplateArgument
May 19 2017, 1:18 PM

May 16 2017

rtrieu committed rL303233: [ODRHash] Support NestedNameSpecifier.
[ODRHash] Support NestedNameSpecifier
May 16 2017, 8:36 PM
rtrieu committed rL303231: [ODRHash] Support more types in the ODR checker..
[ODRHash] Support more types in the ODR checker.
May 16 2017, 7:42 PM

May 8 2017

rtrieu committed rL302505: [ODRHash] Loosen checks on typedefs..
[ODRHash] Loosen checks on typedefs.
May 8 2017, 8:38 PM

May 5 2017

rtrieu committed rL302284: [ODRHash] Fix typo, NFC.
[ODRHash] Fix typo, NFC
May 5 2017, 2:01 PM

May 2 2017

rtrieu committed rL301989: [ODRHash] Add support for array and decayed types, and parameter names and….
[ODRHash] Add support for array and decayed types, and parameter names and…
May 2 2017, 5:12 PM

Apr 28 2017

rtrieu committed rL301701: [ODRHash] Add testcase with different paramter names. NFC.
[ODRHash] Add testcase with different paramter names. NFC
Apr 28 2017, 3:16 PM

Apr 19 2017

rtrieu committed rL300814: [ODRHash] clean up test and add new examples. NFC.
[ODRHash] clean up test and add new examples. NFC
Apr 19 2017, 8:06 PM

Apr 11 2017

rtrieu committed rL300001: Revert r298824 & r298816, recommit r298742 & r298754.
Revert r298824 & r298816, recommit r298742 & r298754
Apr 11 2017, 3:44 PM
rtrieu committed rL299989: [ODRHash] Improve handling of hash values.
[ODRHash] Improve handling of hash values
Apr 11 2017, 2:43 PM

Mar 24 2017

rtrieu committed rL298754: [ODRHash] Add support for array and decayed types..
[ODRHash] Add support for array and decayed types.
Mar 24 2017, 6:01 PM
rtrieu committed rL298742: [ODRHash] Add error messages for mismatched parameters in methods..
[ODRHash] Add error messages for mismatched parameters in methods.
Mar 24 2017, 2:30 PM

Mar 7 2017

rtrieu committed rL297246: [ODRHash] Hash typedefs and usings statements in classes..
[ODRHash] Hash typedefs and usings statements in classes.
Mar 7 2017, 4:25 PM

Mar 3 2017

rtrieu committed rL296958: [ODRHash] Try again to fix build bot..
[ODRHash] Try again to fix build bot.
Mar 3 2017, 7:16 PM
rtrieu committed rL296956: Handle null QualType better in Stmt::Profile.
Handle null QualType better in Stmt::Profile
Mar 3 2017, 6:54 PM
rtrieu committed rL296953: [ODRHash] Change test to try to appease buildbot..
[ODRHash] Change test to try to appease buildbot.
Mar 3 2017, 6:17 PM
rtrieu committed rL296932: [ODRHash] Add support for detecting different method properties..
[ODRHash] Add support for detecting different method properties.
Mar 3 2017, 4:21 PM

Feb 28 2017

rtrieu committed rL296572: Add warning for inconsistent overrides on destructor..
Add warning for inconsistent overrides on destructor.
Feb 28 2017, 7:19 PM
rtrieu committed rL296521: [ODRHash] Add basic support for CXXRecordDecl.
[ODRHash] Add basic support for CXXRecordDecl
Feb 28 2017, 1:36 PM

Feb 24 2017

rtrieu committed rL296221: [ODRHash] Move inherited visitor call to end of function..
[ODRHash] Move inherited visitor call to end of function.
Feb 24 2017, 5:41 PM
rtrieu committed rL296198: [ODRHash] Finish FieldDecl support by handling mutable and initializers..
[ODRHash] Finish FieldDecl support by handling mutable and initializers.
Feb 24 2017, 3:47 PM
rtrieu committed rL296170: [ODRHash] Add handling of bitfields.
[ODRHash] Add handling of bitfields
Feb 24 2017, 1:11 PM

Feb 23 2017

rtrieu committed rL296078: [ODRHash] Add handling of TypedefType and DeclarationName.
[ODRHash] Add handling of TypedefType and DeclarationName
Feb 23 2017, 7:10 PM

Feb 22 2017

rtrieu committed rL295931: [ODRHash] Handle types in ODR hashing..
[ODRHash] Handle types in ODR hashing.
Feb 22 2017, 7:38 PM
rtrieu committed rL295911: [ODRHash] Add IdentiferInfo and FieldDecl support..
[ODRHash] Add IdentiferInfo and FieldDecl support.
Feb 22 2017, 4:34 PM
rtrieu committed rL295890: [ODRHash] static_cast and Stmt hashing..
[ODRHash] static_cast and Stmt hashing.
Feb 22 2017, 2:34 PM

Feb 21 2017

rtrieu committed rL295800: Add more ODR checking..
Add more ODR checking.
Feb 21 2017, 5:23 PM

Feb 17 2017

rtrieu committed rL295533: Part of adding an improved ODR checker..
Part of adding an improved ODR checker.
Feb 17 2017, 6:21 PM
rtrieu added a comment to D21675: New ODR checker for modules.

This patch will be landing in small chunks to hopefully avoid the large reverts.

Feb 17 2017, 5:51 PM

Feb 16 2017

rtrieu committed rL295427: Revert r295421, new ODR checker for modules, to fix build bot..
Revert r295421, new ODR checker for modules, to fix build bot.
Feb 16 2017, 11:31 PM
rtrieu committed rL295421: Add better ODR checking for modules..
Add better ODR checking for modules.
Feb 16 2017, 10:06 PM

Feb 15 2017

rtrieu committed rL295293: Revert r295284: Add better ODR checking for modules..
Revert r295284: Add better ODR checking for modules.
Feb 15 2017, 11:21 PM
rtrieu committed rL295286: Loosen a Type check ODR checking to try to fix the build bot..
Loosen a Type check ODR checking to try to fix the build bot.
Feb 15 2017, 10:00 PM
rtrieu committed rL295284: Add better ODR checking for modules..
Add better ODR checking for modules.
Feb 15 2017, 9:05 PM

Feb 14 2017

rtrieu committed rL295125: Remove unused variable. No functional change..
Remove unused variable. No functional change.
Feb 14 2017, 4:08 PM

Feb 10 2017

rtrieu committed rL294815: Move test include file from include/ to Inputs/.
Move test include file from include/ to Inputs/
Feb 10 2017, 5:03 PM

Jan 30 2017

rtrieu committed rL293585: Add better ODR checking for modules..
Add better ODR checking for modules.
Jan 30 2017, 5:55 PM
rtrieu closed D21675: New ODR checker for modules by committing rL293585: Add better ODR checking for modules..
Jan 30 2017, 5:55 PM

Jan 27 2017

rtrieu committed rL293368: [WebAssembly] Use print instead of dump method..
[WebAssembly] Use print instead of dump method.
Jan 27 2017, 7:35 PM
rtrieu updated the diff for D21675: New ODR checker for modules.

Changes made to the ODR hash algorithm:

Jan 27 2017, 3:57 PM

Jan 26 2017

rtrieu committed rL293260: Fix unused variable warning..
Fix unused variable warning.
Jan 26 2017, 10:17 PM

Jan 25 2017

rtrieu added a comment to D21675: New ODR checker for modules.

I feel like we have a really similar use case in the Analysis/CloneDetection{.h/.cpp} with the hashing of statements. I tried substituting the call to the statement hashing with a call to the CloneDetection API and it seems that most tests pass and the remaining fails are just minor fixable differences (like ::foo() and foo() having different hash codes).

Would be nice if we could make Stmt::Profile, ODRHash and the CloneDetection use the same backend. We improved a few things that we no longer have the periodic reallocs from the vector inside NodeIDSet and that we use MD5. Also there are are some future plans on how we can better prevent regressions when we add/extend AST nodes. Thoughts?

Jan 25 2017, 2:08 PM

Jan 20 2017

rtrieu added a comment to D21675: New ODR checker for modules.

After changing the ODRHash class a bit, the new performance numbers are 3% in debug and 1-1.5% in release builds.

Jan 20 2017, 6:22 PM

Jan 13 2017

rtrieu added a comment to D21675: New ODR checker for modules.

From testing, there is no difference when compiling with pre-compiled headers. However, when building the headers, there is a 3-4% impact on compile time.

Jan 13 2017, 2:27 PM
rtrieu added a comment to D21675: New ODR checker for modules.

Comments have been addressed. I will be testing it for performance impact next.

Jan 13 2017, 11:38 AM
rtrieu updated the diff for D21675: New ODR checker for modules.
Jan 13 2017, 11:35 AM

Jan 3 2017

rtrieu committed rL290920: Extend -Wtautological-overlap-compare to more cases..
Extend -Wtautological-overlap-compare to more cases.
Jan 3 2017, 4:57 PM

Dec 29 2016

rtrieu updated the diff for D21675: New ODR checker for modules.

This is a redesign of the ODR checker which was discovered to have several shortcomings when run over test cases. The old version mainly used depth-first processing of AST nodes to gather the information to be hashed. In some instances, a recursive loop developed preventing the termination of the hashing function.

Dec 29 2016, 4:49 PM

Dec 5 2016

rtrieu committed rL288756: Clean up some Sema checking code. NFC.
Clean up some Sema checking code. NFC
Dec 5 2016, 5:57 PM
rtrieu committed rL288740: Add test for r288732, warn on unsigned zero in std::max.
Add test for r288732, warn on unsigned zero in std::max
Dec 5 2016, 4:37 PM
rtrieu committed rL288732: Warn on unsigned zero in call to std::max.
Warn on unsigned zero in call to std::max
Dec 5 2016, 3:52 PM

Nov 14 2016

rtrieu committed rL286923: Merging rr285370:.
Merging rr285370:
Nov 14 2016, 5:26 PM
rtrieu committed rL286922: Merging r282989:.
Merging r282989:
Nov 14 2016, 5:14 PM
rtrieu committed rL286918: Merging r281287:.
Merging r281287:
Nov 14 2016, 5:01 PM

Nov 11 2016

rtrieu committed rL286675: Print correct directory in merge script..
Print correct directory in merge script.
Nov 11 2016, 3:36 PM
rtrieu committed rL286667: Merging r281286:.
Merging r281286:
Nov 11 2016, 3:21 PM
rtrieu committed rL286641: Remove double setting of invalid flag..
Remove double setting of invalid flag.
Nov 11 2016, 2:00 PM
rtrieu committed rL286630: When a DecompositionDecl is marked invalid, also set the child BindingDecl's to.
When a DecompositionDecl is marked invalid, also set the child BindingDecl's to
Nov 11 2016, 1:01 PM

Oct 27 2016

rtrieu committed rL285370: Fix a crash on invalid code..
Fix a crash on invalid code.
Oct 27 2016, 5:25 PM

Oct 26 2016

rtrieu added a comment to D21675: New ODR checker for modules.

There are a bunch of cases here that do this:

if (auto t = getThing())
  ID.addThing(t);
if (auto t = getOtherThing())
  ID.addThing(t);

That will result in hash collisions between objects with thing and objects with otherthing (for instance, struct A { int n : 1; }; and struct A { int n = 1; }; appear to hash the same).

And there are some cases where you add a list of objects without first adding the size, which is liable to allow collisions.

I'm not too worried about these cases, since this is just a hash anyway, and is only a best-effort attempt to check for ODR violations, but some of them look like they'd be easy enough to fix, so I figure why not :)

The hashing now does:

auto t = getThing();
ID.addBoolean(t);
if (t)
  ID.addThing(t);

The added Boolean value prevents the hash collision.

Anyway, this looks really good. Do you know if the computation of the ODR hash has any measurable performance impact when building a large module? I'm not really expecting one, but it seems worth checking just in case.

Oct 26 2016, 5:13 PM
rtrieu updated the diff for D21675: New ODR checker for modules.
Oct 26 2016, 5:07 PM

Oct 3 2016

rtrieu added inline comments to D21675: New ODR checker for modules.
Oct 3 2016, 7:36 PM
rtrieu updated the diff for D21675: New ODR checker for modules.

Add a more detailed error message to let users know where the two records differ. This replaces the generic error which only stated that two definitions are different without any details.

Oct 3 2016, 7:32 PM

Sep 30 2016

rtrieu committed rL282989: Fix crash when emitting error..
Fix crash when emitting error.
Sep 30 2016, 5:24 PM

Sep 27 2016

rtrieu committed rL282555: Revert r282547 and add test to show correct behavior..
Revert r282547 and add test to show correct behavior.
Sep 27 2016, 4:53 PM
rtrieu committed rL282547: Fix defaulted member functions for templated classes..
Fix defaulted member functions for templated classes.
Sep 27 2016, 3:38 PM