Skip to content

Commit 26b92c8

Browse files
committed
clang format
1 parent 2366faa commit 26b92c8

File tree

2 files changed

+71
-77
lines changed

2 files changed

+71
-77
lines changed

clang/lib/CodeGen/CGBuiltin.cpp

Lines changed: 68 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@
3636
#include "llvm/Support/ConvertUTF.h"
3737
#include "llvm/Support/ScopedPrinter.h"
3838
#include <algorithm>
39+
#include <deque>
3940
#include <optional>
4041
#include <utility>
41-
#include <deque>
4242
#include <vector>
4343

4444
using namespace clang;
@@ -2597,7 +2597,6 @@ static RValue EmitHipStdParUnsupportedBuiltin(CodeGenFunction *CGF,
25972597

25982598
namespace {
25992599

2600-
26012600
// PaddingClearer is a utility class that clears padding bits in a
26022601
// c++ type. It traverses the type recursively, collecting occupied
26032602
// bit intervals, and then compute the padding intervals.
@@ -2698,7 +2697,7 @@ struct PaddingClearer {
26982697

26992698
Queue.push_back(
27002699
Data{StartBitOffset + ArrIndex * Offset.getQuantity() * CharWidth,
2701-
ElementQualType, /*VisitVirtualBase*/true});
2700+
ElementQualType, /*VisitVirtualBase*/ true});
27022701
}
27032702
}
27042703

