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 / log.txt
Created June 25, 2015 13:57
Single bit flip in system header.
make[1]: Entering directory `/home/buildslave/slave_as-bldslv2/clang-native-arm-cortex-a9/llvm.obj/lib/Support'
llvm[1]: Compiling APFloat.cpp for Release+Asserts build
llvm[1]: Compiling APInt.cpp for Release+Asserts build
In file included from /usr/include/c++/4.8/ios:42:0,
from /usr/include/c++/4.8/ostream:38,
from /usr/include/c++/4.8/iterator:64,
from /home/buildslave/slave_as-bldslv2/clang-native-arm-cortex-a9/llvm.src/include/llvm/ADT/SmallVector.h:28,
from /home/buildslave/slave_as-bldslv2/clang-native-arm-cortex-a9/llvm.src/include/llvm/ADT/ArrayRef.h:14,
from /home/buildslave/slave_as-bldslv2/clang-native-arm-cortex-a9/llvm.src/include/llvm/ADT/APInt.h:19,
from /home/buildslave/slave_as-bldslv2/clang-native-arm-cortex-a9/llvm.src/include/llvm/ADT/APFloat.h:20,
diff --git a/lib/Format/ContinuationIndenter.h b/lib/Format/ContinuationIndenter.h
index 2b33f5b..1d88d05 100644
--- a/lib/Format/ContinuationIndenter.h
+++ b/lib/Format/ContinuationIndenter.h
@@ -228,37 +228,22 @@ struct ParenState {
bool ObjCSelectorNameFound;
bool operator<(const ParenState &Other) const {
- if (Indent != Other.Indent)
- return Indent < Other.Indent;
#include <stdlib.h>
enum E { A, B };
int foo(enum E x) {
switch (x) {
case A:
return 42;
case B:
return 23;
}
@d0k
d0k / test_lint.py
Created February 11, 2014 17:28
LLVM test linter
#!/usr/bin/env python
import os
import re
import sys
comments = [";", "//", "#"]
fileendings = re.compile("\.(ll|cpp|c)$")
prefixcheck = re.compile("-check-prefix[ =]([A-Za-z0-9_.\-]*)")
placeholders = re.compile("%[sStTp]")
@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: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
@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.