]> granicus.if.org Git - clang/commit
MS Compat: mark globals emitted in read-only sections const
authorHans Wennborg <hans@hanshq.net>
Thu, 16 Oct 2014 20:52:46 +0000 (20:52 +0000)
committerHans Wennborg <hans@hanshq.net>
Thu, 16 Oct 2014 20:52:46 +0000 (20:52 +0000)
commit1bd711969ce910a6e63f24f617ce87b02afd448a
tree225f0492cb5749ec945986433c81e57ef98cd2f7
parent276271694b73010c36631677b7340bdbf80dfea6
MS Compat: mark globals emitted in read-only sections const

They cannot be written to, so marking them const makes sense and may improve
optimisation.

As a side-effect, SectionInfos has to be moved from Sema to ASTContext.

It also fixes this problem, that occurs when compiling ATL:

  warning LNK4254: section 'ATL' (C0000040) merged into '.rdata' (40000040) with different attributes

The ATL headers are putting variables in a special section that's marked
read-only. However, Clang currently can't model that read-onlyness in the IR.
But, by making the variables const, the section does become read-only, and
the linker warning is avoided.

Differential Revision: http://reviews.llvm.org/D5812

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@219960 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/ASTContext.h
include/clang/Sema/Sema.h
lib/CodeGen/CodeGenModule.cpp
lib/Parse/ParsePragma.cpp
lib/Sema/SemaAttr.cpp
lib/Sema/SemaDecl.cpp
test/CodeGen/sections.c