Skip to content

Commit 3966763

Browse files
authored
Merge branch 'main' into fix-phi-entry-deduplication
2 parents 650b53d + 424fa83 commit 3966763

File tree

16 files changed

+674
-33
lines changed

16 files changed

+674
-33
lines changed

clang/test/C/C2y/n3623.c

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
// RUN: %clang_cc1 -verify -std=c2y -DSTD1 %s
2+
// RUN: %clang_cc1 -verify -std=c2y -DSTD2 %s
3+
// RUN: %clang_cc1 -verify=gnu1 -std=gnu2y -DGNU1 %s
4+
// RUN: %clang_cc1 -verify -std=gnu2y -DGNU2 %s
5+
// RUN: %clang_cc1 -verify=gnu3 -std=gnu2y -DGNU3 %s
6+
// RUN: %clang_cc1 -verify -std=gnu2y -DGNU4 %s
7+
// RUN: %clang_cc1 -verify -std=gnu2y -DGNU5 %s
8+
// RUN: %clang_cc1 -verify -std=gnu2y -DGNU6 %s
9+
// RUN: %clang_cc1 -verify=gnu7 -std=gnu2y -DGNU7 %s
10+
// RUN: %clang_cc1 -triple x86_64-apple-darwin12 -verify -std=c2y -DDARWIN1 %s
11+
// RUN: %clang_cc1 -triple x86_64-pc-win32-mscv -verify -std=c2y -fms-compatibility -DMS1 %s
12+
// RUN: %clang_cc1 -triple x86_64-pc-win32-mscv -verify -std=c2y -fms-compatibility -DMS2 %s
13+
// RUN: %clang_cc1 -verify=invalid -std=c2y -DINVALID1 %s
14+
// RUN: %clang_cc1 -verify=invalid -std=c2y -DINVALID2 %s
15+
// expected-no-diagnostics
16+
17+
/* WG14 N3623: Yes
18+
* Earthly Demon XV: Definition of Main
19+
*
20+
* This validates that we accept the standard type definitions of main or some
21+
* other implementation-defined type.
22+
*/
23+
24+
typedef __WCHAR_TYPE__ wchar_t;
25+
26+
// These are the signatures required by the standard.
27+
#if defined(STD1)
28+
int main(void) {}
29+
#elif defined(STD2)
30+
int main(int argc, char *argv[]) {}
31+
#endif
32+
33+
// GNU extensions.
34+
#if defined(GNU1)
35+
void main(void) {} /* gnu1-warning {{return type of 'main' is not 'int'}}
36+
gnu1-note {{change return type to 'int'}}
37+
*/
38+
#elif defined(GNU2)
39+
const int main(void) {}
40+
#elif defined(GNU3)
41+
int main(...) {} /* gnu3-warning {{'main' is not allowed to be declared variadic}} */
42+
#elif defined(GNU4)
43+
int main(int, const char **) {}
44+
#elif defined(GNU5)
45+
int main(int, char const * const *) {}
46+
#elif defined(GNU6)
47+
int main(int, char * const *) {}
48+
#elif defined(GNU7)
49+
int main(int) {} /* gnu7-warning {{only one parameter on 'main' declaration}} */
50+
#endif
51+
52+
// Darwin extensions.
53+
#if defined(DARWIN1)
54+
int main(int argc, char *argv[], char *environ[], char **undocumented) {}
55+
#endif
56+
57+
// Microsoft extensions.
58+
#if defined(MS1)
59+
int wmain(int, wchar_t *[]) {}
60+
#elif defined(MS2)
61+
int wmain(int, wchar_t *[], wchar_t *[]) {}
62+
#endif
63+
64+
// Invalid signatures.
65+
#if defined(INVALID1)
66+
inline int main(int, char *[]); /* invalid-error {{'main' is not allowed to be declared inline}} */
67+
int main(int, char *[], char *[], float); /* invalid-error {{too many parameters (4) for 'main': must be 0, 2, or 3}} */
68+
float main(int); /* invalid-error {{'main' must return 'int'}} */
69+
_Noreturn int main(int, char *[]); /* invalid-warning {{'main' is not allowed to be declared _Noreturn}}
70+
invalid-note {{remove '_Noreturn'}}
71+
*/
72+
#elif defined(INVALID2)
73+
static int main(void); /* invalid-warning {{'main' should not be declared static}} */
74+
#endif

clang/www/c_status.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -339,7 +339,7 @@ <h2 id="c2y">C2y implementation status</h2>
339339
<tr>
340340
<td>Earthly Demon XV: Definition of Main</td>
341341
<td><a href="https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3623.pdf">N3623</a></td>
342-
<td class="unknown" align="center">Unknown</td>
342+
<td class="full" align="center">Yes</td>
343343
</tr>
344344
<tr>
345345
<td>static_assert without UB</td>

