Skip to content

Instantly share code, notes, and snippets.

View d0k's full-sized avatar

Benjamin Kramer d0k

View GitHub Profile
@d0k
d0k / crash.cpp
Created November 23, 2022 18:35
cf624b23bc5d5a6161706d1663def49380ff816a reproducer
// RUN: clang -target aarch64-linux-gnu -O2 crash.cpp
template <class d> struct g { using e = d; };
template <bool, class f, class> using aa = g<f>::e;
enum { ab };
struct i {
enum { ac, h };
};
struct m {
enum { j };
};
@d0k
d0k / gist:3608547
Last active February 21, 2022 23:34
clang warning flags
-W
-Wextra
-Wmissing-field-initializers
-Wignored-qualifiers
-Winitializer-overrides
-Wsemicolon-before-method-body
-Wmissing-method-return-type
-Wsign-compare
-Wunused-parameter
-W#pragma-messages
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
const char *boyer_moore_horspool(const char *h, size_t hlen,
const char *n, size_t nlen) {
const unsigned char *haystack = (const unsigned char *)h;
const unsigned char *needle = (const unsigned char *)n;
@d0k
d0k / wtab.c
Created January 2, 2009 17:50
C program to generate LaTeX truth tables
/* ./wtab n
* creates a truth table for LaTeX with n bits
*/
#include <stdio.h>
#include <stdlib.h>
#define SIZE unsigned long
#define MAXBITS sizeof(SIZE)*8-1
@d0k
d0k / keynotepng.rb
Created October 19, 2008 20:37
ruby script to convert images inside keynote 4 bundles to PNG
#!/usr/bin/env ruby -w
# Converts images inside keynote bundles to PNG
# We need RMagick with tiff support installed
# You may get libtiff from macports
# and RMagick from rubygems
# Licensed under GPLv3
require 'rubygems'
@d0k
d0k / depgraph.c
Created March 19, 2013 15:09
libclang program to print the header files that are referenced by a call in a TU.
/* clang depgraph.c -o depgraph -I tools/clang/include -lclang */
#include "clang-c/Index.h"
#include <stdio.h>
static enum CXChildVisitResult
visitor(CXCursor cursor, CXCursor parent, CXClientData client_data) {
enum CXCursorKind kind = clang_getCursorKind(cursor);
CXFile tu_file = (CXFile *)client_data;
CXFile in_file, from_file;
unsigned line, column, offset;
diff --git a/lib/Target/X86/X86InstrCompiler.td b/lib/Target/X86/X86InstrCompiler.td
index f387962..29ce597 100644
--- a/lib/Target/X86/X86InstrCompiler.td
+++ b/lib/Target/X86/X86InstrCompiler.td
@@ -1089,6 +1089,7 @@ multiclass CMOVmr<PatLeaf InvertedCond, Instruction Inst16, Instruction Inst32,
(Inst64 GR64:$src2, addr:$src1)>;
}
+let Predicates = [HasCMov] in {
defm : CMOVmr<X86_COND_B , CMOVAE16rm, CMOVAE32rm, CMOVAE64rm>;
diff --git a/tools/scan-build/ccc-analyzer b/tools/scan-build/ccc-analyzer
index 216dc9d..51f5097 100755
--- a/tools/scan-build/ccc-analyzer
+++ b/tools/scan-build/ccc-analyzer
@@ -569,6 +569,12 @@ foreach (my $i = 0; $i < scalar(@ARGV); ++$i) {
push @CompileOpts,$Arg;
next;
}
+
+ if ($Arg =~ /^-stdlib=/) {
@d0k
d0k / gist:3276987
Created August 6, 2012 17:35
c-ray inliner fix
diff --git a/lib/Analysis/InlineCost.cpp b/lib/Analysis/InlineCost.cpp
index a6bf4a8..8e7377d 100644
--- a/lib/Analysis/InlineCost.cpp
+++ b/lib/Analysis/InlineCost.cpp
@@ -797,9 +797,30 @@ bool CallAnalyzer::analyzeCall(CallSite CS) {
FiftyPercentVectorBonus = Threshold;
TenPercentVectorBonus = Threshold / 2;
- // Subtract off one instruction per call argument as those will be free after
- // inlining.
commit 99ea7d9b3d64c51694b8cc35c6bd25b4945ab0c2
Author: Benjamin Kramer <benny.kra@gmail.com>
Date: Wed Apr 25 12:39:50 2012 +0200
X86: Turn cmovs into branches when profitable.
This came up when a change in block placement formed a cmov and slowed down a
hot loop by 50%:
ucomisd (%rdi), %xmm0