Page MenuHomePhabricator

nickdesaulniers (Nick Desaulniers)
Google

Projects

User does not belong to any projects.

User Details

User Since
Apr 13 2018, 4:23 PM (165 w, 6 d)

Recent Activity

Yesterday

nickdesaulniers updated the diff for D104257: [GCOVProfiling] don't profile Fn's w/ noprofile attribute.
  • refresh utils/update_test_checks.py assertions
Thu, Jun 17, 5:00 PM · Restricted Project
nickdesaulniers updated the diff for D104257: [GCOVProfiling] don't profile Fn's w/ noprofile attribute.
  • reduce test case, remove WIP
Thu, Jun 17, 4:58 PM · Restricted Project
nickdesaulniers added a comment to D104475: [Clang][Codegen] emit noprofile IR Fn Attr for new Fn Attr no_profile.

So if we don't want to offer guarantee for IR/C/C++ attributes, we can document that users may need to additionally specify __attribute__((noinline)) to suppress inlining.

I don't generally like that approach:

If a guarantee would cause inferior optimization or we cannot think of all the complication/fallout initially, I'd prefer that we keep the initial semantics narrow.

Thu, Jun 17, 4:07 PM · Restricted Project
nickdesaulniers added a comment to D104475: [Clang][Codegen] emit noprofile IR Fn Attr for new Fn Attr no_profile.

So if we don't want to offer guarantee for IR/C/C++ attributes, we can document that users may need to additionally specify __attribute__((noinline)) to suppress inlining.

Thu, Jun 17, 2:59 PM · Restricted Project
nickdesaulniers requested review of D104491: [Docs][Clang][Attr] mark no_stack_protector+no_sanitize GCC compatible.
Thu, Jun 17, 2:51 PM · Restricted Project
nickdesaulniers updated the diff for D104475: [Clang][Codegen] emit noprofile IR Fn Attr for new Fn Attr no_profile.
  • fix td files and test CHECKs
Thu, Jun 17, 2:23 PM · Restricted Project
nickdesaulniers updated the diff for D104342: [IR] convert warn-stack-size from module attr to fn attr.
  • verifier checks, inliner test, use base 10 radix
Thu, Jun 17, 2:10 PM · Restricted Project, Restricted Project
nickdesaulniers added inline comments to D104342: [IR] convert warn-stack-size from module attr to fn attr.
Thu, Jun 17, 12:41 PM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D104342: [IR] convert warn-stack-size from module attr to fn attr.

what're the rules about module level attributes like this? For instance: Does this affect/hinder inlining (if the attributes don't match between the caller and callee)? Other situations that might matter?

Thu, Jun 17, 11:50 AM · Restricted Project, Restricted Project
nickdesaulniers abandoned D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.

Jotting down driver to front end flag translations:

Thu, Jun 17, 11:18 AM · Restricted Project
nickdesaulniers requested review of D104475: [Clang][Codegen] emit noprofile IR Fn Attr for new Fn Attr no_profile.
Thu, Jun 17, 11:15 AM · Restricted Project
nickdesaulniers updated subscribers of D100788: [SystemZ] Support i128 inline asm operands.
Thu, Jun 17, 8:12 AM · Restricted Project

Tue, Jun 15

nickdesaulniers requested review of D104342: [IR] convert warn-stack-size from module attr to fn attr.
Tue, Jun 15, 5:18 PM · Restricted Project, Restricted Project
nickdesaulniers added a reviewer for D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr: phosek.
Tue, Jun 15, 3:33 PM · Restricted Project
nickdesaulniers accepted D103539: RISCV: adjust handling of relocation emission for RISCV.

LGTM; big thanks for sorting all of this out!

Tue, Jun 15, 3:09 PM · Restricted Project
nickdesaulniers added inline comments to D103928: [IR] make -warn-frame-size into a module attr.
Tue, Jun 15, 2:23 PM · Restricted Project, Restricted Project
nickdesaulniers updated the diff for D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.
  • fixup double fn attr in test as per @melver.
