Upgrade to clang 17.0.2 now that it has been released

This gets us a CUDA upgrade in clang-cuda

Change-Id: Ibb179c36043f4652001d38c1bc5840099fc05d07
Signed-off-by: Austin Schuh <austin.linux@gmail.com>
diff --git a/WORKSPACE b/WORKSPACE
index 0c98e3f..80719a4 100644
--- a/WORKSPACE
+++ b/WORKSPACE
@@ -251,7 +251,7 @@
 
 load("@com_grail_bazel_toolchain//toolchain:rules.bzl", "llvm", "llvm_toolchain")
 
-llvm_version = "16.0.3"
+llvm_version = "17.0.2"
 
 llvm(
     name = "llvm_k8",
diff --git a/frc971/control_loops/c2d.h b/frc971/control_loops/c2d.h
index a11fed5..7c1bf81 100644
--- a/frc971/control_loops/c2d.h
+++ b/frc971/control_loops/c2d.h
@@ -51,7 +51,7 @@
   M_gain.template block<num_states, num_states>(num_states, num_states) =
       A_continuous.transpose();
 
-  Eigen::Matrix<Scalar, 2 * num_states, 2 *num_states> phi =
+  Eigen::Matrix<Scalar, 2 * num_states, 2 * num_states> phi =
       (M_gain * ::aos::time::TypedDurationInSeconds<Scalar>(dt)).exp();
 
   // Phi12 = phi[0:num_states, num_states:2*num_states]
diff --git a/frc971/control_loops/dlqr.h b/frc971/control_loops/dlqr.h
index d7af426..48e8474 100644
--- a/frc971/control_loops/dlqr.h
+++ b/frc971/control_loops/dlqr.h
@@ -74,14 +74,14 @@
   memset(BETA, 0, sizeof(BETA));
 
   long LDS = 2 * kN + kM;
-  ::Eigen::Matrix<double, 2 * kN + kM, 2 *kN + kM> S_schur =
+  ::Eigen::Matrix<double, 2 * kN + kM, 2 * kN + kM> S_schur =
       ::Eigen::Matrix<double, 2 * kN + kM, 2 * kN + kM>::Zero();
 
-  ::Eigen::Matrix<double, 2 * kN + kM, 2 *kN> T =
+  ::Eigen::Matrix<double, 2 * kN + kM, 2 * kN> T =
       ::Eigen::Matrix<double, 2 * kN + kM, 2 * kN>::Zero();
   long LDT = 2 * kN + kM;
 
-  ::Eigen::Matrix<double, 2 * kN, 2 *kN> U =
+  ::Eigen::Matrix<double, 2 * kN, 2 * kN> U =
       ::Eigen::Matrix<double, 2 * kN, 2 * kN>::Zero();
   long LDU = 2 * kN;
 
diff --git a/motors/usb/usb.h b/motors/usb/usb.h
index 1117bc8..2475220 100644
--- a/motors/usb/usb.h
+++ b/motors/usb/usb.h
@@ -95,8 +95,8 @@
 #define M_SETUP_REQUEST_TYPE_IN UINT8_C(1 << 7)
 #define G_SETUP_REQUEST_TYPE_TYPE(type) \
   static_cast<SetupRequestType>(((type) >> 5) & UINT8_C(3))
-#define G_SETUP_REQUEST_TYPE_RECIPIENT(type) ((type)&UINT8_C(0x1F))
-#define G_SETUP_REQUEST_INDEX_ENDPOINT(index) ((index)&UINT8_C(0x7F))
+#define G_SETUP_REQUEST_TYPE_RECIPIENT(type) ((type) & UINT8_C(0x1F))
+#define G_SETUP_REQUEST_INDEX_ENDPOINT(index) ((index) & UINT8_C(0x7F))
 
 // The names of the standard recipients for setup requests.
 namespace standard_setup_recipients {
diff --git a/motors/util.h b/motors/util.h
index 8e7ce1c..2669a90 100644
--- a/motors/util.h
+++ b/motors/util.h
@@ -14,12 +14,12 @@
 //
 // reg must be an address in one of the peripheral modules (on AIPS0, AIPS1, or
 // GPIO) (0x40000000 - 0x400FFFFF).
-#define PERIPHERAL_BITBAND(reg, bit)                                       \
-  (*(volatile uint32_t *)(((uint32_t) & (reg)-0x40000000) * 32 + (bit)*4 + \
+#define PERIPHERAL_BITBAND(reg, bit)                                         \
+  (*(volatile uint32_t *)(((uint32_t) & (reg)-0x40000000) * 32 + (bit) * 4 + \
                           0x42000000))
 
 #define NVIC_SET_SANE_PRIORITY(irqnum, priority) \
-  NVIC_SET_PRIORITY(irqnum, ((priority)&0xF) << 4)
+  NVIC_SET_PRIORITY(irqnum, ((priority) & 0xF) << 4)
 #define NVIC_GET_SANE_PRIORITY(irqnum) (NVIC_GET_PRIORITY(irqnum) >> 4)
 
 // A sufficient memory barrier between writing some data and telling the
@@ -60,12 +60,12 @@
 #define CAN_MCR_IRMQ ((uint32_t)(1 << 16))
 #define CAN_MCR_LPRIOEN ((uint32_t)(1 << 13))
 #define CAN_MCR_AEN ((uint32_t)(1 << 12))
-#define CAN_MCR_IDAM(n) ((uint32_t)(((n)&3) << 8))
-#define CAN_MCR_MAXMB(n) ((uint32_t)((n)&0x7F))
-#define CAN_CTRL1_PRESDIV(n) ((uint32_t)(((n)&0xFF) << 24))
-#define CAN_CTRL1_RJW(n) ((uint32_t)(((n)&3) << 22))
-#define CAN_CTRL1_PSEG1(n) ((uint32_t)(((n)&7) << 19))
-#define CAN_CTRL1_PSEG2(n) ((uint32_t)(((n)&7) << 16))
+#define CAN_MCR_IDAM(n) ((uint32_t)(((n) & 3) << 8))
+#define CAN_MCR_MAXMB(n) ((uint32_t)((n) & 0x7F))
+#define CAN_CTRL1_PRESDIV(n) ((uint32_t)(((n) & 0xFF) << 24))
+#define CAN_CTRL1_RJW(n) ((uint32_t)(((n) & 3) << 22))
+#define CAN_CTRL1_PSEG1(n) ((uint32_t)(((n) & 7) << 19))
+#define CAN_CTRL1_PSEG2(n) ((uint32_t)(((n) & 7) << 16))
 #define CAN_CTRL1_BOFFMSK ((uint32_t)(1 << 15))
 #define CAN_CTRL1_ERRMSK ((uint32_t)(1 << 14))
 #define CAN_CTRL1_CLKSRC ((uint32_t)(1 << 13))
@@ -77,7 +77,7 @@
 #define CAN_CTRL1_TSYN ((uint32_t)(1 << 5))
 #define CAN_CTRL1_LBUF ((uint32_t)(1 << 4))
 #define CAN_CTRL1_LOM ((uint32_t)(1 << 3))
-#define CAN_CTRL1_PROPSEG(n) ((uint32_t)((n)&7))
+#define CAN_CTRL1_PROPSEG(n) ((uint32_t)((n) & 7))
 #define CAN_ESR1_SYNCH ((uint32_t)(1 << 18))
 #define CAN_ESR1_TWRNINT ((uint32_t)(1 << 17))
 #define CAN_ESR1_RWRNINT ((uint32_t)(1 << 16))
@@ -96,8 +96,8 @@
 #define CAN_ESR1_ERRINT ((uint32_t)(1 << 1))
 #define CAN_ESR1_WAKINT ((uint32_t)1)
 #define CAN_CTRL2_WRMFRZ ((uint32_t)(1 << 28))
-#define CAN_CTRL2_RFFN(n) ((uint32_t)(((n)&0xF) << 24))
-#define CAN_CTRL2_TASD(n) ((uint32_t)(((n)&0x1F) << 19))
+#define CAN_CTRL2_RFFN(n) ((uint32_t)(((n) & 0xF) << 24))
+#define CAN_CTRL2_TASD(n) ((uint32_t)(((n) & 0x1F) << 19))
 #define CAN_CTRL2_MRP ((uint32_t)(1 << 18))
 #define CAN_CTRL2_RRS ((uint32_t)(1 << 17))
 #define CAN_CTRL2_EACEN ((uint32_t)(1 << 16))
@@ -114,13 +114,13 @@
 #define CAN0_RXIMRS ((volatile uint32_t *)0x40024880)
 #define CAN1_MESSAGES ((volatile CanMessageBuffer *)0x400A4080)
 #define CAN1_RXIMRS ((volatile uint32_t *)0x400A4880)
-#define CAN_MB_CONTROL_INSERT_DLC(dlc) ((uint32_t)(((dlc)&0xF) << 16))
+#define CAN_MB_CONTROL_INSERT_DLC(dlc) ((uint32_t)(((dlc) & 0xF) << 16))
 #define CAN_MB_CONTROL_EXTRACT_DLC(control_timestamp) \
   ((control_timestamp >> 16) & 0xF)
 #define CAN_MB_CONTROL_RTR ((uint32_t)(1 << 20))
 #define CAN_MB_CONTROL_IDE ((uint32_t)(1 << 21))
 #define CAN_MB_CONTROL_SRR ((uint32_t)(1 << 22))
-#define CAN_MB_CONTROL_INSERT_CODE(n) ((uint32_t)(((n)&0xF) << 24))
+#define CAN_MB_CONTROL_INSERT_CODE(n) ((uint32_t)(((n) & 0xF) << 24))
 #define CAN_MB_CONTROL_EXTRACT_CODE(n) ((uint32_t)(((n) >> 24) & 0xF))
 #define CAN_MB_CONTROL_CODE_BUSY_MASK CAN_MB_CONTROL_INSERT_CODE(1)
 #define CAN_MB_PRIO_ID_PRIORITY_MASK ((uint32_t)((1 << 29) - 1))
@@ -134,7 +134,7 @@
 #define CAN_MB_CODE_TX_DATA 0xC
 #define CAN_MB_CODE_TX_REMOTE 0xC
 #define CAN_MB_CODE_TX_TANSWER 0xE
-#define CAN_MB_CODE_IS_BUSY(code) ((code)&1)
+#define CAN_MB_CODE_IS_BUSY(code) ((code) & 1)
 
 // We have to define these, and leave them defined, because the C preprocessor
 // is annoying...
@@ -147,7 +147,7 @@
 #define dma_chN_isr(n) DO_CONCATENATE(dma_ch, n, _isr)
 #define IRQ_DMA_CHn(n) DO_CONCATENATE(IRQ_DMA, _CH, n)
 
-#define USB0_ENDPTn(n) (*(volatile uint8_t *)(0x400720C0 + ((n)*4)))
+#define USB0_ENDPTn(n) (*(volatile uint8_t *)(0x400720C0 + ((n) * 4)))
 
 // TODO(Brian): Just write the structs out, and do all this in kinetis.h.
 #define ALL_FTM_REGISTERS         \
diff --git a/third_party/bazel-toolchain/toolchain/internal/llvm_distributions.bzl b/third_party/bazel-toolchain/toolchain/internal/llvm_distributions.bzl
index 031f4cf..a6b6f5c 100644
--- a/third_party/bazel-toolchain/toolchain/internal/llvm_distributions.bzl
+++ b/third_party/bazel-toolchain/toolchain/internal/llvm_distributions.bzl
@@ -274,9 +274,41 @@
     "clang+llvm-16.0.3-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "638d32fd0032f99bafaab3bae63a406adb771825a02b6b7da119ee7e71af26c6",
 
     # 16.0.4
+    "clang+llvm-16.0.4-aarch64-linux-gnu.tar.xz": "2e0b5b20d21ff80dea9f31d3f7636e458028ad0d5ee0bda42608fa8744ea3a12",
     "clang+llvm-16.0.4-amd64-unknown-freebsd13.tar.xz": "cf9d73bcf05b8749c7f3efbe86654b8fe0209f28993eafe26c27eb85885593f7",
     "clang+llvm-16.0.4-arm64-apple-darwin22.0.tar.xz": "429b8061d620108fee636313df55a0602ea0d14458c6d3873989e6b130a074bd",
+    "clang+llvm-16.0.4-armv7a-linux-gnueabihf.tar.xz": "e3fafbb5813650cdbfb191005fa8a7b1f036fbadff171e05b32d06015e1feb46",
+    "clang+llvm-16.0.4-powerpc64-ibm-aix-7.2.tar.xz": "af8691731ddd4142c53d9aeb2ad2c4281f4ca9819c5630e7ccade40f39dc4ee5",
+    "clang+llvm-16.0.4-powerpc64le-linux-rhel-8.4.tar.xz": "fe99951300ae7f1877f00531dc5a2f5f00572fa236be6d1323902ea6aeb0a496",
     "clang+llvm-16.0.4-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "fd464333bd55b482eb7385f2f4e18248eb43129a3cda4c0920ad9ac3c12bdacf",
+
+    # 16.0.5
+    "clang+llvm-16.0.5-aarch64-linux-gnu.tar.xz": "c427d4fa5cd21a11d9fea55ae60ad2e7230ad8411f7a0dea867273f2a1b74891",
+    "clang+llvm-16.0.5-amd64-unknown-freebsd13.tar.xz": "c52d693584d4f86d972acb52be5d14d13ccd815c68ca22114e46829219da3734",
+    "clang+llvm-16.0.5-arm64-apple-darwin22.0.tar.xz": "1aed0787417dd915f0101503ce1d2719c8820a2c92d4a517bfc4044f72035bcc",
+    "clang+llvm-16.0.5-powerpc64-ibm-aix-7.2.tar.xz": "5649575b499deff1470dd1f3baacbee445bf2789de266135d81024572efc54f0",
+    "clang+llvm-16.0.5-powerpc64le-linux-rhel-8.7.tar.xz": "8f2588dabcc2515e860733c2001fb81774aa2d2bccad153f064cfb886df2d065",
+
+    # 16.0.6
+    "clang+llvm-16.0.6-aarch64-linux-gnu.tar.xz": "283e904048425f05798a98f1b288ae0d28ce75eb1049e0837f959e911369945b",
+    "clang+llvm-16.0.6-powerpc64le-linux-rhel-8.7.tar.xz": "1f8d73c342efc82618bd8d58fa8855bc7e70bd2a6ed9646065aabfa4b468e82d",
+
+    # 17.0.1
+    "clang+llvm-17.0.1-aarch64-linux-gnu.tar.xz": "d2eaca72ce3aab0b343e01b2233303628ff43a43a6107dca1aa8d3039da847f5",
+    "clang+llvm-17.0.1-amd64-pc-solaris2.11.tar.xz": "153b8b650705390cc3b4ff739b061f5bff87542531c002c039d52c00781559f7",
+    "clang+llvm-17.0.1-arm64-apple-darwin22.0.tar.xz": "d5678bc475c42c3ab7c0ee35ebd95534d81b6816507cfc9e42d86136d8315ebc",
+    "clang+llvm-17.0.1-final_powerpc64-ibm-aix-7.2.tar.xz": "f5d9bf5822a775d4b10e7af035076e1779983dee1b05b3f57af2674231bcf678",
+    "clang+llvm-17.0.1-powerpc64le-linux-rhel-8.8.tar.xz": "937394cd44c5eb81aae8d1c66b6d3b930ebd2b013ac6493d17f33f5083281d37",
+    "clang+llvm-17.0.1-sparc64-unknown-linux-gnu.tar.xz": "0ab5f6a9b19ec968628d987d9430a033801c78bee65fbf40c72da660ff401f4d",
+    "clang+llvm-17.0.1-sparcv9-sun-solaris2.11.tar.xz": "a69d47bb1397766a87fcdef28260fc664fdf9b6e1f7c56792939baf8513c1694",
+
+    # 17.0.2
+    "clang+llvm-17.0.2-aarch64-linux-gnu.tar.xz": "b08480f2a77167556907869065b0e0e30f4d6cb64ecc625d523b61c22ff0200f",
+    "clang+llvm-17.0.2-amd64-pc-solaris2.11.tar.xz": "8e98c6015202575407f5580bed9a9b58d3bdc3e5d64e39289189b491949b957f",
+    "clang+llvm-17.0.2-powerpc64-ibm-aix-7.2.tar.xz": "c0175b48bf72c621316f3fc7ec4662163d4e17718b179f967d75149d7cfeee80",
+    "clang+llvm-17.0.2-sparc64-unknown-linux-gnu.tar.xz": "950d1ef440f17e29c4201450ad619d3b4a37a0bbf15f19ce03195e0b4da7d73f",
+    "clang+llvm-17.0.2-sparcv9-sun-solaris2.11.tar.xz": "3702914668b5758817374271fa8a41fe67c77b2e86f17706c9d6906f250de6ae",
+    "clang+llvm-17.0.2-x86_64-linux-gnu-ubuntu-22.04.tar.xz": "df297df804766f8fb18f10a188af78e55d82bb8881751408c2fa694ca19163a8",
 }
 
 # Note: Unlike the user-specified llvm_mirror attribute, the URL prefixes in
@@ -307,6 +339,10 @@
     "16.0.2": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
     "16.0.3": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
     "16.0.4": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
+    "16.0.5": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
+    "16.0.6": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
+    "17.0.1": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
+    "17.0.2": "https://github.com/llvm/llvm-project/releases/download/llvmorg-",
 }
 
 def _get_auth(ctx, urls):
diff --git a/y2020/vision/sift/fast_gaussian_halide_generator.sh b/y2020/vision/sift/fast_gaussian_halide_generator.sh
index cf094b8..560e54f 100755
--- a/y2020/vision/sift/fast_gaussian_halide_generator.sh
+++ b/y2020/vision/sift/fast_gaussian_halide_generator.sh
@@ -43,12 +43,12 @@
   -isystem"${SYSROOT}/usr/include/c++/10" \
   -isystem"${SYSROOT}/usr/include/${MULTIARCH}/c++/10" \
   -isystem"${SYSROOT}/usr/include/c++/7/backward" \
-  -isystem"${LLVM_TOOLCHAIN}/lib/clang/16/include" \
+  -isystem"${LLVM_TOOLCHAIN}/lib/clang/17/include" \
   -isystem"${SYSROOT}/usr/include/${MULTIARCH}" \
   -isystem"${SYSROOT}/usr/include" \
   -isystem"${SYSROOT}/include" \
   "--sysroot=${SYSROOT}" \
-  -resource-dir "${LLVM_TOOLCHAIN}/lib/clang/16" \
+  -resource-dir "${LLVM_TOOLCHAIN}/lib/clang/17" \
   -target "${TARGET}" \
   -fuse-ld=lld \
   -L"${LLVM_TOOLCHAIN}/lib" \
diff --git a/y2023/vision/target_mapping.cc b/y2023/vision/target_mapping.cc
index e4099b3..18383af 100644
--- a/y2023/vision/target_mapping.cc
+++ b/y2023/vision/target_mapping.cc
@@ -362,16 +362,18 @@
   cv::cv2eigen(extrinsics_cv, extrinsics_matrix);
   const auto extrinsics = Eigen::Affine3d(extrinsics_matrix);
 
-  mapping_event_loop->MakeWatcher("/camera", [=](const TargetMap &map) {
-    aos::distributed_clock::time_point pi_distributed_time =
-        reader_->event_loop_factory()
-            ->GetNodeEventLoopFactory(mapping_event_loop->node())
-            ->ToDistributedClock(aos::monotonic_clock::time_point(
-                aos::monotonic_clock::duration(map.monotonic_timestamp_ns())));
+  mapping_event_loop->MakeWatcher(
+      "/camera", [this, mapping_event_loop, extrinsics](const TargetMap &map) {
+        aos::distributed_clock::time_point pi_distributed_time =
+            reader_->event_loop_factory()
+                ->GetNodeEventLoopFactory(mapping_event_loop->node())
+                ->ToDistributedClock(aos::monotonic_clock::time_point(
+                    aos::monotonic_clock::duration(
+                        map.monotonic_timestamp_ns())));
 
-    std::string node_name = mapping_event_loop->node()->name()->str();
-    HandleAprilTags(map, pi_distributed_time, node_name, extrinsics);
-  });
+        std::string node_name = mapping_event_loop->node()->name()->str();
+        HandleAprilTags(map, pi_distributed_time, node_name, extrinsics);
+      });
 }
 
 void TargetMapperReplay::MaybeSolve() {