• Home
Name Date Size #Lines LOC

..--

ABIInfo.hD03-May-20244.9 KiB15487

Address.hD03-May-20243.3 KiB11972

Android.bpD03-May-2024106 65

BackendUtil.cppD03-May-202434.2 KiB911716

CGAtomic.cppD03-May-202474.9 KiB1,8551,420

CGBlocks.cppD03-May-202485.8 KiB2,3691,458

CGBlocks.hD03-May-20248.2 KiB278191

CGBuilder.hD03-May-202412.6 KiB303219

CGBuiltin.cppD03-May-2024335.9 KiB8,1036,973

CGCUDABuiltin.cppD03-May-20244.4 KiB11858

CGCUDANV.cppD03-May-202415 KiB368233

CGCUDARuntime.cppD03-May-20241.8 KiB5631

CGCUDARuntime.hD03-May-20242.1 KiB7436

CGCXX.cppD03-May-202412.3 KiB327196

CGCXXABI.cppD03-May-202412.1 KiB333239

CGCXXABI.hD03-May-202425.1 KiB589265

CGCall.cppD03-May-2024158.3 KiB4,1422,974

CGCall.hD03-May-20245.5 KiB179106

CGClass.cppD03-May-2024112.8 KiB3,0052,044

CGCleanup.cppD03-May-202445.4 KiB1,229767

CGCleanup.hD03-May-202419.5 KiB645412

CGDebugInfo.cppD03-May-2024143 KiB3,7742,816

CGDebugInfo.hD03-May-202425.1 KiB597302

CGDecl.cppD03-May-202469.1 KiB1,8801,245

CGDeclCXX.cppD03-May-202424.4 KiB625408

CGException.cppD03-May-202468 KiB1,9011,257

CGExpr.cppD03-May-2024165.3 KiB4,2643,116

CGExprAgg.cppD03-May-202458.3 KiB1,5761,021

CGExprCXX.cppD03-May-202475.9 KiB1,9591,314

CGExprComplex.cppD03-May-202441.9 KiB1,110818

CGExprConstant.cppD03-May-202458.5 KiB1,6341,188

CGExprScalar.cppD03-May-2024133.4 KiB3,5452,551

CGLoopInfo.cppD03-May-20249.7 KiB297240

CGLoopInfo.hD03-May-20245.5 KiB17281

CGObjC.cppD03-May-2024124.9 KiB3,3712,211

CGObjCGNU.cppD03-May-2024122.8 KiB2,9062,090

CGObjCMac.cppD03-May-2024287.5 KiB7,3264,697

CGObjCRuntime.cppD03-May-202414 KiB381241

CGObjCRuntime.hD03-May-202413.3 KiB313174

CGOpenCLRuntime.cppD03-May-20242.7 KiB7956

CGOpenCLRuntime.hD03-May-20241.5 KiB5625

CGOpenMPRuntime.cppD03-May-2024273.2 KiB6,5964,852

CGOpenMPRuntime.hD03-May-202448.5 KiB1,046405

CGOpenMPRuntimeNVPTX.cppD03-May-202414.7 KiB397256

CGOpenMPRuntimeNVPTX.hD03-May-20246.7 KiB18063

CGRecordLayout.hD03-May-20247.9 KiB22193

CGRecordLayoutBuilder.cppD03-May-202436.2 KiB861588

CGStmt.cppD03-May-202482.4 KiB2,2581,490

CGStmtOpenMP.cppD03-May-2024148.5 KiB3,6322,900

CGVTT.cppD03-May-20246.7 KiB179123

CGVTables.cppD03-May-202437.3 KiB984667

CGVTables.hD03-May-20244.3 KiB12056

CGValue.hD03-May-202418.6 KiB596380

CMakeLists.txtD03-May-20241.6 KiB9287

CodeGenABITypes.cppD03-May-20242.4 KiB6742

CodeGenAction.cppD03-May-202433.8 KiB879627

CodeGenFunction.cppD03-May-202474.8 KiB2,0101,349

CodeGenFunction.hD03-May-2024147.3 KiB3,5131,998

CodeGenModule.cppD03-May-2024162.4 KiB4,3143,001

CodeGenModule.hD03-May-202447.5 KiB1,267655

CodeGenPGO.cppD03-May-202430.5 KiB895651

CodeGenPGO.hD03-May-20244.5 KiB12675

CodeGenTBAA.cppD03-May-202411.2 KiB324214

CodeGenTBAA.hD03-May-20245.4 KiB15887

CodeGenTypeCache.hD03-May-20243 KiB10966

CodeGenTypes.cppD03-May-202427.5 KiB771506

CodeGenTypes.hD03-May-202414.7 KiB373211

CoverageMappingGen.cppD03-May-202439.7 KiB1,115798

CoverageMappingGen.hD03-May-20243.9 KiB11766

EHScopeStack.hD03-May-202414.5 KiB422194

ItaniumCXXABI.cppD03-May-2024147.6 KiB3,8782,405

MicrosoftCXXABI.cppD03-May-2024168.9 KiB4,1922,995

ModuleBuilder.cppD03-May-202410.7 KiB320218

ObjectFilePCHContainerOperations.cppD03-May-202412.1 KiB340257

README.txtD03-May-20241.8 KiB4835

SanitizerMetadata.cppD03-May-20243.9 KiB9669

SanitizerMetadata.hD03-May-20241.6 KiB5433

SwiftCallingConv.cppD03-May-202427.8 KiB831552

TargetInfo.cppD03-May-2024290.4 KiB8,0985,280

TargetInfo.hD03-May-20249.2 KiB22979

README.txt

1IRgen optimization opportunities.
2
3//===---------------------------------------------------------------------===//
4
5The common pattern of
6--
7short x; // or char, etc
8(x == 10)
9--
10generates an zext/sext of x which can easily be avoided.
11
12//===---------------------------------------------------------------------===//
13
14Bitfields accesses can be shifted to simplify masking and sign
15extension. For example, if the bitfield width is 8 and it is
16appropriately aligned then is is a lot shorter to just load the char
17directly.
18
19//===---------------------------------------------------------------------===//
20
21It may be worth avoiding creation of alloca's for formal arguments
22for the common situation where the argument is never written to or has
23its address taken. The idea would be to begin generating code by using
24the argument directly and if its address is taken or it is stored to
25then generate the alloca and patch up the existing code.
26
27In theory, the same optimization could be a win for block local
28variables as long as the declaration dominates all statements in the
29block.
30
31NOTE: The main case we care about this for is for -O0 -g compile time
32performance, and in that scenario we will need to emit the alloca
33anyway currently to emit proper debug info. So this is blocked by
34being able to emit debug information which refers to an LLVM
35temporary, not an alloca.
36
37//===---------------------------------------------------------------------===//
38
39We should try and avoid generating basic blocks which only contain
40jumps. At -O0, this penalizes us all the way from IRgen (malloc &
41instruction overhead), all the way down through code generation and
42assembly time.
43
44On 176.gcc:expr.ll, it looks like over 12% of basic blocks are just
45direct branches!
46
47//===---------------------------------------------------------------------===//
48