lldb/test/API/lang/cpp/floating-types-specialization/TestCppFloatingTypesSpecialization.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77

88
class TestCase(TestBase):
9+
@skipIf(compiler="clang", compiler_version=["<", "17.0"])
910
def test(self):
1011
self.build()
1112
lldbutil.run_to_source_breakpoint(

llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -587,10 +587,12 @@ bool DwarfExpression::addExpression(
587587
emitUnsigned(LeftShift);
588588
emitOp(dwarf::DW_OP_shl);
589589
}
590-
emitOp(dwarf::DW_OP_constu);
591-
emitUnsigned(RightShift);
592-
emitOp(OpNum == dwarf::DW_OP_LLVM_extract_bits_sext ? dwarf::DW_OP_shra
593-
: dwarf::DW_OP_shr);
590+
if (RightShift) {
591+
emitOp(dwarf::DW_OP_constu);
592+
emitUnsigned(RightShift);
593+
emitOp(OpNum == dwarf::DW_OP_LLVM_extract_bits_sext ? dwarf::DW_OP_shra
594+
: dwarf::DW_OP_shr);
595+
}
594596

595597
// The value is now at the top of the stack, so set the location to
596598
// implicit so that we get a stack_value at the end.

llvm/lib/Target/AMDGPU/SIISelLowering.cpp

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -103,52 +103,52 @@ SITargetLowering::SITargetLowering(const TargetMachine &TM,
103103
addRegisterClass(MVT::Untyped, V64RegClass);
104104

105105
addRegisterClass(MVT::v3i32, &AMDGPU::SGPR_96RegClass);
106-
addRegisterClass(MVT::v3f32, TRI->getVGPRClassForBitWidth(96));
106+
addRegisterClass(MVT::v3f32, &AMDGPU::VReg_96RegClass);
107107

108108
addRegisterClass(MVT::v2i64, &AMDGPU::SGPR_128RegClass);
109109
addRegisterClass(MVT::v2f64, &AMDGPU::SGPR_128RegClass);
110110

111111
addRegisterClass(MVT::v4i32, &AMDGPU::SGPR_128RegClass);
112-
addRegisterClass(MVT::v4f32, TRI->getVGPRClassForBitWidth(128));
112+
addRegisterClass(MVT::v4f32, &AMDGPU::VReg_128RegClass);
113113

114114
addRegisterClass(MVT::v5i32, &AMDGPU::SGPR_160RegClass);
115-
addRegisterClass(MVT::v5f32, TRI->getVGPRClassForBitWidth(160));
115+
addRegisterClass(MVT::v5f32, &AMDGPU::VReg_160RegClass);
116116

117117
addRegisterClass(MVT::v6i32, &AMDGPU::SGPR_192RegClass);
118-
addRegisterClass(MVT::v6f32, TRI->getVGPRClassForBitWidth(192));
118+
addRegisterClass(MVT::v6f32, &AMDGPU::VReg_192RegClass);
119119

120120
addRegisterClass(MVT::v3i64, &AMDGPU::SGPR_192RegClass);
121-
addRegisterClass(MVT::v3f64, TRI->getVGPRClassForBitWidth(192));
121+
addRegisterClass(MVT::v3f64, &AMDGPU::VReg_192RegClass);
122122

123123
addRegisterClass(MVT::v7i32, &AMDGPU::SGPR_224RegClass);
124-
addRegisterClass(MVT::v7f32, TRI->getVGPRClassForBitWidth(224));
124+
addRegisterClass(MVT::v7f32, &AMDGPU::VReg_224RegClass);
125125

126126
addRegisterClass(MVT::v8i32, &AMDGPU::SGPR_256RegClass);
127-
addRegisterClass(MVT::v8f32, TRI->getVGPRClassForBitWidth(256));
127+
addRegisterClass(MVT::v8f32, &AMDGPU::VReg_256RegClass);
128128

129129
addRegisterClass(MVT::v4i64, &AMDGPU::SGPR_256RegClass);
130-
addRegisterClass(MVT::v4f64, TRI->getVGPRClassForBitWidth(256));
130+
addRegisterClass(MVT::v4f64, &AMDGPU::VReg_256RegClass);
131131

132132
addRegisterClass(MVT::v9i32, &AMDGPU::SGPR_288RegClass);
133-
addRegisterClass(MVT::v9f32, TRI->getVGPRClassForBitWidth(288));
133+
addRegisterClass(MVT::v9f32, &AMDGPU::VReg_288RegClass);
134134

135135
addRegisterClass(MVT::v10i32, &AMDGPU::SGPR_320RegClass);
136-
addRegisterClass(MVT::v10f32, TRI->getVGPRClassForBitWidth(320));
136+
addRegisterClass(MVT::v10f32, &AMDGPU::VReg_320RegClass);
137137

138138
addRegisterClass(MVT::v11i32, &AMDGPU::SGPR_352RegClass);
139-
addRegisterClass(MVT::v11f32, TRI->getVGPRClassForBitWidth(352));
139+
addRegisterClass(MVT::v11f32, &AMDGPU::VReg_352RegClass);
140140

141141
addRegisterClass(MVT::v12i32, &AMDGPU::SGPR_384RegClass);
142-
addRegisterClass(MVT::v12f32, TRI->getVGPRClassForBitWidth(384));
142+
addRegisterClass(MVT::v12f32, &AMDGPU::VReg_384RegClass);
143143

144144
addRegisterClass(MVT::v16i32, &AMDGPU::SGPR_512RegClass);
145-
addRegisterClass(MVT::v16f32, TRI->getVGPRClassForBitWidth(512));
145+
addRegisterClass(MVT::v16f32, &AMDGPU::VReg_512RegClass);
146146

147147
addRegisterClass(MVT::v8i64, &AMDGPU::SGPR_512RegClass);
148-
addRegisterClass(MVT::v8f64, TRI->getVGPRClassForBitWidth(512));
148+
addRegisterClass(MVT::v8f64, &AMDGPU::VReg_512RegClass);
149149

150150
addRegisterClass(MVT::v16i64, &AMDGPU::SGPR_1024RegClass);
151-
addRegisterClass(MVT::v16f64, TRI->getVGPRClassForBitWidth(1024));
151+
addRegisterClass(MVT::v16f64, &AMDGPU::VReg_1024RegClass);
152152

153153
if (Subtarget->has16BitInsts()) {
154154
if (Subtarget->useRealTrue16Insts()) {
@@ -180,7 +180,7 @@ SITargetLowering::SITargetLowering(const TargetMachine &TM,
180180
}
181181

182182
addRegisterClass(MVT::v32i32, &AMDGPU::VReg_1024RegClass);
183-
addRegisterClass(MVT::v32f32, TRI->getVGPRClassForBitWidth(1024));
183+
addRegisterClass(MVT::v32f32, &AMDGPU::VReg_1024RegClass);
184184

185185
computeRegisterProperties(Subtarget->getRegisterInfo());
186186

llvm/lib/Target/ARM/ARMISelLowering.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
#include "llvm/CodeGen/CallingConvLower.h"
4343
#include "llvm/CodeGen/ComplexDeinterleavingPass.h"
4444
#include "llvm/CodeGen/ISDOpcodes.h"
45-
#include "llvm/CodeGen/IntrinsicLowering.h"
4645
#include "llvm/CodeGen/MachineBasicBlock.h"
4746
#include "llvm/CodeGen/MachineConstantPool.h"
4847
#include "llvm/CodeGen/MachineFrameInfo.h"

llvm/lib/Target/SPIRV/SPIRVLegalizePointerCast.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
#include "SPIRVSubtarget.h"
4747
#include "SPIRVTargetMachine.h"
4848
#include "SPIRVUtils.h"
49-
#include "llvm/CodeGen/IntrinsicLowering.h"
5049
#include "llvm/IR/IRBuilder.h"
5150
#include "llvm/IR/IntrinsicInst.h"
5251
#include "llvm/IR/Intrinsics.h"

llvm/lib/Target/SPIRV/SPIRVMergeRegionExitTargets.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
#include "llvm/ADT/DenseMap.h"
2020
#include "llvm/ADT/SmallPtrSet.h"
2121
#include "llvm/Analysis/LoopInfo.h"
22-
#include "llvm/CodeGen/IntrinsicLowering.h"
2322
#include "llvm/IR/Dominators.h"
2423
#include "llvm/IR/IRBuilder.h"
2524
#include "llvm/IR/Intrinsics.h"

llvm/lib/Target/SPIRV/SPIRVStripConvergentIntrinsics.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include "SPIRV.h"
1515
#include "SPIRVSubtarget.h"
1616
#include "SPIRVUtils.h"
17-
#include "llvm/CodeGen/IntrinsicLowering.h"
1817
#include "llvm/IR/IntrinsicInst.h"
1918
#include "llvm/IR/Intrinsics.h"
2019
#include "llvm/Transforms/Utils/Cloning.h"

llvm/lib/Target/SPIRV/SPIRVStructurizer.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
#include "llvm/ADT/DenseMap.h"
1717
#include "llvm/ADT/SmallPtrSet.h"
1818
#include "llvm/Analysis/LoopInfo.h"
19-
#include "llvm/CodeGen/IntrinsicLowering.h"
2019
#include "llvm/IR/CFG.h"
2120
#include "llvm/IR/Dominators.h"
2221
#include "llvm/IR/IRBuilder.h"

0 commit comments

Comments
 (0)