Tue, Jun 15, 12:01 PM · Restricted Project
nickdesaulniers added a comment to D103539: RISCV: adjust handling of relocation emission for RISCV.

With Diff 352163 of this patch applied, I can build+boot a mainline riscv Linux kernel.
https://github.com/ClangBuiltLinux/linux/issues/1023 is resolved, and further now so is https://github.com/ClangBuiltLinux/linux/issues/1143. This is gets us back to being able to build entirely with LLVM (clang, clang's integrated assembler, LLD). That's huge! Thanks @compnerd !

Tue, Jun 15, 11:44 AM · Restricted Project

Mon, Jun 14

nickdesaulniers added a comment to D103539: RISCV: adjust handling of relocation emission for RISCV.

With Diff 351900 of this patch applied, a RISCV build of the mainline Linux kernel with LLVM=1 LLVM_IAS=1 builds and boots. This patch resolves https://github.com/ClangBuiltLinux/linux/issues/1023 for me.

Mon, Jun 14, 2:54 PM · Restricted Project
nickdesaulniers added a comment to D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.

__attribute__((no_instrument_function)) seems specific to -finstrument-functions. Somehow gcc -pg uses it as well.

The name may not be generic, so it may be odd to exclude various instrumentations under this generic attribute.

clang -fprofile-instr-generate (frontend coverage/PGO; AIUI only Apples uses it for PGO) / clang -fprofile-generate (IR PGO; most users use this) / clang -fprofile-arcs / gcc -fprofile-arcs are 4 different instrumentation approaches.
Their user-facing options are similar enough and the instrumented output has similarity (so a user not wanting one instr will certainly not want other instr) so I think they warrant similar function attribute.

Perhaps a good idea to file a feature request on https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=__open__&component=gcov-profile&list_id=304970&product=gcc and check what function attributes GCC wants to use.

Mon, Jun 14, 1:56 PM · Restricted Project
nickdesaulniers planned changes to D104257: [GCOVProfiling] don't profile Fn's w/ noprofile attribute.

TODO(Nick): trim down test case further.

Mon, Jun 14, 12:35 PM · Restricted Project
nickdesaulniers updated subscribers of D104257: [GCOVProfiling] don't profile Fn's w/ noprofile attribute.
Mon, Jun 14, 12:35 PM · Restricted Project
nickdesaulniers updated subscribers of D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.
Mon, Jun 14, 12:35 PM · Restricted Project
nickdesaulniers requested review of D104257: [GCOVProfiling] don't profile Fn's w/ noprofile attribute.
Mon, Jun 14, 12:34 PM · Restricted Project
nickdesaulniers updated the diff for D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.
  • rename new test from fprofile-generate.c to fprofile-instrument.c; -fprofile-generate is the driver opt, -fprofile-instrument is the frontend opt.
Mon, Jun 14, 12:08 PM · Restricted Project
nickdesaulniers updated subscribers of D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.
Mon, Jun 14, 12:03 PM · Restricted Project
nickdesaulniers updated the diff for D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.
  • add -disable-llvm-passes to unit test
Mon, Jun 14, 12:00 PM · Restricted Project
nickdesaulniers requested review of D104253: [Clang][Codegen] emit noprofile IR Fn Attr for no_instrument_function Fn Attr.
Mon, Jun 14, 11:57 AM · Restricted Project

Fri, Jun 11

nickdesaulniers added a comment to D103184: [AArch64] handle -Wa,-march=.

FWIW the failure goes away locally if I revert this change here, so it's definitely due to this change here.

Things have been red for a while, probably good to revert while you investigate by this point.

Sorry for the delay but my macbook had some issues so I just finished building LLVM, but I can't seem to reproduce the test failure locally (neither by running the test directly with llvm-lit nor with ninja check-clang). In fact I don't quite understand why this test failed. Like @nickdesaulniers mentioned the build failure should have been fixed in https://reviews.llvm.org/rG76d9bc72784d88f4dd57b9939e52c73739438af5 for a different patch. Do you mind sharing the instructions you used to reproduce the test failure? Thanks.

Did you try on a mac with a m1 processor?

