{"push_id":899943079,"size":1,"distinct_size":1,"ref":"refs/heads/master","head":"c48a21006a5934324c112289162de7b66035ecda","before":"6190499c1582bfdcaf8978703035b7956168d8a9","commits":[{"sha":"c48a21006a5934324c112289162de7b66035ecda","author":{"email":"0a33c1e36d076167665bd200010abec955a039ad@gmail.com","name":"Manman Ren"},"message":"CXX_FAST_TLS calling convention: target independent portion.\n\nThe access function has a short entry and a short exit, the initialization\nblock is only run the first time. To improve the performance, we want to\nhave a short frame at the entry and exit.\n\nWe explicitly handle most of the CSRs via copies. Only the CSRs that are not\nhandled via copies will be in CSR_SaveList.\n\nFrame lowering and prologue/epilogue insertion will generate a short frame\nin the entry and exit according to CSR_SaveList. The majority of the CSRs will\nbe handled by register allcoator. Register allocator will try to spill and\nreload them in the initialization block.\n\nWe add CSRsViaCopy, it will be explicitly handled during lowering.\n\n1> we first set FunctionLoweringInfo->SplitCSR if conditions are met (the target\n   supports it for the given calling convention and the function has only return\n   exits). We also call TLI->initializeSplitCSR to perform initialization.\n2> we call TLI->insertCopiesSplitCSR to insert copies from CSRsViaCopy to\n   virtual registers at beginning of the entry block and copies from virtual\n   registers to CSRsViaCopy at beginning of the exit blocks.\n3> we also need to make sure the explicit copies will not be eliminated.\n\nrdar://problem/23557469\n\nDifferential Revision: http://reviews.llvm.org/D15340","distinct":true,"url":"https://api.github.com/repos/llvm-project/llvm-project/commits/c48a21006a5934324c112289162de7b66035ecda"}]}