Author: regehr

  • The Future of Compiler Optimization

    Also see The Future of Compiler Correctness. Compiler optimizations are great: developers can write intuitive code in high-level languages, and still have them execute in a reasonably fast way. On the other hand, progress in optimization research is excruciatingly slow despite hundreds of papers being published on the topic every year. Proebsting’s Law speculates that…

  • Poll: Do You Want Compiler Bugs to Be Quiet or Loud?

    I’m preparing a longer piece on compiler correctness but thought this idea was worth putting into its own short post. The question is: Which would you choose: A compiler that crashes more often, or one that silently generates incorrect code more often? Of course, all real compilers have bugs, and all real compilers display both…

  • Timpanogos

    At 11749′ / 3581 m, Timpanogos is the second-highest mountain in the Wasatch Range. It’s a classic Utah hike and I’d wanted to do it for years, but never managed to convince myself the extra driving was worth it when there are a couple dozen 11,000′ peaks that are closer. Basically I should have done…

  • Ten Years in Utah

    Ten years ago today Sarah and I and the cats woke up somewhere in western Kansas and drove to our rental house in Salt Lake City: A lot has happened since then — marriage, kids, tenure — but still, it’s hard to imagine that more than a quarter of our lives has been spent in…

  • Knowing When to Quit

    In industry it’s often pretty easy to know when to stop working on a project: you might get moved off the project, it might get canceled, etc. In academia, it’s less clear: I can stop working on something after half an hour, or else I can work on basically the same idea until the end…

  • A Guide to Undefined Behavior in C and C++, Part 3

    Also see Part 1 and Part 2. A C or C++ implementation must perform side effecting operations in program order. For example, if a program executes these lines of code: printf (“Hello\n”) printf (“world.\n”); It is impermissible for the implementation to print: world. Hello This is obvious, but keep in mind that other things your…

  • Borah Peak in 30 Hours

    My colleague Dave Hanscom wanted to climb Borah Peak, Idaho’s 12,668′ high point. He had climbed this mountain once before and I’d barely even heard of it. We left Salt Lake City around 1pm on Tuesday of this week. The drive up to Mackay, ID took 4.5 hours and is classic intermountain west: wide, dry…

  • Running an Electronic Program Committee Meeting

    Computer science — at least in the areas that I work in — is conference-driven. Since journals go unread, it’s important that conference program committees make good decisions about which papers to accept. The established way to do this is to hold a program committee (PC) meeting: the entire committee holes up in a highly…

  • Is Attending Meetings a Signaling Behavior?

    Humans and other animals spend a lot of time engaging in signaling behaviors: dressing or acting in certain ways in order to send signals to others. Some signals — a peacock’s tail or a Ferrari — are expensive precisely to show that the signaling organism can afford the cost of sending the signal. Signaling can…

  • A Guide to Undefined Behavior in C and C++, Part 2

    Also see Part 1 and Part 3. When tools like the bounds checking GCC, Purify, Valgrind, etc. first showed up, it was interesting to run a random UNIX utility under them. The output of the checker showed that these utility programs, despite working perfectly well, executed a ton of memory safety errors such as use…