Fri, Jun 11, 12:25 PM · Restricted Project
nickdesaulniers added a comment to D103928: [IR] make -warn-frame-size into a module attr.

FWIW, it was pointed out to me that the commit message doesn't precisely match the actual attribute name. The actual attribute name is warn-stack-size, but the commit message uses -warn-frame-size. Oh well.

Fri, Jun 11, 10:21 AM · Restricted Project, Restricted Project

Thu, Jun 10

nickdesaulniers committed rGffaca140d01b: [IR] Value: Fix OpCode checks (authored by samitolvanen).
[IR] Value: Fix OpCode checks
Thu, Jun 10, 4:47 PM
nickdesaulniers closed D104043: [IR] Value: Fix OpCode checks.
Thu, Jun 10, 4:46 PM · Restricted Project
nickdesaulniers committed rGfc018ebb608e: [IR] make -warn-frame-size into a module attr (authored by nickdesaulniers).
[IR] make -warn-frame-size into a module attr
Thu, Jun 10, 4:15 PM
nickdesaulniers closed D103928: [IR] make -warn-frame-size into a module attr.
Thu, Jun 10, 4:15 PM · Restricted Project, Restricted Project
nickdesaulniers updated subscribers of D103539: RISCV: adjust handling of relocation emission for RISCV.
Thu, Jun 10, 4:12 PM · Restricted Project
nickdesaulniers updated the diff for D103928: [IR] make -warn-frame-size into a module attr.
  • move driver test from clang/test/Frontend/ to clang/test/Driver/, update comment, clarify TODOs
Thu, Jun 10, 1:43 PM · Restricted Project, Restricted Project
nickdesaulniers accepted D104043: [IR] Value: Fix OpCode checks.
Thu, Jun 10, 12:14 PM · Restricted Project
nickdesaulniers added a reviewer for D104043: [IR] Value: Fix OpCode checks: craig.topper.
Thu, Jun 10, 12:12 PM · Restricted Project
nickdesaulniers requested changes to D104043: [IR] Value: Fix OpCode checks.
Thu, Jun 10, 12:11 PM · Restricted Project
nickdesaulniers accepted D104043: [IR] Value: Fix OpCode checks.

Based on the comments above Value::getValueID, this seems fine to me. ie. no such opcode == 0 and InstructionVal enumerator must be the highest valued enumerator in the ValueTy enum.

Thu, Jun 10, 10:13 AM · Restricted Project

Wed, Jun 9

nickdesaulniers updated the diff for D103928: [IR] make -warn-frame-size into a module attr.
  • add < to same comment
Wed, Jun 9, 4:59 PM · Restricted Project, Restricted Project
nickdesaulniers updated the diff for D103928: [IR] make -warn-frame-size into a module attr.
  • update comment in clang/include/clang/Basic/CodeGenOptions.def
Wed, Jun 9, 4:58 PM · Restricted Project, Restricted Project
nickdesaulniers updated the diff for D103928: [IR] make -warn-frame-size into a module attr.
  • introduce -fwarn-stack-size
Wed, Jun 9, 4:56 PM · Restricted Project, Restricted Project
nickdesaulniers updated the summary of D103928: [IR] make -warn-frame-size into a module attr.
Wed, Jun 9, 4:17 PM · Restricted Project, Restricted Project
nickdesaulniers added a reviewer for D103928: [IR] make -warn-frame-size into a module attr: cmtice.
Wed, Jun 9, 12:29 PM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103958: [WIP] Support MustControl conditional control attribute.

The first talk from https://www.youtube.com/watch?v=FFjV9f_Ub9o (https://github.com/ClangBuiltLinux/plumbers-2020-slides/blob/master/LPC_2020_--_Dependency_ordering.pdf) might be helpful to link to at some point from the commit message, for a little additional context.

