Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Glasgow Haskell Compiler
GHC
Commits
80602af0
Commit
80602af0
authored
Oct 10, 2015
by
Erik de Castro Lopo
Browse files
Revert "Switch to LLVM version 3.7"
Pushed by mistacke before it was ready. This reverts commit
5dc3db74
.
parent
5dc3db74
Changes
5
Hide whitespace changes
Inline
Side-by-side
compiler/llvmGen/Llvm/PpLlvm.hs
View file @
80602af0
...
...
@@ -117,7 +117,6 @@ ppLlvmMeta (MetaNamed n m)
-- | Print out an LLVM metadata value.
ppLlvmMetaExpr
::
MetaExpr
->
SDoc
ppLlvmMetaExpr
(
MetaVar
(
LMLitVar
(
LMNullLit
_
)))
=
text
"null"
ppLlvmMetaExpr
(
MetaStr
s
)
=
text
"!"
<>
doubleQuotes
(
ftext
s
)
ppLlvmMetaExpr
(
MetaNode
n
)
=
text
"!"
<>
int
n
ppLlvmMetaExpr
(
MetaVar
v
)
=
ppr
v
...
...
@@ -274,12 +273,17 @@ ppCall ct fptr args attrs = case fptr of
++
"local var of pointer function type."
where
ppCall'
(
LlvmFunctionDecl
_
_
cc
ret
_
_
_
)
=
ppCall'
(
LlvmFunctionDecl
_
_
cc
ret
argTy
params
_
)
=
let
tc
=
if
ct
==
TailCall
then
text
"tail "
else
empty
ppValues
=
hsep
$
punctuate
comma
$
map
ppCallMetaExpr
args
ppArgTy
=
(
ppCommaJoin
$
map
fst
params
)
<>
(
case
argTy
of
VarArgs
->
text
", ..."
FixedArgs
->
empty
)
fnty
=
space
<>
lparen
<>
ppArgTy
<>
rparen
<>
char
'*'
attrDoc
=
ppSpaceJoin
attrs
in
tc
<>
text
"call"
<+>
ppr
cc
<+>
ppr
ret
<+>
ppName
fptr
<>
lparen
<+>
ppValues
<>
fnty
<+>
ppName
fptr
<>
lparen
<+>
ppValues
<+>
rparen
<+>
attrDoc
-- Metadata needs to be marked as having the `metadata` type when used
...
...
@@ -358,11 +362,8 @@ ppCmpXChg addr old new s_ord f_ord =
-- of specifying alignment.
ppLoad
::
LlvmVar
->
SDoc
ppLoad
var
=
text
"load"
<+>
derefType
<+>
ppr
var
<>
align
ppLoad
var
=
text
"load"
<+>
ppr
var
<>
align
where
derefType
=
case
getVarType
var
of
LMPointer
x
->
ppr
x
<>
comma
_
->
empty
align
|
isVector
.
pLower
.
getVarType
$
var
=
text
", align 1"
|
otherwise
=
empty
...
...
@@ -372,10 +373,7 @@ ppALoad ord st var = sdocWithDynFlags $ \dflags ->
align
=
text
", align"
<+>
ppr
alignment
sThreaded
|
st
=
text
" singlethread"
|
otherwise
=
empty
derefType
=
case
getVarType
var
of
LMPointer
x
->
ppr
x
<>
comma
_
->
empty
in
text
"load atomic"
<+>
derefType
<+>
ppr
var
<>
sThreaded
<+>
ppSyncOrdering
ord
<>
align
in
text
"load atomic"
<+>
ppr
var
<>
sThreaded
<+>
ppSyncOrdering
ord
<>
align
ppStore
::
LlvmVar
->
LlvmVar
->
SDoc
ppStore
val
dst
...
...
@@ -411,10 +409,7 @@ ppGetElementPtr :: Bool -> LlvmVar -> [LlvmVar] -> SDoc
ppGetElementPtr
inb
ptr
idx
=
let
indexes
=
comma
<+>
ppCommaJoin
idx
inbound
=
if
inb
then
text
"inbounds"
else
empty
derefType
=
case
getVarType
ptr
of
LMPointer
x
->
ppr
x
<>
comma
_
->
error
"ppGetElementPtr"
in
text
"getelementptr"
<+>
inbound
<+>
derefType
<+>
ppr
ptr
<>
indexes
in
text
"getelementptr"
<+>
inbound
<+>
ppr
ptr
<>
indexes
ppReturn
::
Maybe
LlvmVar
->
SDoc
...
...
compiler/llvmGen/Llvm/Types.hs
View file @
80602af0
...
...
@@ -581,7 +581,6 @@ instance Outputable LlvmCallConvention where
ppr
CC_Ccc
=
text
"ccc"
ppr
CC_Fastcc
=
text
"fastcc"
ppr
CC_Coldcc
=
text
"coldcc"
ppr
(
CC_Ncc
10
)
=
text
"ghccc"
ppr
(
CC_Ncc
i
)
=
text
"cc "
<>
ppr
i
ppr
CC_X86_Stdcc
=
text
"x86_stdcallcc"
...
...
compiler/llvmGen/LlvmCodeGen.hs
View file @
80602af0
...
...
@@ -47,16 +47,21 @@ llvmCodeGen dflags h us cmm_stream
showPass
dflags
"LLVM CodeGen"
-- get llvm version, cache for later use
ver
<-
(
fromMaybe
supported
LlvmVersion
)
`
fmap
`
figureLlvmVersion
dflags
ver
<-
(
fromMaybe
default
LlvmVersion
)
`
fmap
`
figureLlvmVersion
dflags
writeIORef
(
llvmVersion
dflags
)
ver
-- warn if unsupported
debugTraceMsg
dflags
2
(
text
"Using LLVM version:"
<+>
text
(
show
ver
))
let
doWarn
=
wopt
Opt_WarnUnsupportedLlvmVersion
dflags
when
(
ver
/=
supportedLlvmVersion
&&
doWarn
)
$
putMsg
dflags
(
text
"You are using an unsupported version of LLVM!"
when
(
ver
<
minSupportLlvmVersion
&&
doWarn
)
$
errorMsg
dflags
(
text
"You are using an old version of LLVM that"
<>
text
" isn't supported anymore!"
$+$
text
"We will try though..."
)
when
(
ver
>
maxSupportLlvmVersion
&&
doWarn
)
$
putMsg
dflags
(
text
"You are using a new version of LLVM that"
<>
text
" hasn't been tested yet!"
$+$
text
"We will try though..."
)
-- run code generation
runLlvm
dflags
ver
bufh
us
$
...
...
compiler/llvmGen/LlvmCodeGen/Base.hs
View file @
80602af0
...
...
@@ -12,7 +12,8 @@ module LlvmCodeGen.Base (
LiveGlobalRegs
,
LlvmUnresData
,
LlvmData
,
UnresLabel
,
UnresStatic
,
LlvmVersion
,
supportedLlvmVersion
,
LlvmVersion
,
defaultLlvmVersion
,
minSupportLlvmVersion
,
maxSupportLlvmVersion
,
LlvmM
,
runLlvm
,
liftStream
,
withClearVars
,
varLookup
,
varInsert
,
...
...
@@ -173,9 +174,15 @@ llvmPtrBits dflags = widthInBits $ typeWidth $ gcWord dflags
-- | LLVM Version Number
type
LlvmVersion
=
Int
-- | The LLVM Version that is currently supported.
supportedLlvmVersion
::
LlvmVersion
supportedLlvmVersion
=
37
-- | The LLVM Version we assume if we don't know
defaultLlvmVersion
::
LlvmVersion
defaultLlvmVersion
=
36
minSupportLlvmVersion
::
LlvmVersion
minSupportLlvmVersion
=
36
maxSupportLlvmVersion
::
LlvmVersion
maxSupportLlvmVersion
=
36
-- ----------------------------------------------------------------------------
-- * Environment Handling
...
...
configure.ac
View file @
80602af0
...
...
@@ -553,7 +553,7 @@ esac
# tools we are looking for. In the past, GHC supported a number of
# versions of LLVM simultaneously, but that stopped working around
# 3.5/3.6 release of LLVM.
LlvmVersion=3.
7
LlvmVersion=3.
6
AC_SUBST([LlvmVersion])
dnl ** Which LLVM llc to use?
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment