tag:blogger.com,1999:blog-6116815436800125608.comments2023-06-21T05:17:23.270-04:00Elegant CBrianhttp://www.blogger.com/profile/15203200820054190447noreply@blogger.comBlogger35125tag:blogger.com,1999:blog-6116815436800125608.post-28577325683382806982020-08-06T12:33:59.221-04:002020-08-06T12:33:59.221-04:00Good post! I totally agree that IR-level tail dupl...Good post! I totally agree that IR-level tail duplication would help your use case (i.e. the contech project). But I think from a practical and LLVM maintainers' perspective, it just not worth it to maintain it in mid-end, given the fact that it mostly benefits backend optimizations, instruction scheduling to name a few.Minnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-9839205046534592532020-05-18T11:39:41.080-04:002020-05-18T11:39:41.080-04:00Apparently LLVM used to have tail duplication but ...Apparently LLVM used to have tail duplication but it was removed circa 2011 with discussion at the time.<br /><br />"Remove the old tail duplication pass. It is not used and is unable to update<br />ssa, so it has to be run really early in the pipeline. Any replacement<br />should probably use the SSAUpdater."<br /><br />http://lists.llvm.org/pipermail/llvm-commits/Week-of-Mon-20110829/127208.html<br /><br />Still, I'm surprised that it isn't available for O3 optimizations: optimizations that take longer to perform or that may generate larger code (in an attempt to make the program run faster).<br /><br />Anyways, Apple added it to their B3 (non LLVM) JIT and claim a >2% win:<br /><br />https://webkit.org/blog/5852/introducing-the-b3-jit-compiler/Chris Searsnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-54509311361310130702020-05-02T09:13:11.070-04:002020-05-02T09:13:11.070-04:00Doing this in the IR provided new opportunities fo...Doing this in the IR provided new opportunities for <a href="https://github.com/bprail/contech" rel="nofollow">my instrumentation</a>; however, measurements showed that it only impacted a small fraction of cases. It could be useful, but not for the benchmarks that I was using.Brianhttps://www.blogger.com/profile/15203200820054190447noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-72433365163419854302020-05-01T12:07:01.388-04:002020-05-01T12:07:01.388-04:00So this was investigating tail duplication in IR r...So this was investigating tail duplication in IR rather than later in backend with the TailDuplicator pass. Was there a benefit?Unknownhttps://www.blogger.com/profile/06586334509553334314noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-46396656687134867352020-04-12T20:24:28.448-04:002020-04-12T20:24:28.448-04:00@kirchki, this was a long time ago. The instrumen...@kirchki, this was a long time ago. The instrumentation system I used had 100% overhead. gprof also has a similar level of overhead from its instrumentation.Brianhttps://www.blogger.com/profile/15203200820054190447noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-55703799953012882552020-04-12T19:18:31.582-04:002020-04-12T19:18:31.582-04:00Having callbacks for each function would mean a 10...Having callbacks for each function would mean a 100% overhead. But, how can you claim that the performance hit is 50% or worse?kirchkihttps://www.blogger.com/profile/17795562157882353970noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-78031059949274521582019-05-02T01:53:11.080-04:002019-05-02T01:53:11.080-04:00This comment has been removed by a blog administrator.divyahttps://www.blogger.com/profile/05112699504948370010noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-38214248241424616872019-01-02T01:28:37.514-05:002019-01-02T01:28:37.514-05:00Nice article. This article is very informative abo...Nice article. This article is very informative about NASA.Glory Pachnandahttps://cprogramming112.blogspot.comnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-50667635460425175332018-11-27T02:47:40.261-05:002018-11-27T02:47:40.261-05:00Thats why it is usfull in os development :)Thats why it is usfull in os development :)normen parkerhttps://www.blogger.com/profile/17689671331357313675noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-9211871106322192822018-08-23T11:02:35.809-04:002018-08-23T11:02:35.809-04:00This comment has been removed by a blog administrator.sumanhttps://www.blogger.com/profile/02683678626796708367noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-85331747656569451392018-08-23T10:56:39.882-04:002018-08-23T10:56:39.882-04:00This comment has been removed by a blog administrator.https://www.welookups.comnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-36235232430179990012018-08-23T10:54:13.772-04:002018-08-23T10:54:13.772-04:00This comment has been removed by a blog administrator.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-150956601910622682017-10-25T08:01:22.034-04:002017-10-25T08:01:22.034-04:00This comment has been removed by a blog administrator.Tanvihttps://www.blogger.com/profile/10130850099135062525noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-38559785538152635392016-09-22T20:20:04.809-04:002016-09-22T20:20:04.809-04:00Nice experiment. What I'd be curious about nex...Nice experiment. What I'd be curious about next is if the child program actually makes progress after kill() returns, or is the elapsed time just the delay for wait time + kernel (i.e., that the child process is not scheduled when the signal is generated, so there is a delay until the next time it gets scheduled). I'm not sure if there's any good way to measure this without putting instrumentation in the kernel itself, though... ??Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-46721171190084888652015-04-29T10:10:45.963-04:002015-04-29T10:10:45.963-04:00For a parallel programming course, my point is tha...For a parallel programming course, my point is that I think it should focus on one language / paradigm. If I knew Go or Rust, I might use one of them as the main language. Now this fall teaching Programming Languages, I plan to focus on the features of a handful of example languages, perhaps Go or Rust will come up in that context.Brianhttps://www.blogger.com/profile/15203200820054190447noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-54190808676165459012015-04-29T09:29:24.122-04:002015-04-29T09:29:24.122-04:00I'm curious what your take on languages like G...I'm curious what your take on languages like Go or Rust in the context of a classroom experience might be?Anonymoushttps://www.blogger.com/profile/12325722826445070048noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-31077509552401199352015-04-03T19:31:46.366-04:002015-04-03T19:31:46.366-04:00This sound like a really cool opportunity. I look ...This sound like a really cool opportunity. I look forward to see where it goes!<br /><br />[Bad joke warning]<br />To N-finity, and beyondAnonymoushttps://www.blogger.com/profile/12325722826445070048noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-68333564124383993202014-09-25T23:56:30.223-04:002014-09-25T23:56:30.223-04:00I have a time frame in mind, but I also am looking...I have a time frame in mind, but I also am looking for jobs in academia. And with industry positions as the backup option next spring / summer.Brianhttps://www.blogger.com/profile/15203200820054190447noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-6707097804227875212014-09-25T23:05:08.159-04:002014-09-25T23:05:08.159-04:00Yes, I realize that. I was just wondering if you ...Yes, I realize that. I was just wondering if you were operating within a time frame. We get referral bonuses, you know ;)Sarahnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-84868216224276413262014-09-24T17:10:57.811-04:002014-09-24T17:10:57.811-04:00As a PhD student, I am always thinking about gradu...As a PhD student, I am always thinking about graduating. Always thinking about my thesis and proposal, and paper submissions, and committee members.Brianhttps://www.blogger.com/profile/15203200820054190447noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-80233058572384267342014-09-24T17:05:55.286-04:002014-09-24T17:05:55.286-04:00Ooo, does this mean you're thinking about grad...Ooo, does this mean you're thinking about graduating?<br /><br />And blogger does not appear to like me very much. I tried to leave a comment earlier and blogger kept hanging!Sarahhttp://sktyler.comnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-44558615562374513322014-03-06T07:39:42.786-05:002014-03-06T07:39:42.786-05:00(Since I cannot edit my previous comment) At least...(Since I cannot edit my previous comment) At least, goto is not inherently the problem!Anonymoushttps://www.blogger.com/profile/12325722826445070048noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-58329513605452171962014-03-06T07:37:20.018-05:002014-03-06T07:37:20.018-05:00GnuTLS also had a vulnerability this week found ne...GnuTLS also had a vulnerability this week found near a goto, and the internet once again cried foul - proximity also apparently now implies causality. Threatpost did a <a href="http://threatpost.com/goto-aside-gnutls-and-apple-bugs-are-not-the-same/104626" rel="nofollow">write up about how the two were different</a> and how in both cases goto wasn't the problem.Anonymoushttps://www.blogger.com/profile/12325722826445070048noreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-88407922834784034432014-03-03T16:33:42.315-05:002014-03-03T16:33:42.315-05:00I've done that too (use a return statement to ...I've done that too (use a return statement to temporarily alter code flow when debugging.) Do it often enough and eventually you'll accidentally leave a debugging return somewhere unintentionally.<br /><br />I usually set a boolean flag: "if (DEBUGGING) {return;}" No compiler warnings, and no change to flow when DEBUGGING = false if I forget to remove every last testing block. Better: remove the flag declaration and your code won't compile if you've left a testing block somewhere.<br /><br />I stand by my check engine light analogy. ;)Sarahhttp://sktyler.comnoreply@blogger.comtag:blogger.com,1999:blog-6116815436800125608.post-34734465054060781322014-03-03T12:56:01.799-05:002014-03-03T12:56:01.799-05:00One could also note that while Apple is now using ...One could also note that while Apple is now using Clang / LLVM rather than gcc, clang tries to be compatible with gcc's way of doing things. This had the result here of not including unreachable code warnings, even with -Wall. Although, there are separate discussions as to whether the compiler should warn about unreachable code; as for instance, programmers (including myself) will disable a block of code with a return statement, etc and this would give warnings.Brianhttps://www.blogger.com/profile/15203200820054190447noreply@blogger.com