Wed, Jun 9, 12:17 PM · Restricted Project, Restricted Project
nickdesaulniers edited reviewers for D103958: [WIP] Support MustControl conditional control attribute, added: efriedma; removed: eli.friedman.
Wed, Jun 9, 11:46 AM · Restricted Project, Restricted Project
nickdesaulniers added a reviewer for D103958: [WIP] Support MustControl conditional control attribute: eli.friedman.
Wed, Jun 9, 11:46 AM · Restricted Project, Restricted Project
nickdesaulniers added a reviewer for D103928: [IR] make -warn-frame-size into a module attr: aaron.ballman.
Wed, Jun 9, 11:05 AM · Restricted Project, Restricted Project

Tue, Jun 8

nickdesaulniers committed rG2f9ba6aa8b6d: LTO: Export functions referenced by non-canonical CFI jump tables (authored by samitolvanen).
LTO: Export functions referenced by non-canonical CFI jump tables
Tue, Jun 8, 3:08 PM
nickdesaulniers closed D103120: LTO: Export functions referenced by non-canonical CFI jump tables.
Tue, Jun 8, 3:07 PM · Restricted Project
nickdesaulniers added a reviewer for D103928: [IR] make -warn-frame-size into a module attr: qcolombet.
Tue, Jun 8, 2:48 PM · Restricted Project, Restricted Project
nickdesaulniers updated the diff for D103928: [IR] make -warn-frame-size into a module attr.
  • add CHECK to llvm/test/Linker/warn-stack-frame.ll
Tue, Jun 8, 2:42 PM · Restricted Project, Restricted Project
nickdesaulniers added inline comments to D103928: [IR] make -warn-frame-size into a module attr.
Tue, Jun 8, 2:37 PM · Restricted Project, Restricted Project
nickdesaulniers updated the summary of D103928: [IR] make -warn-frame-size into a module attr.
Tue, Jun 8, 2:35 PM · Restricted Project, Restricted Project
nickdesaulniers requested review of D103928: [IR] make -warn-frame-size into a module attr.
Tue, Jun 8, 2:35 PM · Restricted Project, Restricted Project
nickdesaulniers committed rG3787ee457173: reland [IR] make -stack-alignment= into a module attr (authored by nickdesaulniers).
reland [IR] make -stack-alignment= into a module attr
Tue, Jun 8, 11:00 AM
nickdesaulniers closed D103048: [IR] make -stack-alignment= into a module attr.
Tue, Jun 8, 10:59 AM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103048: [IR] make -stack-alignment= into a module attr.

I've retested with all backends enabled; all green now. Changes added to:

  • llvm/lib/Target/Mips/MipsCallLowering.cpp
  • llvm/lib/Target/Mips/MipsTargetMachine.cpp
  • llvm/test/CodeGen/Mips/stack-alignment.ll
Tue, Jun 8, 10:55 AM · Restricted Project, Restricted Project
nickdesaulniers updated the diff for D103048: [IR] make -stack-alignment= into a module attr.
  • fixes for MIPS
Tue, Jun 8, 10:50 AM · Restricted Project, Restricted Project
nickdesaulniers planned changes to D103048: [IR] make -stack-alignment= into a module attr.
Tue, Jun 8, 8:56 AM · Restricted Project, Restricted Project
nickdesaulniers reopened D103048: [IR] make -stack-alignment= into a module attr.
Tue, Jun 8, 8:56 AM · Restricted Project, Restricted Project
nickdesaulniers added a reverting change for rG433c8d950cb3: [IR] make -stack-alignment= into a module attr: rGa596b54d471c: Revert "[IR] make -stack-alignment= into a module attr".
Tue, Jun 8, 8:56 AM
nickdesaulniers committed rGa596b54d471c: Revert "[IR] make -stack-alignment= into a module attr" (authored by nickdesaulniers).
Revert "[IR] make -stack-alignment= into a module attr"
Tue, Jun 8, 8:56 AM
nickdesaulniers added a reverting change for D103048: [IR] make -stack-alignment= into a module attr: rGa596b54d471c: Revert "[IR] make -stack-alignment= into a module attr".
Tue, Jun 8, 8:56 AM · Restricted Project, Restricted Project
nickdesaulniers added a comment to rG433c8d950cb3: [IR] make -stack-alignment= into a module attr.

buildbots reporting this broke the mips build, looking into a fix now.