@@ -2754,12 +2753,10 @@ struct PaddingClearer {
27542753
if (Field->isBitField()) {
27552754
llvm::dbgs() << "clear_padding found bit field. Adding Interval ["
27562755
<< StartBitOffset + FieldOffset << " , "
2757-
<< FieldOffset + Field->getBitWidthValue()
2758-
<< ")\n";
2759-
OccuppiedIntervals.push_back(
2760-
BitInterval{StartBitOffset + FieldOffset,
2761-
StartBitOffset + FieldOffset +
2762-
Field->getBitWidthValue()});
2756+
<< FieldOffset + Field->getBitWidthValue() << ")\n";
2757+
OccuppiedIntervals.push_back(BitInterval{
2758+
StartBitOffset + FieldOffset,
2759+
StartBitOffset + FieldOffset + Field->getBitWidthValue()});
27632760
} else {
27642761
Queue.push_back(Data{StartBitOffset + FieldOffset, Field->getType(),
27652762
/*VisitVirtualBase*/ true});
@@ -2831,75 +2828,72 @@ struct PaddingClearer {
28312828
return Results;
28322829
}
28332830

2831+
void ClearPadding(Value *Ptr, const BitInterval &PaddingInterval) {
2832+
auto *I8Ptr = CGF.Builder.CreateBitCast(Ptr, CGF.Int8PtrTy);
2833+
auto *Zero = ConstantInt::get(CGF.Int8Ty, 0);
28342834

2835+
// Calculate byte indices and bit positions
2836+
auto StartByte = PaddingInterval.First / CharWidth;
2837+
auto StartBit = PaddingInterval.First % CharWidth;
2838+
auto EndByte = PaddingInterval.Last / CharWidth;
2839+
auto EndBit = PaddingInterval.Last % CharWidth;
28352840

2836-
void ClearPadding(Value *Ptr, const BitInterval &PaddingInterval) {
2837-
auto *I8Ptr = CGF.Builder.CreateBitCast(Ptr, CGF.Int8PtrTy);
2838-
auto *Zero = ConstantInt::get(CGF.Int8Ty, 0);
2839-
2840-
// Calculate byte indices and bit positions
2841-
auto StartByte = PaddingInterval.First / CharWidth;
2842-
auto StartBit = PaddingInterval.First % CharWidth;
2843-
auto EndByte = PaddingInterval.Last / CharWidth;
2844-
auto EndBit = PaddingInterval.Last % CharWidth;
2845-
2846-
if (StartByte == EndByte) {
2847-
// Interval is within a single byte
2848-
auto *Index = ConstantInt::get(CGF.IntTy, StartByte);
2849-
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2850-
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2851-
2852-
auto *Value = CGF.Builder.CreateLoad(ElementAddr);
2853-
2854-
// Create mask to clear bits within the byte
2855-
uint8_t mask = ((1 << EndBit) - 1) & ~((1 << StartBit) - 1);
2856-
auto *MaskValue = ConstantInt::get(CGF.Int8Ty, mask);
2857-
auto *NewValue = CGF.Builder.CreateAnd(Value, MaskValue);
2858-
2859-
CGF.Builder.CreateStore(NewValue, ElementAddr);
2860-
} else {
2861-
// Handle the start byte
2862-
if (StartBit != 0) {
2863-
auto *Index = ConstantInt::get(CGF.IntTy, StartByte);
2864-
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2865-
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2866-
2867-
auto *Value = CGF.Builder.CreateLoad(ElementAddr);
2868-
2869-
uint8_t startMask = ((1 << (CharWidth - StartBit)) - 1) << StartBit;
2870-
auto *MaskValue = ConstantInt::get(CGF.Int8Ty, ~startMask);
2871-
auto *NewValue = CGF.Builder.CreateAnd(Value, MaskValue);
2872-
2873-
CGF.Builder.CreateStore(NewValue, ElementAddr);
2874-
++StartByte;
2875-
}
2876-
2877-
// Handle full bytes in the middle
2878-
for (auto Offset = StartByte; Offset < EndByte; ++Offset) {
2879-
auto *Index = ConstantInt::get(CGF.IntTy, Offset);
2880-
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2881-
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2882-
2883-
CGF.Builder.CreateStore(Zero, ElementAddr);
2884-
}
2885-
2886-
// Handle the end byte
2887-
if (EndBit != 0) {
2888-
auto *Index = ConstantInt::get(CGF.IntTy, EndByte);
2889-
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2890-
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2891-
2892-
auto *Value = CGF.Builder.CreateLoad(ElementAddr);
2893-
2894-
uint8_t endMask = (1 << EndBit) - 1;
2895-
auto *MaskValue = ConstantInt::get(CGF.Int8Ty, endMask);
2896-
auto *NewValue = CGF.Builder.CreateAnd(Value, MaskValue);
2897-
2898-
CGF.Builder.CreateStore(NewValue, ElementAddr);
2899-
}
2841+
if (StartByte == EndByte) {
2842+
// Interval is within a single byte
2843+
auto *Index = ConstantInt::get(CGF.IntTy, StartByte);
2844+
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2845+
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2846+
2847+
auto *Value = CGF.Builder.CreateLoad(ElementAddr);
2848+
2849+
// Create mask to clear bits within the byte
2850+
uint8_t mask = ((1 << EndBit) - 1) & ~((1 << StartBit) - 1);
2851+
auto *MaskValue = ConstantInt::get(CGF.Int8Ty, mask);
2852+
auto *NewValue = CGF.Builder.CreateAnd(Value, MaskValue);
2853+
2854+
CGF.Builder.CreateStore(NewValue, ElementAddr);
2855+
} else {
2856+
// Handle the start byte
2857+
if (StartBit != 0) {
2858+
auto *Index = ConstantInt::get(CGF.IntTy, StartByte);
2859+
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2860+
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2861+
2862+
auto *Value = CGF.Builder.CreateLoad(ElementAddr);
2863+
2864+
uint8_t startMask = ((1 << (CharWidth - StartBit)) - 1) << StartBit;
2865+
auto *MaskValue = ConstantInt::get(CGF.Int8Ty, ~startMask);
2866+
auto *NewValue = CGF.Builder.CreateAnd(Value, MaskValue);
2867+
2868+
CGF.Builder.CreateStore(NewValue, ElementAddr);
2869+
++StartByte;
2870+
}
2871+
2872+
// Handle full bytes in the middle
2873+
for (auto Offset = StartByte; Offset < EndByte; ++Offset) {
2874+
auto *Index = ConstantInt::get(CGF.IntTy, Offset);
2875+
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2876+
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2877+
2878+
CGF.Builder.CreateStore(Zero, ElementAddr);
29002879
}
2901-
}
29022880

2881+
// Handle the end byte
2882+
if (EndBit != 0) {
2883+
auto *Index = ConstantInt::get(CGF.IntTy, EndByte);
2884+
auto *Element = CGF.Builder.CreateGEP(CGF.Int8Ty, I8Ptr, Index);
2885+
Address ElementAddr(Element, CGF.Int8Ty, CharUnits::One());
2886+
2887+
auto *Value = CGF.Builder.CreateLoad(ElementAddr);
2888+
2889+
uint8_t endMask = (1 << EndBit) - 1;
2890+
auto *MaskValue = ConstantInt::get(CGF.Int8Ty, endMask);
2891+
auto *NewValue = CGF.Builder.CreateAnd(Value, MaskValue);
2892+
2893+
CGF.Builder.CreateStore(NewValue, ElementAddr);
2894+
}
2895+
}
2896+
}
29032897

29042898
CodeGenFunction &CGF;
29052899
const uint64_t CharWidth;

libcxx/test/libcxx/atomics/builtin_clear_padding.pass.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ void __builtin_clear_padding2(T t) {
3333
(void)t;
3434
}
3535

36-
void assert2(bool b){
36+
void assert2(bool b) {
3737
//assert(b);
3838
(void)b;
3939
}
@@ -307,8 +307,8 @@ void primitiveTests() {
307307

308308
memset(&c1, 42, sizeof(_Complex long double));
309309
memset(&c2, 0, sizeof(_Complex long double));
310-
c1 = 3.0L ;
311-
c1 = 3.0L ;
310+
c1 = 3.0L;
311+
c1 = 3.0L;
312312
__builtin_clear_padding2(&c1);
313313
//TODO
314314
}

0 commit comments

Comments
 (0)