Tue, Jun 8, 8:48 AM
nickdesaulniers committed rG433c8d950cb3: [IR] make -stack-alignment= into a module attr (authored by nickdesaulniers).
[IR] make -stack-alignment= into a module attr
Tue, Jun 8, 8:31 AM
nickdesaulniers closed D103048: [IR] make -stack-alignment= into a module attr.
Tue, Jun 8, 8:31 AM · Restricted Project, Restricted Project
nickdesaulniers updated the summary of D103048: [IR] make -stack-alignment= into a module attr.
Tue, Jun 8, 8:20 AM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103048: [IR] make -stack-alignment= into a module attr.

Thanks for the review!

Tue, Jun 8, 8:19 AM · Restricted Project, Restricted Project
nickdesaulniers updated the summary of D103048: [IR] make -stack-alignment= into a module attr.
Tue, Jun 8, 8:16 AM · Restricted Project, Restricted Project

Mon, Jun 7

nickdesaulniers updated the diff for D103048: [IR] make -stack-alignment= into a module attr.
  • remove test for module without module attr
Mon, Jun 7, 4:05 PM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103851: [IR] make a new ModFlagBehavior that errors when a module attribute is missing.

See also: https://reviews.llvm.org/D103048#2804089

Mon, Jun 7, 3:49 PM · Restricted Project, Restricted Project
nickdesaulniers added inline comments to D103048: [IR] make -stack-alignment= into a module attr.
Mon, Jun 7, 3:48 PM · Restricted Project, Restricted Project
nickdesaulniers abandoned D103851: [IR] make a new ModFlagBehavior that errors when a module attribute is missing.

Not planning on shipping this, just a demonstration.

Mon, Jun 7, 3:48 PM · Restricted Project, Restricted Project
nickdesaulniers removed a reviewer for D103851: [IR] make a new ModFlagBehavior that errors when a module attribute is missing: deadalnix.
Mon, Jun 7, 3:48 PM · Restricted Project, Restricted Project
nickdesaulniers requested review of D103851: [IR] make a new ModFlagBehavior that errors when a module attribute is missing.
Mon, Jun 7, 3:47 PM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103048: [IR] make -stack-alignment= into a module attr.

Curiously, using ModFlagBehavior::Error doesn't error if one of two modules being linked together doesn't have such a module level attribute.

Yeah, there's a Require behavior, but that only allows you to specify what the value should be after linking modules. Barring changing the behavior of Error, which I'm guessing is relied upon too many places, the main thing I can think of is to add a new module flag behavior with tbd name that is essentially like Error but treats a module without the module flag as having a conflicting value and issues an error for that as well.

Mon, Jun 7, 1:59 PM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103184: [AArch64] handle -Wa,-march=.

This breaks tests on arm macs: http://45.33.8.238/macm1/10931/step_7.txt

Mon, Jun 7, 1:05 PM · Restricted Project

Fri, Jun 4

nickdesaulniers accepted D103184: [AArch64] handle -Wa,-march=.

That looks better, thanks @jcai19 . Based on @DavidSpickett 's LGTM I think this is now ready to land.

Fri, Jun 4, 12:33 PM · Restricted Project
nickdesaulniers requested changes to D103184: [AArch64] handle -Wa,-march=.
Fri, Jun 4, 10:25 AM · Restricted Project

Thu, Jun 3

nickdesaulniers accepted D103184: [AArch64] handle -Wa,-march=.

LGTM; any additional thoughts @DavidSpickett ?

Thu, Jun 3, 10:38 AM · Restricted Project
nickdesaulniers added a comment to D84940: [JumpThreading] Conditionally freeze its condition when unfolding select.

Please see: https://bugs.llvm.org/show_bug.cgi?id=50573.

Thu, Jun 3, 10:21 AM · Restricted Project
nickdesaulniers added a comment to D76483: [DivRemPairs] Freeze operands if they can be undef values.

Please see: https://bugs.llvm.org/show_bug.cgi?id=50573.

Thu, Jun 3, 10:21 AM · Restricted Project
nickdesaulniers added a comment to D77524: [TargetPassConfig] Add CanonicalizeFreezeInLoops before LSR.

https://bugs.llvm.org/show_bug.cgi?id=50440 was filed as a response to this. Since it doesn't look like we'll be able to fix forward quickly and clang 12.0.1 is about to release, I've filed https://bugs.llvm.org/show_bug.cgi?id=50573 to revert this from the main and release/12.x branches.

Thu, Jun 3, 10:07 AM · Restricted Project

Wed, Jun 2

nickdesaulniers added inline comments to D103184: [AArch64] handle -Wa,-march=.
Wed, Jun 2, 3:47 PM · Restricted Project

Tue, Jun 1

nickdesaulniers abandoned D97971: [IPSCCP] don't propagate constant in section when caller/callee sections mismatch.

I don't plan to pursue this further: https://github.com/ClangBuiltLinux/linux/issues/1302#issuecomment-807260475.

Tue, Jun 1, 4:02 PM · Restricted Project
nickdesaulniers added inline comments to D103184: [AArch64] handle -Wa,-march=.
Tue, Jun 1, 2:39 PM · Restricted Project
nickdesaulniers added a comment to D103028: [clang][ARM] Remove arm2/3/6/7m CPU names.

I found some discussion at https://patchwork.kernel.org/project/linux-arm-kernel/patch/20180930024904.14240-1-Jason@zx2c4.com/ . Apparently, the kernel is actually intentionally building for "ARMv3M" by default,

Tue, Jun 1, 11:41 AM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103120: LTO: Export functions referenced by non-canonical CFI jump tables.

Is this related to b/158034873 or another reported bug?

Tue, Jun 1, 11:05 AM · Restricted Project
nickdesaulniers added a reviewer for D103120: LTO: Export functions referenced by non-canonical CFI jump tables: tejohnson.
Tue, Jun 1, 11:05 AM · Restricted Project
nickdesaulniers added a comment to D103028: [clang][ARM] Remove arm2/3/6/7m CPU names.

@nickdesaulniers Can you confirm whether the kernel CI report you got was intentionally setting armv3m? If the build isn't setting an mcpu then removing the CPUs won't actually break it, though what it generates likely wouldn't run correctly.

Tue, Jun 1, 11:03 AM · Restricted Project, Restricted Project
nickdesaulniers added a comment to D103043: [Internalize] Rename instead of removal if a to-be-internalized comdat has more than one member.

This seems to be causing some build breakage for us when building with thinLTO+PGO: https://github.com/ClangBuiltLinux/linux/issues/1388.

Tue, Jun 1, 10:52 AM · Restricted Project
nickdesaulniers added a comment to D103048: [IR] make -stack-alignment= into a module attr.

bumping for review (or suggestions of additional reviewers)

Tue, Jun 1, 9:50 AM · Restricted Project, Restricted Project

Thu, May 27

nickdesaulniers added a comment to rG51d334a845a0: [NFCI] Lazily evaluate SCEVs of PHIs.

NFCI? Reportedly causing boot failures in https://github.com/ClangBuiltLinux/linux/issues/1385.

Thu, May 27, 3:07 PM

Mon, May 24

nickdesaulniers requested review of D103048: [IR] make -stack-alignment= into a module attr.
Mon, May 24, 2:28 PM · Restricted Project, Restricted Project
nickdesaulniers committed rG7cd07d339022: fix up test from D102742 (authored by nickdesaulniers).
fix up test from D102742
Mon, May 24, 12:09 PM
nickdesaulniers accepted D103036: [cfe][inline-asm] Support target-specific escaped character in inline asm.

LGTM; please fix up minor nits. Thanks for the patch!

Mon, May 24, 10:17 AM · Restricted Project
nickdesaulniers added inline comments to D103036: [cfe][inline-asm] Support target-specific escaped character in inline asm.
Mon, May 24, 10:16 AM · Restricted Project

Fri, May 21

nickdesaulniers added inline comments to D102742: [IR] make stack-protector-guard-* flags into module attrs.
Fri, May 21, 4:03 PM · Restricted Project, Restricted Project